A native build only when the native code changes.
Keep every EAS build
devhub sync downloads each dev client build before EAS deletes it. A daily sync keeps the builds of all your projects.
Match by fingerprint
devhub match runs the @expo/fingerprint of your project. A stored build with the same hash runs your code, so you do not build again.
Install in one command
devhub install puts a stored build on an emulator, an Android phone, or an iOS simulator. When adb refuses, DevHub tells you why and how to fix it.
Local builds too
As the Expo build cache provider, DevHub stores each npx expo run build, and installs it again when the native code did not change.
A page for all of it
devhub ui shows your builds and devices in the browser, with an install button and a sync button. It listens on 127.0.0.1 only.
Made for scripts and agents
Each command has --json and clear exit codes. llms.txt gives an AI agent the exact API of the installed version.
Three commands. No new build.
Sync
Download the dev client builds of your project from EAS, before EAS deletes them.
devhub syncMatch
Calculate the native fingerprint of your code, and find the stored builds that run it.
devhub matchInstall
Install the build on an emulator, a phone, or a simulator. Then start Metro.
devhub install 5d1cKeep your local builds too.
Add DevHub as the Expo build cache provider. Each npx expo run:android or run:ios stores its build. The next run with the same native code installs the stored build, and Gradle or Xcode does not run.
{
"expo": {
"buildCacheProvider": {
"plugin": "@rootnative/devhub/cache-provider"
}
}
}Stop building the same app.
Install the CLI, run one sync, and keep each dev build from now on.