A whiteboard for React Native
Real drawing on iOS and Android: Apple Pencil pressure, palm rejection, an infinite canvas, and the full Quickdraw toolset — wrapped in one component with a typed bridge. Works in Expo, works offline.
The whole integration
npm install @quickdrawjs/react-native react-native-webview
import { Quickdraw } from '@quickdrawjs/react-native'
<Quickdraw
ref={board}
theme="dark"
onChange={(diff) => sync(diff)}
style={{ flex: 1 }}
/>
// snapshots and exports cross the bridge as promises
const snapshot = await board.current.getSnapshot()
const png = await board.current.exportPng({ scale: 2 }) How it works
The package embeds the Quickdraw engine as a single self-contained HTML string rendered in a WebView — no server, no network fetch, nothing to cache. A typed message bridge carries props in and events out, so from your app's side it behaves like any other component: props, callbacks, and a ref with async methods.
Pencil input arrives with pressure, and palm rejection kicks in the
moment a stylus is seen: fingers pan and pinch the camera while the pen
draws. Boards serialize to plain JSON snapshots you can store with the
rest of your app data, and exportPng() returns a data URL
ready for sharing sheets.
What's in the box
- Pen with pressure, highlighter, eraser, laser pointer
- Shapes, arrows with draggable bend, text, sticky notes, images
- Infinite canvas with pinch zoom and zoom-to-fit
- Per-gesture undo/redo, light and dark themes, ruled and dotted grids
- JSON snapshots, live diffs for sync, PNG export
More: documentation · React Native tutorial · React whiteboard · tldraw alternative