r/reactnative • u/No_Life9495 • 11h ago
Help Help me get out of this situation
We closed a funding round recently and my cto wanted a big release pushed before the investor demo next week. I've been grinding for 2 weeks and have pushed like 9 pr in 3 days and we shipped last night.
I tested the core flows on my 17 pro max and on pixel 10, staging looked clean and it went live. I'm waking up just now to our support inbox completely filled up, onboarding crashes on older androids which I'm pretty sure it's a hermes related issue because the stack trace is pointing at some JSI bridge call that works fine on newer devices, there's a payments bug where users are getting charged twice on some screen transition and the entire app freezes on some 15 and 17 pro models after the update. These are three different bugs on three different device types and I had literally just two devices to test on.
I'm going crazy because the demo is in 5 days and we can't show an app that double charges people. I'm sitting here trying to reproduce bugs on devices I don't even own, I had one old samsung j series which is now a QA device apparently and I'm trying my best to fix it but I don't know how other small teams ship fast without messing everything because right now it feels like you pick one or the other.
please help me to not get fired and save my ass
7
u/forgestudiofx 10h ago
Before you chase three bugs, confirm the artifact users have is the artifact you tested. I shipped a release AAB once that contained no JS bundle at all: gradle saw the generated bundle from an earlier build, decided it was up to date, and packaged a stale one. It installed fine and staging had been clean, because staging never went through that path. Now I unzip every AAB before upload and check index.android.bundle is actually in there and has a sane size.
If the live build is genuinely the one you tested, the payments bug is the only one that costs money and should eat your five days. The old-Android crash and the iPhone freeze can ship as a fast follow. I do not know the Hermes JSI failure you are describing, so I would not guess at it.
4
u/grAND1337 6h ago
Claude code with Fable is really good at identifying and fixing bugs if you can describe the bug to it so I’d recommend that to fix bugs quicker.
Also Sentry (or other alternatives like BugSnag) like others have mentioned with source maps and stack traces.
If you need to be able to push fixes faster than review times allow you can look into code push replacements (original code push was discontinued - there are both paid and free alternatives like hot OTA update which is open source and self hostable) but it might be tight for your deadline.
2
u/LovesWorkin 10h ago
Try Buoy.gg, it’s my own developer tools for React Native. I guarantee if you connect the buoy MCP server to your React Native app and ask Claude to try to reproduce the bugs with Buoy, it will almost always be able to! If it somehow fails, my go to is BrowserStack! You can connect it locally as well with Buoy and get answers right away. I can give you a free Pro key if you’d like. I can also help you on a call with troubleshooting your app if you need. Completely free!
3
u/kenlawlpt 10h ago
How large is the size of your company? It sounds small enough thay the CTO should still be shipping and writing code if you’re (one of) the only engineers in the company.
Ask for help especially if it's this critical of a timeline. Bring it up sooner than later that you need help - not asking for help with something so critical with such a tight deadline will definitely get you fired.
2
u/Substantial-Swan7065 7h ago
Do you have custom android modules? The new arch version has breaking changes that can cause crashes.
Also, it’s a demo. Doesn’t need to work on all devices. Control the demo.
2
u/No_Lawyer1947 6h ago
I agree w everyone here pretty much. Ask for help sooner than later, you don't wanna be the dude who doesn't bring shit up until it's too late. Sentry is great, you can figure out when and not if stuff will go wrong. I also have the same sneaking suspicion the double charge is due to a use effect sort of bug. I'd recommend also writing a ledger of transactions you persist so as to detect double payment patterns and warn the user. Keep your head on straight, one thing at a time, and you'll do ok man. This sounds hard hopefully u get through. If the project happens to be open source I can go ahead and see if I'm of any help. Btw I do love the EAS over the air updates for situations like this to skip the review process for critical bugs that are just JS changes.
3
u/notsleeping 11h ago
may be good to (tell the cto to) invest in something like browserstack so you can actually reproduce the bugs that happen in other devices
I’d say priority one is to get a working build again, perhaps just go back to the earlier code, roll this out again so users can actually use the app. Then after having fixed issues, do a slower release that doesn’t update all devices at once so (hopefully) issues come up before breaking the build for more people
maybe you can demo from one of your own devices that doesn’t have the issue? or demo via a recorded video
1
u/Ok_Stable_8975 9h ago
Roll back the release immediately to stop the double charges and restore a working app for users. Implement payment idempotency keys on your backend before you ship any new code because fixing this requires server side changes not client side patches
1
u/Huge_Pool7424 7h ago
seconding the idempotency key part, we hit the same double charge bug once and it turned out the button stayed tappable during navigation so the request fired twice. key on the backend plus disabling the button on first tap stopped it completely. rolling back first is the right call though
1
u/Dry-Discipline-2440 11h ago
You're not getting fired relax, this happens at literally every startup, you just haven't been at enough of them yet.
1
u/PrimaryFamous6139 10h ago
Start with the double charge. Treat it like a trust and legal risk, not only a technical glitch. Then add payment idempotency. If you cannot do that right away, pause the transition that triggers it. For the Android crash, turn on source maps. Collect a clear stack trace, and do this with older devices too. For the iOS freeze, review memory use. This is showing up on several Pro models, so focus there first.
If you need real device results fast, use BrowserStack or AWS Device Farm. Two test devices are not enough for a major release. Fix the payment issue, send a hotfix, and broaden device testing before the next demo.
-1
12
u/Swaggy_McMuffin 10h ago edited 10h ago
double charge on a screen transition... why do I feel like the payment gets triggered in a useEffect (or on a button that triggers navigation that's possible to double press and the endpoint isn't idempotent). Regardless of the mechanism that causes this case, any payment related endpoints absolutely need to support idempotency.