get-convex/templates-template-react-vite-convex-performance-audit
Audits Convex performance for reads, subscriptions, write contention, and function limits. Use for slow features, insights findings, OCC conflicts, or read amplification.
This is a copy. The original lives at get-convex/templates-convex-performance-audit.
npx skills add https://github.com/get-convex/templates --skill convex-performance-audit
Diagnose and fix performance problems in Convex applications, one problem class
at a time.
npx convex insights --details reports high bytes read, documents read, orOCC conflicts
do
problem
signals are weak
migration-heavy rollouts unless there is a measured signal, a clearly
unbounded path, or a known hot read/write path
structural work just because a pattern is not ideal at large scale
Start with the strongest signal available:
current context, treat them as a first-class source of performance signals.
npx convex insights --details. Use--prod, --preview-name, or --deployment-name when needed.
insights, trynpx -y convex@latest insights --details before giving up.
convex-doctor, you may treat its findings ashints. Do not require it, and do not treat it as the source of truth.
guardrails above in mind. Lack of insights is not proof of health, but it is
also not proof that a large refactor is warranted.
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:
rollout
When correctness depends on handling old and new states during a rollout,
consult the convex-migration-helper skill 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:
list queries for that table
inspect the other writers to the same table
inspect sibling reads for the same rollout risk
Do not leave one path fixed and another path on the old pattern unless there is
a clear product reason.
Confirm all of these:
needed
function
references/hot-path-rules.md - Read amplification, invalidation,denormalization, indexes, digest tables
references/occ-conflicts.md - Write contention, OCC resolution, hot documentsplitting
references/subscription-cost.md - Reactive query cost, subscriptiongranularity, point-in-time reads
references/function-budget.md - Execution limits, transaction size, largedocuments, payload size
Also check the official
page for additional patterns covering argument validation, access control, and
code organization that may surface during the audit.
Take get-convex/templates-template-react-vite-convex-performance-audit from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npx.
Without those the skill loads but fails at the first command.