Skip to main content

AWS Amplify Gen 2 vs Supabase vs Firebase 2026

·StarterPick Team
amplifysupabasefirebasebaasboilerplate

AWS Amplify Gen 2 vs Supabase vs Firebase for SaaS Starters in 2026

TL;DR

The Backend-as-a-Service (BaaS) market has three serious contenders in 2026: Supabase (the clear favorite for new SaaS projects — Postgres-native, excellent DX, generous free tier), Firebase (Google's platform — mature, proven at scale, but showing its age with NoSQL Firestore and complex pricing), and AWS Amplify Gen 2 (a genuine reinvention — TypeScript-first, code-defined backends, AWS-native with all that entails). Amplify Gen 2 is the sleeper in this comparison: its sandbox workflow and TypeScript-first approach are genuinely excellent, and AWS's underlying infrastructure means you never hit platform scaling limits. For most SaaS startups building on a boilerplate today, Supabase is the default choice — but Amplify Gen 2 is worth serious consideration if you're AWS-first or need enterprise compliance.

Key Takeaways

  • Supabase is Postgres — full SQL power, realtime subscriptions via pgListen, Row Level Security for auth, Storage, Edge Functions; the most SQL-complete BaaS
  • Firebase is NoSQL-first — Firestore's document model is powerful for mobile-style apps but awkward for relational SaaS data; Auth and Cloud Functions are excellent
  • Amplify Gen 2 is TypeScript-first — you define your backend in TypeScript (amplify/) and it generates AWS resources (DynamoDB, Cognito, AppSync, S3) — closest to SST's approach
  • Pricing comparison: Supabase free tier (500MB DB, unlimited API) → Firebase (generous spark plan, then pay-per-use) → Amplify (AWS free tier, then pay-per-use)
  • Boilerplate adoption: Supabase is in ~60% of Next.js SaaS boilerplates; Firebase in ~20%; Amplify Gen 2 in ~5% but growing
  • Vendor lock-in ranking: Firebase (highest — proprietary SDKs, NoSQL) → Amplify (medium — AWS services, but portable) → Supabase (lowest — standard Postgres, self-hostable)

The BaaS Landscape in 2026

"Build vs Buy" for backend services is settled: for SaaS startups with small teams, you don't build auth, real-time subscriptions, or file storage from scratch. You use a BaaS. The question is which one.

The three dominant players serve different philosophies:

PlatformPhilosophyDatabaseAuthStorageFunctions
SupabaseOpen source, self-hostable PostgresPostgreSQLGoTrue (JWT)S3-compatibleDeno Edge Functions
FirebaseGoogle's mobile-first platformFirestore (NoSQL) + RTDBFirebase AuthCloud StorageCloud Functions
Amplify Gen 2AWS-native, TypeScript-firstDynamoDB (or RDS)Amazon CognitoS3Lambda

Supabase: The Default Choice for SaaS in 2026

Supabase has won the BaaS mindshare battle for web SaaS. The combination of genuine Postgres (not a Postgres-compatible wrapper), excellent developer experience, and an open-source commitment has made it the go-to choice.

Why Supabase Wins for SaaS Boilerplates

Real SQL. Every Supabase table is a Postgres table. You can do JOINs, CTEs, window functions, and use any Postgres extension. Compare this to Firebase's Firestore where you can't join two collections without application-level merging.

// Supabase — full SQL power
const { data: orders } = await supabase
  .from('orders')
  .select(`
    id,
    created_at,
    total,
    users!user_id (name, email),
    order_items (
      quantity,
      products!product_id (name, price)
    )
  `)
  .eq('status', 'pending')
  .gte('total', 100)
  .order('created_at', { ascending: false })
  .limit(25)

Row Level Security. RLS policies run in the database — your auth rules live next to your data:

-- Only users can see their own orders
create policy "Users can view own orders"
  on public.orders for select
  using (auth.uid() = user_id);

-- Admins can see all orders
create policy "Admins can view all orders"
  on public.orders for select
  using (
    exists (
      select 1 from public.profiles
      where id = auth.uid() and role = 'admin'
    )
  );

Self-hostable. If Supabase's pricing becomes prohibitive, you can run the entire Supabase stack on your own infrastructure. No other BaaS offers this.

Supabase in Boilerplates

The most popular boilerplates using Supabase:

  • Next SaaS Starter (free) — Next.js 15 + Supabase + Stripe
  • Supastarter (paid) — The most comprehensive Supabase-based SaaS kit
  • ShipFast — Includes Supabase auth option alongside MongoDB
  • T3 Stack variants — Community T3 + Supabase configurations
  • Open SaaS — Wasp + Supabase option

Firebase: The Legacy Champion

Firebase remains the most-used BaaS overall (due to mobile development legacy), but it's losing ground in web SaaS startups. Here's why:

Firebase Strengths

  • Firebase Auth is genuinely excellent — phone auth, email links, social OAuth, anonymous auth, all working smoothly across web and mobile
  • Cloud Firestore at scale is battle-tested — Google runs Firebase at massive scale and the platform has proven reliability
  • Firebase Emulator Suite for local development is comprehensive — Firestore, Auth, Storage, Functions all emulated locally
  • Mature ecosystem — thousands of tutorials, extensions, and community packages

Firebase Pain Points for SaaS

Firestore's data model forces denormalization. A relational SaaS (users → teams → projects → tasks) maps naturally to SQL. In Firestore, you end up duplicating data across subcollections or running multiple queries and joining in application code:

// Firebase — getting a team's recent orders requires multiple reads
const team = await getDoc(doc(db, 'teams', teamId))
const recentOrderIds = team.data().recentOrderIds  // Must track separately

// Multiple reads — can't JOIN
const orders = await Promise.all(
  recentOrderIds.map(id => getDoc(doc(db, 'orders', id)))
)

Pricing unpredictability. Firestore bills per read/write operation. A poorly optimized query that reads 10K documents costs money; an accidental N+1 pattern can produce a large bill. Supabase's pricing is based on compute + storage — much more predictable.

Best Firebase Boilerplates

  • SaaS Starter (Vercel + Firebase) — App Router + Firebase Auth + Firestore
  • next-firebase-auth-edge starter — Server-side Firebase auth in Next.js App Router
  • React + Firebase Vite template — Vite + Firebase SDK v9 modular

AWS Amplify Gen 2: The TypeScript-First Reinvention

AWS Amplify Gen 2 (released 2024) is a complete architectural rethink of Amplify. The original Amplify (Gen 1) was infamous for its JSON configuration complexity and black-box behavior. Gen 2 uses TypeScript-first, code-defined infrastructure:

// amplify/data/resource.ts — define your data model in TypeScript
import { defineData, a } from '@aws-amplify/backend'

const schema = a.schema({
  // This generates a DynamoDB table with AppSync GraphQL API
  Product: a.model({
    name: a.string().required(),
    price: a.float().required(),
    category: a.string(),
    inventory: a.integer().default(0),
    images: a.string().array(),
  })
  .authorization((allow) => [
    allow.authenticated().to(['read']),
    allow.group('Admins').to(['create', 'update', 'delete']),
  ]),
})

export const data = defineData({ schema })
// amplify/auth/resource.ts — define auth
import { defineAuth } from '@aws-amplify/backend'

export const auth = defineAuth({
  loginWith: {
    email: true,
    externalProviders: {
      google: {
        clientId: secret('GOOGLE_CLIENT_ID'),
        clientSecret: secret('GOOGLE_CLIENT_SECRET'),
      },
    },
  },
  groups: ['Admins', 'Users'],
})

Amplify Gen 2 Sandbox Workflow

The standout feature of Amplify Gen 2 is the sandbox — a personal, isolated dev environment in AWS that mirrors production:

npx ampx sandbox   # Creates YOUR personal dev environment in AWS
# ✓ Creates DynamoDB tables, Cognito User Pool, S3 bucket
# ✓ Watches amplify/ directory for changes
# ✓ Hot-deploys changes to AWS in seconds
# ✓ Generates TypeScript types from your schema

Every developer gets their own isolated sandbox — no shared dev environment, no database conflicts. When you change your schema, the types are regenerated automatically.

Amplify Gen 2 Best Fit

Amplify Gen 2 is ideal when:

  • AWS-first organization — existing AWS account, IAM, VPC, compliance setup
  • Mobile + Web parity — Amplify's React Native and Flutter SDKs share the same backend
  • GraphQL preference — AppSync's GraphQL is Amplify's primary API layer
  • Enterprise compliance — Cognito + AWS infrastructure for SOC 2, HIPAA, FedRAMP

Amplify Limitations

  • DynamoDB as primary DB — great for scale, but NoSQL design patterns are harder than SQL
  • AppSync complexity — GraphQL subscriptions are powerful but verbose to define
  • Smaller boilerplate ecosystem — fewer community starters compared to Supabase
  • AWS lock-in — unlike Supabase, you can't self-host Amplify's services

Pricing at Scale: What You'll Actually Pay

Supabase Pricing (March 2026)

PlanCostDBBandwidthEdge Functions
Free$0500MB5GB500K invocations
Pro$25/month8GB250GB2M invocations
Team$599/monthCustomCustomCustom

Real cost at 10K MAU SaaS: ~$25/month (Pro plan) — fits comfortably with most apps.

Supabase cost cliff: Expensive compute addons ($10-$470/month for more compute), but the base Postgres instance is very capable. Database branching (preview DB per PR) is Pro-only.

Firebase Pricing

Firebase's "Spark" (free) plan is generous. The "Blaze" (pay-as-you-go) pricing can be unpredictable:

  • Firestore: $0.06 per 100K reads, $0.18 per 100K writes
  • Cloud Functions: $0.40 per 1M invocations
  • Storage: $0.026/GB

Real cost at 10K MAU SaaS: $0-50/month — very low if your queries are efficient. Can spike with N+1 patterns.

Firebase cost cliff: A misconfigured listener that reads the entire collection on every change can produce unexpected bills. Firebase's cost calculator is essential before launch.

AWS Amplify Gen 2 / AWS Pricing

Amplify itself is free — you pay for underlying AWS services:

  • DynamoDB: $0.25/GB/month + $1.25 per 1M read units
  • AppSync: $4 per 1M API calls
  • Cognito: Free up to 50K MAU, then $0.0055 per MAU
  • Lambda (for functions): $0.20 per 1M requests
  • S3 + CloudFront: $0.023/GB storage + $0.0085/GB transfer

Real cost at 10K MAU SaaS: ~$15-40/month — often cheaper than Supabase Pro, but requires more careful architecture to keep DynamoDB costs low.


Migration Paths

Moving Off Firebase to Supabase

The most common migration in 2026 is Firebase → Supabase (Firestore → Postgres):

  1. Schema design: Map Firestore document collections to Postgres tables
  2. Auth migration: Firebase Auth UIDs can be preserved in Supabase Auth's users table
  3. Data export: Firestore export to JSON via gcloud firestore export, transform and import to Postgres
  4. SDK swap: Replace firebase/firestore with @supabase/supabase-js

The hardest part is restructuring NoSQL documents to relational tables. A flat Firestore document maps cleanly; deeply nested subcollections require schema design work.

// Before (Firebase Firestore)
const user = await getDoc(doc(db, 'users', userId))
const userSubscription = await getDoc(doc(db, 'subscriptions', userId))

// After (Supabase)
const { data: user } = await supabase
  .from('users')
  .select('*, subscriptions(*)')
  .eq('id', userId)
  .single()

Head-to-Head Comparison

FactorSupabaseFirebaseAmplify Gen 2
DatabasePostgreSQL ✅Firestore (NoSQL) ⚠️DynamoDB (NoSQL) ⚠️
SQL queriesFull SQLNoNo
Self-hostable
AuthJWT/GoTrueExcellentCognito
Real-timePostgres LISTENFirestore liveAppSync subscriptions
File storageS3-compatibleCloud StorageS3
Free tier500MB DB, 1GB storageGenerous spark planAWS free tier
Cold startsNone (Postgres)Functions: yesLambda: yes
Boilerplate adoptionVery highModerateLow but growing

Methodology

  • Pricing data from Supabase (supabase.com/pricing), Firebase (firebase.google.com/pricing), AWS (aws.amazon.com/amplify/pricing), March 2026
  • Boilerplate adoption data: survey of top 50 open-source SaaS boilerplates on GitHub
  • Sources: AWS re:Invent Amplify Gen 2 announcements, Supabase blog, Firebase documentation

Compare Supabase, Firebase, and Amplify-based boilerplates on StarterPick — filter by backend technology.

Related: Supabase vs Firebase Developer Comparison 2026 · Best Boilerplates with Supabase 2026 · Self-Hosting Next.js SaaS with SST and OpenNext 2026

Comments