SaurabhS
Convex Community3w ago
1 reply
Saurabh

TS2589 errors with simple queries — how to fix without @ts-nocheck?

🪲Bug ReportAdvice
I'm hitting TS2589: Type instantiation is excessively deep and possibly infinite on simple Convex queries, even with basic validators. I want a fix without @ts-nocheck or suppressions.

The Problem:
Even simple queries like this trigger TS2589:

export const getFAQSuggestions = query({
args: { workspaceId: v.id("workspaces") },
handler: async (ctx, args) => {
const allSuggestions = await ctx.db
.query("faqSuggestions")
.withIndex("by_workspace", (q) => q.eq("workspaceId", args.workspaceId))
.collect();

const pendingSuggestions = allSuggestions
.filter((s) => s.status === "pending")
.sort((a, b) => b._creationTime - a._creationTime)
.slice(0, 50);

return pendingSuggestions;
},
});

What I've Tried:
- Extracting validators to constants with v.object() — still errors
- Removing explicit type annotations on handler args — still errors
- Using inline object literals (not v.object()) — still errors
- Breaking query chains (collect first, then filter in JS) — still errors
- Splitting the file into smaller modules — still errors
Was this page helpful?