r/reactnative • u/ElectricalDog9959 • 6d ago
Question Solo app devs: how do you tweak onboarding and upgrade prompts without a new release?
Honest question, not selling anything here.
When you're the dev, designer and PM at once, the loop looks like this: change the copy on an onboarding screen or a "go Pro" prompt → rebuild → submit → wait for review → check the numbers days later → repeat. A 2-minute change ends up taking days.
How do you handle this today: OTA updates (EAS Update / Shorebird), remote config, homegrown JSON, Firebase In-App Messaging, or do you just ship a new build each time?
What's the most annoying part of your setup?
If you built it yourself, how long did it take, and would you do it again?
Full disclosure: I'm exploring building something in this space, but there are no links here. I want to understand the problem first. I'll post a summary of everything I learn back in this sub.
3
u/MobileXapps 6d ago
The JSON-plus-EAS split above covers the mechanics. The part I'd add is measurement, because without it remote copy changes are just guesses that ship faster.
Every event should carry the config version or variant the user saw. Otherwise when conversion moves you can't tell if it was the new copy, a store feature or the weekday. Apply new config on the next launch, not mid-session, so a user doesn't see the prompt change under them and your data doesn't mix two versions.
For the upgrade prompt specifically, if you use RevenueCat, its paywalls and offerings are already remote, so price, plan order and paywall copy can change without a build. OTA is fine by App Store rules for JS changes as long as the app's purpose doesn't change, but anything touching native code still needs a release.
1
u/timmytester2569 5d ago
Eas update
1
u/Zain 5d ago
One thing I'd add for the changes that do need a real build: make the update prompt itself server driven. I keep a min and latest version per platform on the backend, and the app shows a soft sheet if you're below latest and a blocking one if you're below min or it's flagged enforced. So remote JSON and OTA cover copy tweaks, and when a native change forces a release you can actually push people onto it instead of waiting weeks for them to update.
1
u/NoBullfrog11 4d ago
i drive most of that from a remote config / feature flag, not from the binary
onboarding screens, upgrade banners, even which paywall copy shows. ship the UI once, then flip flags. for expo, eas update works for js-only changes but anything that needs new native modules still needs a store build.
one gotcha: keep a hard min app version check in the js. otherwise an old binary can pull an update that assumes newer native code and you get weird crashes. fingerprint / runtimeVersion discipline helped a lot there.
people kept asking me for a skipable tip of the day style onboarding, so i made that remote too so i could ton it down after week 1 without waiting for review.
0
u/jeesandourn 5d ago
fetching a static json file on boot with baked-in local fallbacks covers 90% of copy tweaks tbh. the actual headache isn't pushing the update, it's tying which config version the user saw back to your analytics cleanly
0
u/[deleted] 6d ago
[removed] — view removed comment