by @waynesutton
Guidelines for building production-ready Convex apps covering function organization, query patterns, validation, TypeScript usage, error handling, and the Zen of Convex design philosophy
Build production-ready Convex applications by following established patterns for function organization, query optimization, validation, TypeScript usage, and error handling.
All patterns in this skill comply with @convex-dev/eslint-plugin. Install it for build-time validation:
npm i @convex-dev/eslint-plugin --save-dev
// eslint.config.js
import { defineConfig } from "eslint/config";
import convexPlugin from "@convex-dev/eslint-plugin";
export default defineConfig([
...convexPlugin.configs.recommended,
]);
The plugin enforces four rules:
| Rule | What it enforces |
|---|---|
no-old-registered-function-syntax | Object syntax with handler |
require-argument-validators | args: {} on all functions |
explicit-table-ids | Table name in db operations |
import-wrong-runtime | No Node imports in Convex runtime |
Docs: https://docs.convex.dev/eslint
Before implementing, do not assume; fetch the latest documentation:
Organize your Convex functions by domain:
// convex/users.ts - User-related...