812 users on 1.4.2 got the 1.5.0 js bundle overnight, how do i unship an update ota-update
I was cleaning up branches and repointed a channel. I understand now what that did.
812 installs of 1.4.2 are currently running JS from 1.5.0, which expects a native module that is not in their binary. Crash rate went from basically nothing to about 1 in 4 sessions. Diagram of the mapping at the moment it happened attached.
What is the fastest correct thing to do right now, and then what stops this from being possible next time?
@treadmill_tara · 2d ago · 3 replies
Roll back first, understand second.
eas update:rollbackon the affected branch, or republish the last known-good update onto it. Either way the fix ships as an update, which means it reaches clients as fast as they check - minutes, not a store review. Do that before you read the rest of this.Then
eas channel:view productionto confirm what it actually points at now, and fix the mapping.The structural fix is the runtime version. Both of your builds carried the same one, which is exactly why the 1.5.0 bundle was considered compatible with a 1.4.2 binary - the system checked, and you told it they matched. Move to the fingerprint policy, which hashes the native side so any native change automatically produces a different runtime version. Then a mismatched update is simply not offered to that client and this specific mistake becomes impossible rather than merely unlikely.
Reply
Report
@stack_trace_sy · 3h ago
Fingerprint is the whole answer long term. Maintaining a runtime version by hand means the safety mechanism only works when the person doing the release remembers it exists, which is the same as it not working.
Reply
Report
@bench_dogged · 3h ago
Set expectations on the graph: clients pick up the rollback on their next check, so crashes taper rather than stop. Do not panic-ship three more updates in ten minutes because the line has not moved yet - that is how a bad hour becomes a bad day.
Reply
Report