We launched Convex Components to make adding features to your app easier! 🎉
Learn moreFrom prototype to production, Convex provides a flexible, 100% ACID compliant database.
Every project and company eventually needs true ACID transactions; Convex is designed for it out of the gate. All data in Convex is always written and read in transactions. Your data will always behave as you expect. No complicated rules around reading all your data before writing. All Convex transactions work on top of a consistent snapshot.
Convex goes above and beyond typical ACID compliance with serializable isolation and optimistic concurrency control. Write your app’s logic in TypeScript query and mutation functions and Convex takes care of the rest.
A hierarchical document database without relationships is not enough. Convex
encourages you to organize your documents in tables. So if your users
and
todos
are in different tables, you can set clear relationships between them
using standard relational patterns. Convex is still flexible enough to documents
in semi-structured JSON files.
The Convex database was designed with the query and mutation functions in mind. So every time you write a query or mutation function, it’s automatically a transaction. All transactions are automatically retried if they conflict. You are free to just write the code you care about, not trying to figure out how to manage consistency.
Sometimes you just want to chuck records into a table and figure it out later. Sometimes you annotate types when it’s useful, but write it like plain ol’ JavaScript when you’re moving fast. However, the day may come when you want to solidify your designs. Convex embraces this concept of gradual rigor. For example, you can operate schema-free as you’re iterating, and Convex will keep track of all your record’s types for you. But Convex also lets you lock in a schema and type enforcement when you’re ready. Convex will even generate your schema for you!