If you've shipped a React Native (or any mobile) app on git-flow, you know the tax. develop, release/x.y.z, a hotfix branch nobody remembers to merge back, a changelog someone writes by hand at 6pm the night before submission, and a release manager whose entire job is keeping four branches from drifting apart. It works. It's also slow, and slowness compounds — every extra day between "code written" and "code in front of a user" is a day a bug sits undiscovered.
We moved our React Native app to trunk-based development. Everything lives on main. There's no develop, no long-lived release branch, no merge-back ceremony. And counterintuitively, it's safer than git-flow was — not despite skipping the release branches, but because we replaced "a human remembers to be careful" with a machine that actually checks.
The one idea that makes this work
Mobile has a problem web doesn't: most of your code can update instantly over-the-air, but some of it is physically baked into a binary sitting in the App Store, and there is no way to OTA your way out of that. So the whole system rests on one question, asked by machine, not by a human's judgment call:
Does this code produce the same native fingerprint as what's already in the store?







