Edit this page
Learn how to use the fingerprint runtime version and GitHub actions for continuous deployment.
EXPO_TOKEN
environment variable on your GitHub repositoryAvailable for SDK 52 and above.
Expo provides the continuous-deploy-fingerprint GitHub Action to continuously deploy React Native projects that use the fingerprint
runtime version policy. It deploys every JS change as an EAS Update to all compatible builds over-the-air, and new builds are automatically created using EAS Build when a runtime change is detected.
Running your GitHub workflows in debug mode will automatically add the --debug
flag to the commands run as part of the action, and the output will be available in the workflow run logs.
The fingerprint
runtime version policy uses the @expo/fingerprint
package to generate a hash of your project when making a build or publishing an update, and then uses that hash as the runtime version. The hash is calculated based on dependencies, custom native code, native project files, and configuration, amongst other things.
By automatically calculating the runtime version, you don't have to be concerned about native layer compatibility with the JavaScript application when deploying updates to builds.
The default project files included in the fingerprint hash differs between managed and bare workflow projects. EAS automatically detects your workflow by checking if the android and ios and directories are gitignored. If they are, EAS will treat the project as a managed workflow project, thus dictating that a hash of the package.json
dependencies are sufficient to determine fingerprint compatibility.
If you notice different fingerprints being generated across different machines or environments, it may mean that unanticipated files are being included in the hash calculation. @expo/fingerprint
has a predetermined set of files to include/exclude for hash calculation, but often your project setup may require additional excludes. For projects that include native directories (android and ios) this is more common.
We provide tools for identifying which files are causing fingerprint inconsistencies and mechanisms to exclude those files from fingerprint calculations for your project.
To identify differences in fingerprints on different machines or environments:
npx expo-updates fingerprint:generate
), pass --debug
flag.To exclude files causing the differences, add them to the .fingerprintignore file as described in the documentation for @expo/fingerprint
.
When using continuous deployment, version number incrementation must be done automatically. While the specifics will differ based on the preferred numbering scheme, the general strategy is:
An example is provided in the continuous-deploy-fingerprint
GitHub Action documentation.
An alternative GitHub action is expo-github-action that can be used to publish updates on push and previews on pull requests. continuous-deploy-fingerprint
uses fingerprints to determine if a build is needed or not to deploy an update, while expo-github-action
will only publish updates.
expo-github-action
, refer to the GitHub PR Previews guide.