Convex vs. Appwrite
Full backend service with real-time updates and superior transactional support, all in TypeScript.
| Convex | Appwrite | |
|---|---|---|
| Datastore/Database | Yes | Yes |
| Open-source | Yes | Yes |
| Cloud functions | Yes | Yes |
| File storage | Yes | Yes |
| React support | Yes | Yes |
| Atomic Operations/Transactions | Yes | No |
| Realtime by default | Yes | No |
| Live dev environment | Yes | No |
| Built-in schema enforcement | Yes | No |
| Native auth | Yes | Yes |
| Self-hosting in production | Yes | Yes |
| Messaging API | No | Yes |
What is Appwrite?
Appwrite was created in 2019 by solo developer Eldad Fux, which he later transformed into a business in 2021 to bring the platform to market. It uses MariaDB as the backing store, a commonly used fork of MySQL that offers some scalability improvements to classic MySQL. The feature suite includes all of the classic BaaS components that you’d come to expect like Auth, File Storage, and Functions, with options to self-host.
We appreciate that what Appwrite and Convex are delivering to the market look similar, so we thought it’s worth breaking down the similarities and differences.
What’s similar?
Both Convex and Appwrite:
- Are backend abstractions that sit in front of a relational database
- Integrate with most modern TS/JS frameworks
- Are equipped with a visual interface to interact with your database in-browser
- Have file storage and native auth capabilities
What’s different?
Reactivity / Realtime
Convex’s database offers realtime capabilities by automatically creating a subscription for every query, pushing new information on the backend immediately to the frontend. There are significant advantages to this approach, as there is no setup or middleware required to configure it. Convex’s websocket client provides both realtime updates and consistency guarantees that are not possible when your reads are on a different channel than your writes.
Appwrite offers realtime capabilities through users manually creating subscriptions to their Appwrite “channels.” When files or data are updated, you can use the subscription you created to build the user experience. Appwrite developers pay for each concurrent connection that is live on their application.
Crons and Scheduling
Convex has a native API for scheduling and cron workflows, allowing you to build durable workflows without queue maintenance or infrastructure management. Convex functions can be programmatically set to run after a set amount of time or at a specific timestamp using the scheduling API.
Appwrite functions can be repeated on a schedule with cron expressions. Appwrite does not support workflow building with non-repeating functions.
Atomic Operations and Transactions
Every database operation with Convex is automatically ACID compliant.
Appwrite does not support transactions or atomic updates, as stated in this GitHub issue.
Actions
Convex has a native wrapper for external APIs called Actions, ensuring that third-party software doesn’t affect your database performance.
Appwrite does not have a native wrapper for interacting with external APIs.
TypeScript
Convex offers schema generation from Convex TypeScript functions, type inference, autocompletion, and tRPC-style type-safety.
Appwrite does not have TypeScript autocomplete, schema generation, TypeScript type generation from a SQL schema, or type safe queries. They are looking into adding these DX improvements for TypeScript, as per this GitHub issue.
Pricing
The pricing schemes are quite different, but we expect that most users will likely find the pricing for both platforms to be similar when all the differences cancel out. Due to the complexity of differences, we welcome updates to this page if something isn’t represented correctly.
Highlights:
- Convex’s realtime capabilities are built-in, whereas Appwrite charges for concurrent connections
- Appwrite offers considerably more database bandwidth for the Free and Pro plans compared to Convex, but charges twice as much for usage beyond the limit
- Convex offers considerably more function calls for the Free and Pro plans compared to Appwrite, and both platforms charge the same for additional executions
- Appwrite offers considerably more database storage for the Free and Pro plans compared to Convex, and is cheaper than Convex for usage beyond the limit
- Convex offers 40 deployments on the Free plan, multiple databases per project, and 6 organization members. Appwrite offers unlimited projects on the Free plan, only 1 database per project, and 1 organization member
- There is non-removable branding on Appwrite’s Free plan. Convex does not have any branding on the Free plan.
We expect pricing for both platforms to be similar, but if you want to do your own research to compare pricing, check both pages out here:
Self-Hosting
Convex can be self-hosted using the open-source backend. Convex provides a Docker image that can be deployed to any containerized environment. Convex team is actively maintaining these images and the there is an active community supporting this work.
Appwrite can be self-hosted, and is packaged as a Docker image that can be deployed to any containerized environment such as Kubernetes. If you’re looking to deploy your backend on your own Kubernetes clusters or Docker Swarm, Appwrite has spent a lot of time developing their offering to be performant on these systems.
Messaging API
Convex does not have a native Messaging API. We recommend pairing Convex with something like Resend for the best developer experience while using Convex.
Appwrite has a native Messaging API that you can use for personalized communication through push notifications, emails, and text messages.