The best Supabase alternatives in 2026 for teams that need more backend flexibility and control over their infrastructure.
Supabase combines Postgres and backend services so teams can launch quickly, including through app builders like Lovable. As those applications grow, engineering teams need to understand and extend the backend, often with requirements that make running it in their own AWS or GCP account more attractive. They want more control over infrastructure and costs while keeping the speed of the initial build.
The short answer: choose Firebase for mobile tooling and offline sync, Appwrite for a self-hostable backend bundle, Convex for reactive TypeScript applications, PocketBase for a small single-server app, or Neon when you mainly want managed Postgres. Choose Encore when the next step is a service-based backend whose infrastructure runs in your AWS or GCP account.
Reasons to consider Supabase alternatives:
| Alternative | Approach | Best fit |
|---|---|---|
| Encore | Type-safe APIs and infrastructure primitives in application code, deployed to your AWS or GCP account | Engineering teams growing beyond a bundled backend while developers and agents keep building features |
| Firebase | Managed backend services with client SDKs and Google Cloud integrations | Mobile teams that need offline sync and Google's app development tools |
| Appwrite | A backend service bundle you can use in the cloud or self-host | Teams that want the BaaS model with a self-hosting option |
| Convex | TypeScript backend functions with automatically reactive queries | Teams building collaborative or realtime applications |
| PocketBase | A self-hosted backend in a single executable, backed by SQLite | Small applications that fit on one server |
| Neon | Managed Postgres with branching and independent compute | Teams keeping Postgres while building the rest of the backend separately |
| Capability | Encore | Firebase | Appwrite | Convex | PocketBase | Neon |
|---|---|---|---|---|---|---|
| Backend model | Type-safe APIs, services, and infrastructure declarations | Managed client-facing backend services | Managed or self-hosted backend service bundle | TypeScript queries, mutations, actions, and reactive subscriptions | Single-server backend in one executable | Managed Postgres used with a separate application backend |
| Primary database | PostgreSQL in your AWS or GCP account | Firestore or Realtime Database | TablesDB, DocumentsDB, or native databases on dedicated infrastructure | Convex document database | SQLite | PostgreSQL |
| Authentication | Authentication handler with your identity provider | Firebase Authentication | Built-in authentication and permissions | Integrates with supported identity providers | Built-in auth collections and rules | Neon Auth is available; external providers also work |
| File storage | Object storage backed by S3 or Cloud Storage | Cloud Storage for Firebase | Appwrite Storage | Convex File Storage | Local or S3-compatible file storage | Bring a separate object-storage service |
| Realtime and events | Pub/Sub and streaming APIs | Firestore listeners and Realtime Database | Realtime API for database, storage, and function events | Reactive queries update subscribed clients | Realtime subscriptions over server-sent events | Postgres features; application-level realtime is built separately |
| Backend compute | APIs, Pub/Sub subscribers, and cron jobs | Cloud Functions and other Google Cloud services | Appwrite Functions | Convex functions and actions | Go or JavaScript hooks, routes, and jobs | Bring application hosting and workers |
| Where it runs | Local development, Encore Cloud, your AWS/GCP account, or self-hosted containers | Google-managed infrastructure | Appwrite Cloud or infrastructure you operate | Convex Cloud or a self-hosted deployment | A server you operate | Neon Cloud |
| Billing model | Encore plan plus cloud-resource costs for own-cloud deployments | Usage-based billing across enabled Firebase and Google Cloud services | Appwrite Cloud plan or the cost of operating it yourself | Convex Cloud usage or self-hosting costs | No platform fee; you pay for the server and operations | Compute, storage, and data-transfer usage |
| Main migration work from Supabase | Replace selected client calls with APIs and map resource policies | Reshape relational data and authorization for Firebase services | Adapt database queries, permissions, and service APIs | Move data and backend behavior into Convex's model | Adapt Postgres data and policies to a single-server SQLite model | Keep Postgres data; replace Auth, Storage, Realtime, and Edge Functions separately |
Encore combines the simplicity of a managed backend platform with infrastructure in your own AWS or GCP account, defined through type-safe primitives in application code. Developers and agents work with services, APIs, databases, Pub/Sub, buckets, caches, cron jobs, and secrets, while platform teams control how those resources run. The application runs on standard cloud services and can be built as a Docker image for deployment outside the Encore platform.

Encore uses static analysis to read the API and resource declarations without running the code, building an application model of service dependencies, resource connections, and the IAM needed for supported resources.
When a backend needs to move beyond hosted Supabase into your own AWS or GCP account, the platform team controls sizing, scaling, networking, and regions through environment configuration. Developers keep declaring the resources their features need in application code. Encore provisions supported resources with integrated logs, metrics, and tracing, while existing Terraform can continue managing shared or unsupported infrastructure.
encore run. The same bucket declaration is used in preview environments and production.A database, bucket, Pub/Sub topic, or any other supported infrastructure resource is declared in the code that uses it. When an agent adds one:
encore run, the agent can test the change against local infrastructure, then check it end to end in an isolated preview environment on Encore Cloud, or in your own cloud account on Enterprise.Cloud resources are billed directly in your account, with costs determined by the services and capacity your team configures, alongside Encore's platform fee.
Encore fits engineering teams moving beyond Supabase that need their backend in their own AWS or GCP account, with developers and agents building features while platform teams control the infrastructure.
Adoption can start with one API or background workload while Supabase keeps providing Postgres, Auth, Storage, and Realtime. An Encore authentication handler can validate Supabase tokens, so the existing sign-in flow stays in place. If you move the database later, its application schema and data transfer with standard Postgres tools, while client calls and access policies are adapted to the new APIs.
See Coming from Supabase for the migration steps.
Firebase combines authentication, databases, storage, functions, and hosting with mobile tools such as Crashlytics and Remote Config. Its Firestore database supports realtime listeners and offline client access, making it a good fit for apps that need to stay useful without a connection.
// With an initialized Firestore client:
const documents = query(
collection(db, "documents"),
where("ownerId", "==", userId),
);
onSnapshot(documents, (snapshot) => {
renderDocuments(snapshot.docs.map((doc) => doc.data()));
});
Client access is controlled through Security Rules, while server access and Google Cloud integrations use IAM. Reviewing a feature therefore means checking both permission paths. Cloud Functions can also call services beyond the Firebase bundle, with their configuration managed separately.
Firebase fits teams that want stronger mobile tooling or Firestore's sync model and are comfortable with Google's ecosystem and usage billing. Moving from Supabase to Firestore requires restructuring relational data and queries. Its Postgres-backed SQL service preserves a relational model, with schemas and operations defined through its own connector tooling.
Appwrite provides authentication, databases, file storage, functions, and realtime APIs through client and server SDKs. You can use Appwrite Cloud or run the platform on infrastructure you control.
Backend function code can run in Docker with Appwrite's local development tools. Execution permissions, event triggers, and timeouts still need to be checked against the deployed project or a self-hosted instance; the local function runner does not enforce them.
Appwrite fits teams that want a BaaS bundle they can operate themselves, with self-hosting putting updates, backups, monitoring, and scaling under their control. Moving from Supabase means adapting queries and policies to Appwrite's database APIs. If hosting is the only thing you want to change, self-hosting Supabase keeps more of the existing application intact.
Convex puts backend operations in TypeScript queries, mutations, and actions, with query subscriptions that update connected clients as data changes. Collaborative applications can use those subscriptions without implementing their own sync logic.
// convex/documents.ts; imports omitted.
// Requires an identity provider and by_owner index.
// ownerId stores identity.tokenIdentifier.
export const list = query({
args: {},
handler: async (ctx) => {
const identity = await ctx.auth.getUserIdentity();
if (!identity) throw new Error("Unauthorized");
return await ctx.db
.query("documents")
.withIndex("by_owner", (q) =>
q.eq("ownerId", identity.tokenIdentifier))
.collect();
},
});
npx convex dev syncs backend functions to a development deployment and updates generated types as the schema changes. Convex also supports local deployments in beta for running and inspecting the backend on your own machine.
Convex fits applications where realtime behavior is central and the team wants queries and mutations in TypeScript. Its document model and function runtime replace Supabase's SQL queries and Edge Functions, so migration involves adapting both data access and backend behavior. You can use the managed platform or self-host and operate the backend yourself.
PocketBase packages a SQLite database, authentication, file storage, an admin UI, and realtime subscriptions into a single executable you run on your own server.
The complete backend can run locally, so developers can exercise its APIs and work with collection rules and migrations without a hosted development account.
PocketBase fits small apps that can run on one server and teams willing to manage it. Moving from Supabase means adapting the data model to SQLite, and the single-server architecture becomes a constraint if you need independently scaled services. Its documentation advises against production-critical use while compatibility changes can require manual migrations.
Neon provides managed Postgres with branching and scale-to-zero. If the database is the part of Supabase you want to keep, it lets you choose application hosting and backend services separately.
import { neon } from "@neondatabase/serverless";
const sql = neon(process.env.DATABASE_URL!);
// userId is supplied by backend authentication.
const documents = await sql`
SELECT id, name FROM documents
WHERE owner_id = ${userId}
`;
Queries and schema changes can be checked against an isolated database branch paired with an application preview before the migration reaches production.
Neon fits teams that want managed Postgres and choose the rest of their backend separately. Neon Auth can provide authentication, while application hosting, file storage, and background processing come from other services. Supabase Data API calls and storage or realtime integrations need their own migration alongside the database.
The right choice comes down to what your backend needs next:
An Encore service can take on the APIs or background workloads that need to run in your cloud account while Supabase continues providing Auth, Storage, or Realtime. The rest of the backend can move as your requirements change.
Start with the quickstart, or see Coming from Supabase for how the two can run together.
It depends on what you need next: Encore for a backend with services and infrastructure in your own AWS or GCP account, Firebase for mobile apps in Google's ecosystem, Appwrite for a self-hostable BaaS, Convex for reactive TypeScript applications, PocketBase for small self-hosted apps, and Neon for managed Postgres alongside your own backend.
Yes, incrementally. Keep the frontend and Supabase services that still fit, then move selected operations behind Encore APIs. Database access, authorization, authentication, storage, and realtime behavior need to be reviewed separately; moving the backend is more than exporting the frontend code.
Yes. Encore can validate Supabase access tokens in an authentication handler while your existing sign-in flow stays in place. Encore provides authentication hooks rather than a hosted user directory or sign-in UI.
Not necessarily. Supabase uses Postgres, so application schema and data are portable with standard database tools. Client calls, Auth, Storage policies, Realtime subscriptions, and Edge Functions still need to be retained, adapted, or replaced.
Yes. Self-hosting can address infrastructure ownership while preserving the Supabase development model. You take responsibility for provisioning, security, backups, monitoring, and scaling, and not every managed-platform feature is available.
No. Neon provides managed Postgres with branching and offers Neon Auth, but you still need application hosting, business logic, file storage, and background processing to replace the rest of your Supabase backend.
Ship without waiting on Terraform
Encore lets developers and agents define application infrastructure directly in code, then automatically provisions it from local development to production in your AWS or GCP account.