RealtimeKeep your app up to date
AuthenticationOver 80+ OAuth integrations
Convex Components
ComponentsIndependent, modular, TypeScript building blocks for your backend.
Open sourceSelf host and develop locally
AI CodingGenerate high quality Convex code with AI
Compare
Convex vs. Firebase
Convex vs. Supabase
Convex vs. SQL
DocumentationGet started with your favorite frameworks
SearchSearch across Docs, Stack, and Discord
TemplatesUse a recipe to get started quickly
Convex for StartupsStart and scale your company with Convex
Convex ChampionsAmbassadors that support our thriving community
Convex CommunityShare ideas and ask for help in our community Discord
Stack
Stack

Stack is the Convex developer portal and blog, sharing bright ideas and techniques for building with Convex.

Explore Stack
BlogDocsPricing
GitHub
Log in

The open-source reactive database for app developers

Start building
npm create convex

Everything is code

From database schemas to queries, from auth to APIs, express every part of your backend in pure TypeScript. Your backend code lives next to your app code, is typechecked and autocompleted, and is generated by AI with exceptional accuracy.

Screenshot of code editorScreenshot of app preview and Convex dashboard

Always in sync

Convex libraries guarantee that your app always reflects changes to your frontend code, backend code, and database state in real time. No need for state managers, cache invalidation policies, or websockets.

Screenshot of code editorScreenshot of app preview and Convex dashboard

Backend built-ins

Create cron jobs, kick off backend AI workflows, leverage built-in auth, and tap into a growing ecosystem of components that solve common backend needs with just an npm i.

Screenshot of code editorScreenshot of app preview and Convex dashboard

The open-source reactive database for app developers

Start building
npm create convex

From database schemas to queries, from auth to APIs, express every part of your backend in pure TypeScript. Your backend code lives next to your app code, is typechecked and autocompleted, and is generated by AI with exceptional accuracy.

01

import { mutation, query }
from "./_generated/server";
import { v } from "convex/values";
export const setComplete = mutation({
args: { id: v.id("todos") },
handler: async (ctx, args) => {
await ctx.db.patch(args.id, {
// Try checking a todo--nothing happens!
// Change this to `true` and try again.
completed: false,
});
},
});
export const list = query({…});
export const add = mutation({…});
export const setIncomplete = mutation({
args: { id: v.id("todos") },
handler: async (ctx, args) => {
await ctx.db.patch(args.id, { completed: false });
},
});
Try it out!
import { defineSchema, defineTable } from "convex/server";
import { v } from "convex/values";
export default defineSchema({
todos: defineTable({
text: v.string(),
category: v.optional(v.string()),
completed: v.boolean(),
}).index("by_completed", ["completed"]),
});
import { api } from "../../convex/_generated/api";
import { TodoList } from "./TodoList";
import { useQuery } from "convex/react";
export function TodoApp() {
// Load more by changing `count` to 10.
// Everything updates reactively.
const todos = useQuery(api.todos.list, { count: 5 });
return <TodoList todos={todos} />;
}
Try it out!
import { mutation, query } from "./_generated/server";
import { v } from "convex/values";
export const setComplete = mutation({…});
export const list = query({
args: { count: v.number() },
handler: async (ctx, args) => {
return await ctx.db.query("todos").order("desc").take(args.count);
},
});
export const add = mutation({…});
export const setIncomplete = mutation({…});
import { cronJobs } from "convex/server";
import { internal } from "./_generated/api";
const crons = cronJobs();
crons.interval(
"categorize todos",
{ seconds: 5 },
internal.categorize.categorize,
{
// Add categories "Sports" and "Health"
// to see the todos categorized on the
// next cron job run.
categories: ["Chores", "Work"],
},
);
export default crons;
Try it out!
import { v } from "convex/values";
import { api, internal } from "./_generated/api";
import { Doc, Id } from "./_generated/dataModel";
import { internalAction, internalMutation } from "./_generated/server";
import Anthropic from "@anthropic-ai/sdk";
type AiCategorizeResponse = {
id: Id<"todos">;
category: string;
};
export const categorize = internalAction({
args: { categories: v.array(v.string()) },
handler: async (ctx, args) => {
const todos = await ctx.runQuery(api.todos.list, { count: 100 });
const response = await categorizeTodos(todos, args.categories);
await ctx.runMutation(internal.categorize.setCategories, {
categories: response,
});
},
});
export const setCategories = internalMutation({
args: {
categories: v.array(v.object({ id: v.id("todos"), category: v.string() })),
},
handler: async (ctx, args) => {
for (const category of args.categories) {
await ctx.db.patch(category.id, {
category: category.category,
});
}
},
});
async function categorizeTodos(
todos: Doc<"todos">[],
categories: string[],
): Promise<AiCategorizeResponse[]> {…}
import { defineSchema, defineTable } from "convex/server";
import { v } from "convex/values";
export default defineSchema({
todos: defineTable({
text: v.string(),
category: v.optional(v.string()),
completed: v.boolean(),
}).index("by_completed", ["completed"]),
});
AI Tools

LLMs love Convex

With Convex, everything is just TypeScript. This means your favorite AI tools are pre-equipped to generate high quality code.

Learn more
Try Convex with
Convex Chef
Product

Not just a database

Everything your product deserves to build, launch, and scale.

Learn moreIllustration of the features provided by Convex, including realtime updates, type safety, and automatic caching.Illustration of the features provided by Convex, including realtime updates, type safety, and automatic caching.
Customer Love

Loved by developers

What people building their business on Convex are saying.

Next + Convex (all in typescript) Vs Angular (typescript) + Django (python) + Postgres + S3 + Websocket DIY + SQS + IaC + DIY e2e type safety 🤔
WebDevCody's avatar
WebDevCody@webdevcody
@convex_dev Simple. Fast. Realtime.
AndyOz's avatar
AndyOz@andy_austin_dev
I think @convex_dev might be the best DB I've ever used
Robin's avatar
Robin@robinxpfp
Happy to see more first-class clerk x convex integration There's such a major architecture shift around Serverless + Edge + React + Typescript that (imo) it's unlikely sql is still the right abstraction Very compelling that convex is approaching this from first principles
Colin | Clerk.com's avatar
Colin | Clerk.com@tweetsbycolin
😱 @convex_dev is the gift that keeps on giving Check it out in combination with @nextjs docs.convex.dev
Guillermo Rauch's avatar
Guillermo Rauch@rauchg
@convex_dev is everything I wanted Firebase to be. Such a great tool. Feels illegal to know about this before others.
Timothy Stepro's avatar
Timothy Stepro@tim_stepro
#dailytip if you are a #react developer and want an alternative to Firebase, you might want to give @convex_dev a try. It has amazing ReactHooks with samples in #Javascript and #typescript and the price isn't bad. I'm not a Firebase expert but it looks like all features are there
urubatan's avatar
urubatan@urubatan
@convex_dev feels like what I wanted Firebase and MongoDB Realm to be and more. Really enjoying the DX so far!
David Kim's avatar
David Kim@dvddkkim
I used @convex_dev once to make sure our integration at @ClerkDev worked and the docs matched what we expected. It's magical. I don't say that lightly. I think it's time to do a video on the channel.
James Perkins's avatar
James Perkins@james_r_perkins
I'm working on a new app build with @convex_dev and I am *very* excited about the tech here - DB schema defined in TS - end-to-end types (like if tRPC also set up your DB) - real-time updates Just Work™
Jason Lengstorf's avatar
Jason Lengstorf@jlengstorf
Managing an application's state has become easier, but the global state concept is still a pain for developers, which @convex_dev aims to solve. I made a realtime application using @convex_dev, @nextjs, and @auth0 and loved it.😍
Anshuman Bhardwaj's avatar
Anshuman Bhardwaj@sun_anshuman
Interesting tool of the week: convex.dev by @convex_dev We like: Makes it easy to build a live-updating web app with a document database. Strictly-typed fully relational schemas defined in code (optional, but recommended)
Console - Devtools, devtools, devtools's avatar
Console - Devtools, devtools, devtools@consoledotdev
#dailytip if you are a #react developer and want an alternative to Firebase, you might want to give @convex_dev a try. It has amazing ReactHooks with samples in #Javascript and #typescript and the price isn't bad. I'm not a Firebase expert but it looks like all features are there
urubatan's avatar
urubatan@urubatan
I used @convex_dev once to make sure our integration at @ClerkDev worked and the docs matched what we expected. It's magical. I don't say that lightly. I think it's time to do a video on the channel.
James Perkins's avatar
James Perkins@james_r_perkins
@convex_dev feels like what I wanted Firebase and MongoDB Realm to be and more. Really enjoying the DX so far!
David Kim's avatar
David Kim@dvddkkim
😱 @convex_dev is the gift that keeps on giving Check it out in combination with @nextjs docs.convex.dev
Guillermo Rauch's avatar
Guillermo Rauch@rauchg
#dailytip if you are a #react developer and want an alternative to Firebase, you might want to give @convex_dev a try. It has amazing ReactHooks with samples in #Javascript and #typescript and the price isn't bad. I'm not a Firebase expert but it looks like all features are there
urubatan's avatar
urubatan@urubatan
I used @convex_dev once to make sure our integration at @ClerkDev worked and the docs matched what we expected. It's magical. I don't say that lightly. I think it's time to do a video on the channel.
James Perkins's avatar
James Perkins@james_r_perkins
@convex_dev feels like what I wanted Firebase and MongoDB Realm to be and more. Really enjoying the DX so far!
David Kim's avatar
David Kim@dvddkkim
😱 @convex_dev is the gift that keeps on giving Check it out in combination with @nextjs docs.convex.dev
Guillermo Rauch's avatar
Guillermo Rauch@rauchg
Happy to see more first-class clerk x convex integration There's such a major architecture shift around Serverless + Edge + React + Typescript that (imo) it's unlikely sql is still the right abstraction Very compelling that convex is approaching this from first principles
Colin | Clerk.com's avatar
Colin | Clerk.com@tweetsbycolin
I'm working on a new app build with @convex_dev and I am *very* excited about the tech here - DB schema defined in TS - end-to-end types (like if tRPC also set up your DB) - real-time updates Just Work™
Jason Lengstorf's avatar
Jason Lengstorf@jlengstorf
@convex_dev is everything I wanted Firebase to be. Such a great tool. Feels illegal to know about this before others.
Timothy Stepro's avatar
Timothy Stepro@tim_stepro
I think @convex_dev might be the best DB I've ever used
Robin's avatar
Robin@robinxpfp
Happy to see more first-class clerk x convex integration There's such a major architecture shift around Serverless + Edge + React + Typescript that (imo) it's unlikely sql is still the right abstraction Very compelling that convex is approaching this from first principles
Colin | Clerk.com's avatar
Colin | Clerk.com@tweetsbycolin
I'm working on a new app build with @convex_dev and I am *very* excited about the tech here - DB schema defined in TS - end-to-end types (like if tRPC also set up your DB) - real-time updates Just Work™
Jason Lengstorf's avatar
Jason Lengstorf@jlengstorf
@convex_dev is everything I wanted Firebase to be. Such a great tool. Feels illegal to know about this before others.
Timothy Stepro's avatar
Timothy Stepro@tim_stepro
I think @convex_dev might be the best DB I've ever used
Robin's avatar
Robin@robinxpfp
Managing an application's state has become easier, but the global state concept is still a pain for developers, which @convex_dev aims to solve. I made a realtime application using @convex_dev, @nextjs, and @auth0 and loved it.😍
Anshuman Bhardwaj's avatar
Anshuman Bhardwaj@sun_anshuman
Interesting tool of the week: convex.dev by @convex_dev We like: Makes it easy to build a live-updating web app with a document database. Strictly-typed fully relational schemas defined in code (optional, but recommended)
Console - Devtools, devtools, devtools's avatar
Console - Devtools, devtools, devtools@consoledotdev
Next + Convex (all in typescript) Vs Angular (typescript) + Django (python) + Postgres + S3 + Websocket DIY + SQS + IaC + DIY e2e type safety 🤔
WebDevCody's avatar
WebDevCody@webdevcody
@convex_dev Simple. Fast. Realtime.
AndyOz's avatar
AndyOz@andy_austin_dev
Managing an application's state has become easier, but the global state concept is still a pain for developers, which @convex_dev aims to solve. I made a realtime application using @convex_dev, @nextjs, and @auth0 and loved it.😍
Anshuman Bhardwaj's avatar
Anshuman Bhardwaj@sun_anshuman
Interesting tool of the week: convex.dev by @convex_dev We like: Makes it easy to build a live-updating web app with a document database. Strictly-typed fully relational schemas defined in code (optional, but recommended)
Console - Devtools, devtools, devtools's avatar
Console - Devtools, devtools, devtools@consoledotdev
Next + Convex (all in typescript) Vs Angular (typescript) + Django (python) + Postgres + S3 + Websocket DIY + SQS + IaC + DIY e2e type safety 🤔
WebDevCody's avatar
WebDevCody@webdevcody
@convex_dev Simple. Fast. Realtime.
AndyOz's avatar
AndyOz@andy_austin_dev
Integrations

Convex lovesyour favorite frameworks

Connect your backend to your client libraries and frameworks

Learn more
React logo
React
Quickstart guide
React Native logo
React Native
Quickstart guide
Python logo
Python
Quickstart guide
Next.js logo
Next.js
Quickstart guide
TanStack Start logo
TanStack Start
Quickstart guide
Rust logo
Rust
Quickstart guide
Remix logo
Remix
Quickstart guide
Vue logo
Vue
Quickstart guide
Svelte logo
Svelte
Quickstart guide
Get your app up and running in minutes
Start building
Convex logo
ProductSyncRealtimeAuthOpen sourceAI codingChefFAQPricing
DevelopersDocsBlogComponentsTemplatesStartupsChampionsChangelogPodcastLLMs.txt
CompanyAbout usBrandInvestorsBecome a partnerJobsNewsEventsTerms of servicePrivacy policySecurity
SocialTwitterDiscordYouTubeLumaBlueskyGitHub
A Trusted Solution
  • SOC 2 Type II Compliant
  • HIPAA Compliant
  • GDPR Verified
©2025 Convex, Inc.