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 .
addstops, 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 undergalvo/differs from the item's (an edit of yours).- It records the files it writes in
galvo/.galvo-items.json, so a lateraddof 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";
doctorshows them as "found" once they are in place.
Add --json to a command for machine-readable output.
Add an item by hand
- Copy
items/<id>/galvo/to the root of your app. Items sharegalvo/lib/andgalvo/assets/; a file that is already there is the same file, so keep one copy. - Install the versions listed in
item.json(dependencies,setupDependenciesandsetupDevDependencies). For React Native Skia, copy the tarball named invendoredinto your app'svendor/folder and install it from there, and add@shopify/react-native-skiatoexpo.install.excludeinpackage.json. - Apply each step in
setup. - Add a route that renders
example.tsxfrom 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.