ideabrowser.com — find trending startup ideas with real demand
Try itnpx skills add https://github.com/get-convex/agent-skills --skill convex-performance-auditDiagnose and fix performance problems in Convex applications, one problem class at a time.
npx convex insights --details reports high bytes read, documents read, or OCC conflictsStart with the strongest signal available:
npx convex insights --details. Use --prod, --preview-name, or --deployment-name when needed.
insights, try npx -y convex@latest insights --details before giving up.convex-doctor, you may treat its findings as hints. Do not require it, and do not treat it as the source of truth.After gathering signals, identify the problem class and read the matching reference file.
| Signal | Reference |
|---|---|
| High bytes or documents read, JS filtering, unnecessary joins | references/hot-path-rules.md |
| OCC conflict errors, write contention, mutation retries | references/occ-conflicts.md |
| High subscription count, slow UI updates, excessive re-renders | references/subscription-cost.md |
| Function timeouts, transaction size errors, large payloads | references/function-budget.md |
| General "it's slow" with no specific signal | Start with references/hot-path-rules.md |
Multiple problem classes can overlap. Read the most relevant reference first, then check the others if symptoms remain.
If the likely fix is invasive, cross-cutting, or migration-heavy, stop and present options before editing.
Examples:
When correctness depends on handling old and new states during a rollout, consult skills/convex-migration-helper/SKILL.md for the migration workflow.
Pick one concrete user flow from the actual project. Look at the codebase, client pages, and API surface to find the flow that matches the symptom.
Write down:
useQuery, usePaginatedQuery, or useMutationFor each function in the path:
ctx.db.get() and ctx.db.query()ctx.db.patch(), ctx.db.replace(), and ctx.db.insert()In Convex, every extra read increases transaction work, and every write can invalidate reactive subscribers. Treat read amplification and invalidation amplification as first-class problems.
Read the reference file matching your problem class. Each reference includes specific patterns, code examples, and a recommended fix order.
Do not stop at the single function named by an insight. Trace sibling readers and writers touching the same tables.
When one function touching a table has a performance bug, audit sibling functions for the same pattern.
After finding one problem, inspect both sibling readers and sibling writers for the same table family, including companion digest or summary tables.
Examples:
Do not leave one path fixed and another path on the old pattern unless there is a clear product reason.
Confirm all of these:
references/hot-path-rules.md - Read amplification, invalidation, denormalization, indexes, digest tablesreferences/occ-conflicts.md - Write contention, OCC resolution, hot document splittingreferences/subscription-cost.md - Reactive query cost, subscription granularity, point-in-time readsreferences/function-budget.md - Execution limits, transaction size, large documents, payload sizeAlso check the official Convex Best Practices page for additional patterns covering argument validation, access control, and code organization that may surface during the audit.