StitchDB vs Heroku Postgres: Plans, Backups and Migration
Heroku Postgres vs StitchDB: Heroku Postgres is a database add-on for Heroku apps, from $5 a month (Essential-0, 1 GB) to dedicated Standard and Premium servers from $50 and $200. StitchDB is a Postgres backend with a free plan and a $15.99 Pro plan that includes 10 GB of database, 7 days of point-in-time recovery, connection pooling, Auth, a REST API and Storage. Heroku is the simpler choice if your whole stack is on Heroku and stays there; StitchDB gives you more per dollar at small and medium sizes, in EU data centers only.
We make StitchDB. Heroku facts are from heroku.com/pricing and the Heroku blog, as of November 2026.
#Plan by plan
| Heroku plan | Heroku price | Storage / connections | Closest StitchDB plan | StitchDB price | Storage / connections |
|---|---|---|---|---|---|
| Essential-0 | $5 | 1 GB / 20 | Free | $0 | 500 MB / 20 direct, 1,000 pooled |
| Essential-1 | $9 | 10 GB / 20 | Pro | $15.99 | 10 GB / 100 direct, 10,000 pooled |
| Essential-2 | $20 | 32 GB / 40 | Pro + extra GB | $15.99 + $0.12/GB-month over 10 GB* | 32 GB / 100 direct, 10,000 pooled |
| Standard-0 | $50 | 64 GB, 4 GB RAM / 120 | Scale | $49 | 20 GB / 160 direct, 15,000 pooled |
| Premium-0 | $200 | 64 GB, 4 GB RAM, HA / 120 | Scale + dedicated server | $49 + server | sized by server |
* With the spend cap off; usage is charged from prepaid credit. See spend cap and usage pricing.
The comparison is not perfectly like-for-like. Heroku Standard and Premium give you a dedicated server, with stated RAM. A StitchDB project on Pro or Scale runs on a shared server with per-project limits, unless you move it to a dedicated server (Scale and Enterprise). Premium includes high availability; StitchDB doesn't list HA as a plan feature.
#Recovery: rollback vs point-in-time recovery
Heroku lists rollback of up to 4 days on Standard and 7 days on Premium. Essential plans don't list rollback.
StitchDB includes point-in-time recovery on every plan: 24 hours on Free, 7 days on Pro, 14 on Scale, 30 on Enterprise. Paid plans also get a daily restore point. And there are finer tools (Backups):
- Restore into a new branch at a moment, without touching production.
- Restore one table as it was, then put back only the rows you need.
- Recycle bin per table, which keeps every deleted row with who deleted it:
select id, deleted_at, deleted_by, "row"
from _stitch_bin.rows
where tbl = 'public.invoices'::regclass and restored_at is null
order by id desc limit 20;For a team on Essential-1 today, this is the largest practical gain: going from no rollback to a 7-day window for less than the price of Essential-2.
#Followers and forks vs read replicas and branches
Heroku's Standard plans list fork and follow support: followers are read-only copies that track the primary, and forks are copies of the database.
StitchDB equivalents:
- Read replicas on Pro and up, $0.01 per replica-hour (about $7.30 a month). REST reads (GET and HEAD to
/rest/v1/) can be answered by a replica when it is clearly closer to the visitor, each replica has its own read-only connection strings, and Scale and Enterprise can add replicas automatically under load. - Preview branches: separate databases built from your migrations, optionally with production data masked. Closer to "a fork for a pull request" than to a full copy.
#Connections
Essential plans allow 20 or 40 connections, which a few app processes with ORM pools can exhaust. StitchDB puts a pooler in front of every database:
# Long-running server or migrations: session mode
DATABASE_URL="postgresql://p_<ref>_owner:<password>@<db-host>:5432/p_<ref>?sslmode=require"
# Many short-lived connections (workers, serverless): transaction mode
DATABASE_URL="postgresql://p_<ref>_owner:<password>@<db-host>:6543/p_<ref>?sslmode=require"On Pro the pooler accepts 10,000 client connections. Session state such as LISTEN and plain SET needs session mode (pooling modes).
#What StitchDB adds beyond the database
If your Heroku app is mostly CRUD around Postgres, some of it can move into the database platform:
- Auth: e-mail and password, magic links, OAuth, phone, passkeys, SAML SSO, MFA.
- REST and GraphQL APIs generated from your schema, with Row Level Security.
- Storage with signed URLs, image resizing and an S3-compatible endpoint.
- Cron with
pg_cron, queues withpgmq, HTTP from SQL withpg_net. - Edge Functions on Deno.
You don't have to use any of it. A Heroku app can treat StitchDB as plain Postgres.
#What Heroku does better
- One platform. Add-on provisioning,
DATABASE_URLmanaged for you, and billing in one place with your dynos. - Dedicated resources and HA at Standard and Premium, with stated downtime targets.
- Isolation and compliance tiers. Private Spaces and Shield plans for teams that need them.
- Stability of what you have. In February 2026 Heroku announced a sustaining engineering model and said nothing changes for existing customers.
#What to know about StitchDB before switching
- EU-only data centers (Germany and Finland). Heroku dynos running in a US region will see transatlantic latency on every query.
- Younger platform with a smaller community.
- Pro includes one project; extra projects are $9 a project-month on Pro.
- Free REST and Auth services sleep after 60 minutes idle, though Postgres connections reach a database that is always on.
#How to move a Heroku Postgres database
- Create a StitchDB project and copy its connection string from Settings > Database.
- Put the Heroku app in maintenance mode.
- Dump and restore:
pg_dump "$(heroku config:get DATABASE_URL -a my-app)" -Fc --no-owner --no-privileges -f heroku.dump
pg_restore --no-owner --no-privileges \
-d "postgresql://p_<ref>_owner:<password>@<db-host>:5432/p_<ref>?sslmode=require" heroku.dump- Point the app at the new database through a config var of your own (the Heroku Postgres add-on manages
DATABASE_URL), deploy, and turn maintenance mode off. - Keep the Heroku database for a few days before you remove it.
For larger databases, Import from Postgres can copy directly from the connection string and report anything that needs attention first. The detailed guide is Migrate off Heroku Postgres.
#A realistic migration timeline
For a typical Essential or Standard-0 database of a few GB:
A week before. Create the StitchDB project. Restore last night's pg_dump into it. Point a staging copy of your app at it and run your test suite. Check extensions with select extname from pg_extension; and compare them with what the import check reports.
Two days before. Time a full dump and restore so you know how long the maintenance window must be. Decide on session (5432) or transaction (6543) mode for each process type: web dynos with a connection pool often work on either; worker dynos that use LISTEN/NOTIFY need session mode.
The day of. Announce a short maintenance window. Turn on Heroku maintenance mode, scale down workers, dump, restore, update the config var, deploy, scale workers back up, and turn maintenance mode off.
After. Watch error rates and query times for a day. Check that sequences continued correctly by inserting a test row in a busy table. Keep the Heroku database for at least a week before deleting it, in case you need to compare data.
If your database is larger than you can dump inside a comfortable window, test the Import from Postgres live copy first; whether it can run depends on the source allowing logical replication.
#FAQ
#Is StitchDB cheaper than Heroku Postgres?
At small sizes, yes for what's included: StitchDB Free costs $0 versus $5 for Essential-0, and Pro at $15.99 includes 10 GB plus 7 days of PITR (as of November 2026). For dedicated resources with HA, Heroku Premium is a different product.
#Can a Heroku app use StitchDB?
Yes. Any Heroku app can connect to an external Postgres over TLS. Choose session or transaction mode depending on how the app uses connections.
#Can I share query results with my team?
Yes. Scheduled reports run a query on a schedule and send the result by e-mail (with a CSV), to Slack or to a webhook, and Studio's SQL editor covers ad-hoc queries.
#What happens to my Heroku Postgres data if I do nothing?
According to Heroku's February 2026 update, nothing changes for existing customers.
Compare the plans side by side on the pricing page.