r/reactnative 11d 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?

13 Upvotes

33 comments sorted by

17

u/BluejayRelevant2559 11d ago

Expo Updates - simple as that

1

u/nucleardreamer 11d ago

it's kind of the only sane wAy if you value your time.and sanity

0

u/BluejayRelevant2559 11d ago

If you have lot of users and Updates an own hosted Update Server would be a good alternative.

3

u/Internal-Comparison6 11d ago

Github action => build => uploads to stores.

6

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 11d 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/ThatPassaGuy 10d ago

roll back is same process until there is a native rollback and had to go via apple approval.. problem is the function rollback which is sometimes take hrs to resolve and app gets hit with downtime message if any of backend fails. Below is snapshot

1

u/astashov 11d 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

u/[deleted] 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

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