Getting started

Add an item to your app

Your app must be an Expo app on the same Expo, React Native and React versions as the Galvo repository; each item records them under requires in items/<id>/item.json.

Run tools/galvo.mjs from your app's folder. It needs Node.js 22 or later and no dependencies. In the commands, path/to/galvo stands for the path to the Galvo repository and confetti-burst for the item's folder name in items/.

  • See the app's platform, package manager and items
    node path/to/galvo/tools/galvo.mjs inspect .
  • See what adding the item would change
    node path/to/galvo/tools/galvo.mjs plan confetti-burst .
  • Add it: copy the files, update package.json and install
    node path/to/galvo/tools/galvo.mjs add confetti-burst .
  • Check the files, versions and setup
    node path/to/galvo/tools/galvo.mjs doctor .
  • add stops, changing nothing, when the app's Expo, React Native or React version does not match, when a dependency is already pinned to another version, or when a file under galvo/ differs from the item's (an edit of yours).
  • It records the files it writes in galvo/.galvo-items.json, so a later add of a newer item updates the files you have not changed and stops on the ones you have.
  • It lists the setup steps it cannot make itself, such as config plugins, as "to do"; doctor shows them as "found" once they are in place.

Add --json to a command for machine-readable output.

Add an item by hand

  1. Copy items/<id>/galvo/ to the root of your app. Items share galvo/lib/ and galvo/assets/; a file that is already there is the same file, so keep one copy.
  2. Install the versions listed in item.json (dependencies, setupDependencies and setupDevDependencies). For React Native Skia, copy the tarball named in vendored into your app's vendor/ folder and install it from there, and add @shopify/react-native-skia to expo.install.exclude in package.json.
  3. Apply each step in setup.
  4. Add a route that renders example.tsx from the item's folder; the item's README shows one.

Ask an AI coding tool

Paste this into an AI coding tool opened in your app, filling in the Galvo repository's path and the item:

Add the Galvo item <id> from the Galvo repository at <path> to this app. First read <path>/AGENTS.md and <path>/items/<id>/README.md. Run node <path>/tools/galvo.mjs plan <id> . and show me the plan; if it stops, tell me why and do not work around it (never upgrade or downgrade the app's platform, change a pinned version or overwrite a file). Otherwise run node <path>/tools/galvo.mjs add <id> ., make each setup step it lists as "to do", add a route that renders the item's example.tsx, run node <path>/tools/galvo.mjs doctor . and the TypeScript check, and tell me every file you changed.

Publishing an app

A published app also contains the npm packages and native libraries its build compiles in. Include their open-source notices in the app; a build-time tool such as react-native-legal generates them.

PreviousDocumentation