Skip to main content

Convex Index Audit

Static read-only audit of convex/. Generated by scripts/audit-convex-indexes.ts. No runtime code or schema was modified. This report is a snapshot — re-run the script to refresh it.
  • Generated: 2026-06-16T00:09:33.496Z
  • Schema source: convex/schema.ts
  • Convex files scanned: 265
  • Tables declared: 112 (with 357 total indexes)
  • Tables with zero indexes: 0
  • Queries: 1075 total — 996 use .withIndex(...), 79 look like table scans
  • Missing index references: 0
  • .collect() calls: 65 total — 65 bounded (scoped by .withIndex(...) or capped by .take(N)), 0 unbounded

A. Tables & indexes

B. Queries without .withIndex(...) (table-scan candidates)

Note: a query() without .withIndex(...) is not always a bug — it may be intentionally fetching a single doc by id or operating on a tiny table (get, unique, first, etc.). Treat this list as a triage queue, not a defect list.

C. Missing table-scoped index references

Each .withIndex("name") below is checked against the indexes declared on that exact ctx.db.query("table") table. None detected.

D. Unbounded .collect() locations

“Unbounded” = a .collect() with no preceding .withIndex(...) and no .take(N) in the same chain. These walk the entire table. None detected.
Re-run with bun run scripts/audit-convex-indexes.ts. The JSON sidecar at the same path is available for follow-up tooling (e.g. piping into Linear, an annotated diff, or a custom reporter).