Convex

Convex

Reactive backend platform with real-time sync and TypeScript

Features

  • Reactive queries that auto-update when data changes
  • TypeScript server functions with full type safety
  • Built-in scheduling, cron jobs, and file storage
  • ACID transactions with optimistic concurrency

Pros

  • Truly reactive — UI updates automatically on data change
  • End-to-end TypeScript with excellent DX
  • No caching layer needed — reactivity handles freshness

Cons

  • Proprietary query language (not SQL)
  • Vendor lock-in to Convex platform
  • Newer platform with less production track record

Overview

Convex is a reactive backend platform where queries automatically re-execute and push updates to clients when underlying data changes. Unlike traditional backends where you poll or set up WebSocket subscriptions, Convex makes real-time the default behavior.

Server functions in Convex are written in TypeScript with full type safety shared between client and server. The platform handles database, file storage, scheduling, and serverless functions. Convex transactions provide ACID guarantees with automatic conflict resolution.

When to Use

Convex is ideal for real-time applications (collaborative tools, live dashboards, chat), when you want the simplest path to reactive UIs, or when building full-stack TypeScript applications where type safety across the stack is a priority.

Getting Started

npm create convex@latest
// convex/tasks.ts
import { query, mutation } from "./_generated/server";
import { v } from "convex/values";

export const list = query(async ({ db }) => {
  return await db.query("tasks").collect();
});

export const create = mutation({
  args: { text: v.string() },
  handler: async ({ db }, { text }) => {
    await db.insert("tasks", { text, completed: false });
  },
});