Convex vs. Appwrite

Full backend service with real-time updates and superior transactional support, all in TypeScript.

Convex and Appwrite logos side by side
ConvexAppwrite
Datastore/Database
Open-source
Cloud functions
File storage
React support
Atomic Operations/Transactions
Realtime by default
Live dev environment
Built-in schema enforcement
Native auth
Self-hosting in production
Messaging API

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:

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:

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. It’s more meant for testing and local development, but without scaling or operational tooling. In the majority of cases, unless you’re insistent on self-hosting, we recommend using hosted Convex.

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.

Start now

Get your project up and running in minutesGet started
©2024 Convex, Inc.