Builds / Remote builds
Fingerprinting
Skip unnecessary native rebuilds for Expo and React Native apps
Fingerprinting makes Expo and React Native remote builds faster. When your native code has not changed, Revyl can reuse an earlier app build and update the JavaScript instead of rebuilding the whole app.
How it works
Revyl uses @expo/fingerprint to calculate a fingerprint from the parts of
your project that affect the native app. It runs the selected profile's
setup_commands first, then calculates the fingerprint. If Revyl finds a
compatible build with the same fingerprint, it uses the installed Expo or React
Native tooling to repack the app. If fingerprinting or repacking is unavailable,
it runs the selected profile's build_commands normally.
Revyl looks across every branch of the same app for the newest compatible
build. The native fingerprint, platform artifact type, and build profile recipe
must match. For example, a build on base can seed a repack on wip when its
native code and recipe are unchanged. The repacked build belongs to wip and
contains that branch's JavaScript.
On the build page, the first build step shows Fingerprint match when Revyl reused an earlier build, or New fingerprint when it ran your build commands. Build commands skipped by a match show as Reused, and the build details link to the build whose native app was reused.
You can customize what goes into the fingerprint with .fingerprintignore or
fingerprint.config.js. See the
Expo fingerprint documentation
for the available options.
Enable fingerprinting
Set REVYL_USE_FINGERPRINT on each profile recipe where you want to use it:
build:
framework: expo
profiles:
development:
ios:
build_commands: ["./scripts/build-ios"]
env:
REVYL_USE_FINGERPRINT: "1"
android:
build_commands: ["./scripts/build-android"]
env:
REVYL_USE_FINGERPRINT: "1"Fingerprinting for bare React Native apps is experimental. It may not work for every project yet, and reused builds are not guaranteed to behave as expected. If you run into any issues, please contact support@revyl.ai.