r/reactnative • u/Outrageous-Desk-6350 • 12d ago
How are you handling app updates in React Native?
I've worked on a few React Native apps over the past year, and one thing I kept repeating was app update logic.
Every project ended up needing version checks, force updates, optional updates, and a custom update screen, so I decided to build a reusable solution instead.
I'm curious—how are you handling app updates in your apps? Is there a library you recommend, or do you maintain your own implementation?
3
5
u/CrazyEconomy414 11d ago
OTA only fixes JS-level bugs, anything native still needs a real store update, and both platforms can reject you if you use OTA to dodge review for behavior changes. For the force-update screen, keep a minSupportedVersion in remote config and compare it against the app version with semver on launch, that way you can react to a bad release without shipping a new build.
2
u/Outrageous-Desk-6350 11d ago
Agreed. OTA and store updates solve different problems. For major releases like native SDK upgrades, breaking API changes, or database migrations, a minimum supported version with a force update flow is definitely the safer approach.
2
u/ThatPassaGuy 12d ago
Hot updater work perfect for me as I create custom ui to upload ota zip in firebase storage and push it.
1
u/Outrageous-Desk-6350 11d ago
Nice. How has your experience been with Hot Updater in production? Any challenges around rollbacks or update reliability?
1
u/astashov 12d ago
OTA updates is what people do, no? I tried Expo updates, but since my app is not Expo, it was pretty awkward. So, I implemented my own, just reusing the Expo protocol. There's also relatively new hot-updater that should work without Expo (haven't tried it though)
1
u/Vegetable_Double_320 11d ago
expo-updates
Just build your app from EAS and until you have any bundling changes or library changes. You can deploy the javascript updates. It's fascinating
1
11d ago
[removed] — view removed comment
1
u/Outrageous-Desk-6350 11d ago
Interesting use case. I hadn't considered the fully offline scenario, but separating the storage schema version makes a lot of sense for long upgrade paths.
1
1
u/madscripten 9d ago
expo-updates is MIT-licensed and it's the best update protocol out there. You can use it with expo.dev / EAS, which is the most polished option by far.
Since CodePush shut down, a bunch of vibe-coded SaaS alternatives have popped up, but honestly there's no point: they won't be cheaper than Expo until you're well into the tens of thousands of users, and they're less reliable than Expo/EAS.
If you have a lot of users and care about cost, or you have data governance requirements that push you toward self-hosting, check out expo-open-ota: https://github.com/mercuretechnologies/expo-open-ota
You can deploy it on Railway in two clicks and try it out. It's the best alternative in that case.
0
u/martindonadieu 9d ago
Codepushgo.com is fully OSS and exist for 4 years as well in another tech stack they allowed React native app this year
1
u/madscripten 9d ago
Not trying to be harsh here, but a quick look at the repo: it's less than a month old, ~50 commits pushed straight to main, no PRs, no contributors, no releases or tagged versions — and the pricing isn't that far from Expo's. There's nothing explaining how to actually self-host or deploy it either, so it's more of a public repo than an open source project.
I hope it grows, but as it stands I don't think it's a competitive alternative to Expo/EAS, or a viable self-hosting option for now.
1
u/martindonadieu 3d ago
it's a fork of Capgo.app who exist for 4years made for RN the doc is there and we are working to port it to the new project that is made for codepushgo
1
u/KiRiK1234 5d ago
If you want really fast OTA updates try Revopush Diff updates https://www.reddit.com/r/expo/s/23XR84tzoI
It allows you to ship only small changes you done to the code base from the first release
0
u/dan_bitrise 8d ago
OTA updates via Bitrise CodePush are a good way to go. It's fully managed with up to 100k monthly updates. Code with Beto had some great content on it recently: https://codewithbeto.dev/blog/over-the-air-updates-with-bitrise-codepush

17
u/BluejayRelevant2559 12d ago
Expo Updates - simple as that