Convex Queries re-run on all screen navigations - Expo SDK 53 in production only
In production builds, queries re-run every time I navigate to a different screen. This behavior only happens in production with SDK 53 and is not present in the following scenarios:
✅ Does not happen in:
Development mode on simulators or real devices
Production-mode simulation using:
npx expo start --no-dev --minify --dev-client
Production builds of the app using SDK 52
❌ Happens only in:
Production builds on real devices using SDK 53
This is blocking me and I can’t figure out why it’s happening only in this specific case. Has anyone else experienced this or found a workaround?14 Replies
Thanks for posting in <#1088161997662724167>.
Reminder: If you have a Convex Pro account, use the Convex Dashboard to file support tickets.
- Provide context: What are you trying to achieve, what is the end-user interaction, what are you seeing? (full error message, command output, etc.)
- Use search.convex.dev to search Docs, Stack, and Discord all at once.
- Additionally, you can post your questions in the Convex Community's <#1228095053885476985> channel to receive a response from AI.
- Avoid tagging staff unless specifically instructed.
Thank you!
Hi. SDK 53 -- this is an Expo SDK thing?
sorry, not sure which SDK we're referring to here
I wonder if this is related to the New Architecture: https://expo.dev/changelog/sdk-53
just to debug... if you switch new architecture off, does this problem go away?
"newArchEnabled": false
It's interesting. (I've used chat GPT to clean up my findings)
findings.
I'm a Pro user and I've submitted a support ticket via my dashboard, but I wanted to provide additional context here based on further testing.
🧪 Testing Scenario:
I'm testing the same app in two different environments:
✅ 1. Development build (Expo SDK 53) running on a real device:
The app is connected to my computer (dev server).
Navigation works as expected.
Queries do not re-run unnecessarily when navigating between screens.
There are no errors in the Convex dashboard logs.
Query caching seems to be working correctly — everything behaves as expected.
❌ 2. TestFlight build (Expo SDK 53) running on the same real device:
Every time I navigate to a different screen, all Convex queries re-run.
Pages enter a loading state on every navigation.
In the Convex dashboard logs, I see a burst of errors immediately after each navigation event. These errors resolve quickly, and the data loads normally afterward — but the extra query activity is clearly visible and undesirable.
Additional Notes:
I’ve confirmed this behavior happens both when connected to the production backend and when connected to the Convex cloud backend.
My environment variables are correctly set — if they weren’t, the app would crash immediately on launch.
The Convex client is set up identically in both builds.
The only difference between the two environments is that one is a development build, and the other is the TestFlight production build — both running on real devices.
I've attached a image of the logs.
i check the clerk auth before any backend function is run via

i do not get these errors on a development build on a real device - what makes it super confusing via the TestFlight app is that they obviously all fail but then run successfully anyway on the 2nd try. 😕 😕 😖
gotcha. did you try disabling the "new architecture" just so we can narrow it down if those sets of changes (in production builds) might be the issue?
since on sdk 52 we don't have these issues, and sdk 52, new architecture is off by default
i'll try this now
I get the same issue, downgrading didn't solve it. Still get a ton of errors in the dashboard on the 1st run
"@clerk/clerk-expo": "^2.10.7",
"expo": "~53.0.7",
"convex": "^1.24.0",
"convex-helpers": "^0.1.84",
it looks the clerk auth context is lost on every screen navigation.
I think this is an Expo Router v5 issue. I've resolved the Convex errors and we no longer lose auth.
The situation is still the same: in development, everything works as expected; in production, whenever I navigate via router.push() and on screen mount, Convex queries re-run.
i think theres. more to it than this.
I'm trying to debug Expo now, but if you discover anything, please let me know.
Thanks for all the help!
I've been testing further, and what's happening is that in development — on a real device or simulator — only the queries mounted and unmounted with the screen get re-run, which is expected.
But in production, when I navigate across screens, all subscribed queries in( _layout.tsx files) re-run, which is not expected.
What seemed to fix it (for now) was doing a ton of Expo updates with absolutely no code changes. One of them must have fixed the issue — at this point, I have no idea whats going on.
for now... production works... 😕 ... i should be smiling but... this does not feel right.
just created a brand new build and pushed it to production. everything works as expected... 😕 👍
the only thing i did differently was pray to Saint Expedite (i'm not religious)If there were expo updates to make after upgrading the sdk, I'd expect issues until updating everything
glad you got it working
6 days of hell. But It was worth it, it forced me clear up and optimise many areas of the codebase. It was a means to many ends i’d say. 🤣
I had a similar experience a while back, I think it was the Expo 50 upgrade. One of 'em. Just days and days of downtime and heisenbugs.
I can't even think about new architecture right now lol
What version are you on?
52 still
Wishing you the best of luck bro! Ill pray to saint espidite on your behalf