Description
Hi Convex team,
I've been migrating my app to Convex for about a month now. While it's still not in production, I've already hit the 1 GB database bandwidth threshold, which is quite concerning.
It's a web-based AI application that launches tasks to generate content. Convex has been helpful in eliminating the need for a traditional polling system to retrieve that content in real time.
Here’s some context:
- My database is only 5 MB
- My writes are only 6 MB
- But my reads are at 900 MB
Despite optimizing my queries to fetch only necessary data, caching does not seem to work as expected:
- When I refresh the browser, every 1 out of 2 tries does not hit the cache.
- Paginated queries never seem to use the cache, neither on the backend nor on the frontend — and there is currently no Convex helper for paginated caching.
This raises questions about the practicality of caching in real-world apps.
For comparison, my existing Supabase setup (with ~500 users averaging 25-minute sessions) handles:
- 200 MB database
- ~3 GB monthly egress
With Convex, based on my current trajectory, this could scale to over 600 GB/month, which is extremely high and unsustainable.
Additional Concerns
-
I'm using
convex-auth
, and in just one month on a single account, it generated over 2,000authRefreshTokens
. At scale, this would be over 1 million refresh tokens for 500 users, which seems highly inefficient. -
When listing elements with
query
orpaginationQuery
, any update to a single element triggers a full re-send of the entire list, instead of just the updated row. This results in megabytes of bandwidth used, rather than just a few kilobytes.
Feedback & Request
-
The current documentation and tutorials don’t provide clear guidance on building scalable, production-ready data fetching and caching strategies in Convex.
-
We'd really benefit from official best practices for:
- Efficient pagination with real-time updates.
- Reducing redundant data transmission when listing or updating items.
- Managing
authRefreshTokens
efficiently at scale. - Monitoring and optimizing bandwidth usage, especially in real-time applications.
-
Additionally, the Logs tab in the dashboard needs to offer more transparency and debugging insight. Specifically, it would be extremely helpful to see:
- Query parameters sent
- Returned result data
- Size of the result
- Any internal database bandwidth used (if it contributes to the usage limits)
I'm genuinely excited about Convex, but these issues could be blockers for production use. I hope you can shed some light on whether improvements are planned around these limitations, and if not, how developers should handle them effectively.
Thanks for your work and looking forward to your response!