The example is an Expo 57 development-build project. It does not depend on the native modules bundled with Expo Go.
From the repository root:
bun install
bun run example:ios
# or
bun run example:androidExpo generates the native project, builds it, installs it on the selected
simulator or device, and starts Metro. The generated example/ios and
example/android directories are ignored because Expo can recreate them from
the checked-in app configuration.
After the client is installed, start Metro without rebuilding:
bun run exampleAdd -- --tunnel when the device cannot reach the development machine over the
local network. Its QR opens only in a matching installed development client.
An Expo account owner must link the example before the first cloud build:
cd example
bunx eas-cli@latest login
bunx eas-cli@latest initDo not commit a fabricated Expo project ID. eas init writes the real owner and
project identity.
Build an internally distributable client:
bunx eas-cli@latest build --profile development --platform android
bunx eas-cli@latest build --profile development --platform iosFor an iOS simulator artifact:
bunx eas-cli@latest build \
--profile development-simulator \
--platform iosAndroid internal builds can be shared as installable APKs. Physical iOS builds still require Apple signing and registered devices; use the simulator profile for a shareable simulator build.
Build the Expo web export from the repository root:
bun install --frozen-lockfile --minimum-release-age 0
bun run example:export:webThe deployable directory is example/dist. It is a static CanvasKit site;
no Worker runtime is required.
Connect the repository to Pages and use:
- Build command:
bun install --frozen-lockfile --minimum-release-age 0 && bun run example:export:web - Build output directory:
example/dist - Root directory: repository root
The same output can be uploaded with Wrangler if the project is managed from CI. A Worker is only useful later if the gallery gains saved/shareable chart configurations or another server-side feature.
The repository includes
.github/workflows/demo.yml. Enable GitHub Pages with
GitHub Actions as its source, then run the workflow manually. It builds the
same static export and deploys it as the Pages artifact. The workflow sets
EXPO_BASE_URL from the repository name so Metro's scripts and assets resolve
under a project Pages URL such as /react-native-dither-kit.
The web URL is the permanent public demo. The native development client is for contributors and testers who install its matching binary.