You’re seeing that in the browser because Convex forwards server logs to the client in development.
When you use ConvexReactClient against a dev deployment, Convex:
- Logs all successful function executions and all errors on the backend.
- Then sends those logs to the client, and the client prints them into the browser console. [Debugging]
So even if you:
try {
await createTask(...);
} catch (err) {
}
the server still logs the thrown ConvexError, and that log is mirrored into your browser console in dev. Catching the error on the client only prevents an unhandled promise rejection in your app; it does not suppress the Convex server log.
This mirroring of logs to the browser only happens in dev; production deployments do not send logs to the client. [Debugging; Dev vs prod errors]
So yes: seeing that “Uncaught ConvexError …” line in the browser console in development is intended behavior, even when you catch and handle the error in your Next.js code.
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: