mobile-ink
Production-grade React Native ink engine with native Skia/Metal drawing and continuous canvas primitives.
A high-performance native drawing engine for React Native apps that need smooth, infinite handwriting or sketching surfaces.
Mobile Ink is a drawing engine for React Native mobile apps, extracted from the MathNotes note-taking app and released as an open-source library. It solves a specific hard problem: building a high-performance, infinite-scrolling handwriting surface on iOS and Android that handles Apple Pencil input, pressure sensitivity, zoom, momentum scrolling, and long notebooks without freezing the app.
The library provides a set of building blocks. At the core is a native drawing canvas backed by Skia (a graphics library) and Metal (Apple's GPU rendering system), which keeps drawing fast at the hardware level rather than relying on JavaScript. A continuous engine pool manages a fixed set of native canvas instances and swaps them in and out as you scroll through a long notebook, avoiding the memory cost of creating one canvas per page. On top of these primitives sits a ready-made infinite notebook component that handles page creation, serialization (saving strokes as JSON), zoom, and background types like grid or ruled lines.
You would use this if you are building a React Native app that needs serious handwriting or drawing support, such as a note-taking app, a whiteboard, or a math editor, and you do not want to rebuild the tricky native rendering stack yourself. It currently runs in production in the MathNotes iOS app. The stack is C++ at the drawing engine level, with React Native and TypeScript for the JavaScript interface. Both iOS and Android are supported. The full README is longer than what was provided.
Where it fits
- Add handwriting or Apple Pencil support to a React Native note-taking app.
- Build an infinite-scrolling whiteboard or math editor without writing native rendering code.
- Reuse the same production drawing engine that powers the MathNotes iOS app.
- Handle long, multi-page notebooks without the memory cost of one canvas per page.