warmbowski
CCConvex Community
•Created by warmbowski on 5/30/2025 in #support-community
SSR not working using Tanstack-Start, Convex with Tanstack-Query, Clerk auth.
There seems to be a big problem when SSR kicks in for routes that have convex function calls that require authentication. What I see is the
__root
beforeLoad calls the server function that returns the token and then calls serverHTTPClient.setAuth(token)
, so the convexClient has the token when the first convex functions are called, but the user isn't set yet on the convex backend. So the functions throw when they find no auth user (I see the "Not authenticated" errors in the convex dev server console) and that errors out the SSR with a message like the one below showing up in the web server console and the browser when the page loads. So there is a big delay between when the token is retrieved and processed in the serverFunction and when the convex server actually sets the user for auth.getUserIdentity()
. I feel like the convex auth with clerk is a black box to me, and I also feel like the authentication on the convex server needs to be triggered in that before load somehow.
All routes work fine in the client when SSR is disabled. Has anyone else run into this? Any suggestions would be much appreciated for troubleshooting. For now, I'm just going without SSR.
12 replies
CCConvex Community
•Created by warmbowski on 5/21/2025 in #support-community
Caching Solutions?
I'm creating an audio transcript app for audio that is typically about 2 hours long. When I get the transcipt, it is in a form chunked by speaker, and I put each chunk in a convex table. No problem from the ingress perspective, but when viewing in the web, I blow away the free tier of DB Bandwidth pretty quickly. This wouldn't be the case if this data was cached in the browser (can't wait for the local-first sync solution). The data comes in over websockets so it doesn't get cached and if I reload the page or load another transcript, it just gets the data again from the DB. This data will never change once it's written to the DB. The only caching solution I can think of is to move this query into an HTTP Action and let it get cached like any other http response. I am posting here to hear from other folks who have contended with this and have caching solutions to reduce DB bandwidth.
3 replies