EAS Update OTA Strategy
Channels, branches, rollouts, rollback strategy, and enterprise OTA operations.
Key takeaways
- SDK 56 enables Hermes bytecode diffing by default, so clients download binary patches instead of full OTA bundles.
- Map production, staging, and preview channels to matching branches, and pair
--rollout-percentagewith EAS Observe gates from 1% to 100%. - Use
update:rollbackto return to the embedded binary andupdate:republishto restore a healthy previous update. - Set
runtimeVersion.policytofingerprintso native changes force a new build instead of shipping an incompatible OTA.
Hermes Bytecode Diffing by Default
In SDK 56, Hermes bytecode diffing in expo-updates and EAS Update is the default. Clients can
download binary patches instead of full bundles, reducing OTA payload size.
{
"expo": {
"updates": {
"enableBsdiffPatchSupport": false
}
}
}Use that opt-out only for debugging. Normal production should keep the default and monitor payload size, bundle load time, and startup regression in EAS Observe.
Release Commands
eas update --environment production --branch production
eas update --environment preview --branch preview --message "QA candidate"
eas update --rollout-percentage 10 --branch production--environment applies EAS environment variables during update export. Keep production and preview
API values separated because EXPO_PUBLIC_* can be inlined into the client bundle.
Channel and Branch Strategy
Rollback Strategy
eas update:rollback --branch production
eas update:republish --group <update-group-id> --branch production
eas update:edit| Method | Use when |
|---|---|
| republish a previous update | JS or asset bug and the previous update is healthy |
| embedded update rollback | stop all OTA updates for the runtime and return to the bundle shipped in the binary |
Runtime Version Policy
Do not let native compatibility depend on human memory. SDK upgrades, native module additions, config plugin changes, and permission changes usually need a new binary.
{
"expo": {
"runtimeVersion": {
"policy": "fingerprint"
}
}
}Fingerprint policy reduces incompatible update risk, at the cost of requiring new builds more often.
Rollout Gate
| Stage | Gate |
|---|---|
| 1% | internal dogfood, crash-free sessions at 99.5%+ |
| 10% | EAS Observe cold launch and TTI P95 no more than 10% worse |
| 50% | support ticket and backend error rate normal |
| 100% | release note, store metadata, and rollback point recorded |
During rollout, avoid overwriting the same runtime with a new update before checking eas update:list
and eas update:view.