Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ Rows in alphabetical order; we make Prisma Compute and Prisma Postgres.
| **Fly.io** | In one organization: Managed Postgres runs in the organization's private network and is attached to an app | Per pull request via GitHub Actions; no database in the guide | Autostop; no CPU or RAM charge while stopped | Per organization | Included | Automated backups; point-in-time restore with `fly mpg restore --pitr-time` | pgvector; PostGIS if enabled at provisioning | $2.19 Machine + $38 Managed Postgres a month, plus $0.28 per GB of database storage ([Fly.io pricing](https://fly.io/pricing), as of October 2026) | `pg_dump` |
| **Neon** | Backend functions next to the database (Neon Functions, four AWS regions); UI on another host | Copy-on-write branch with the parent's data | Scales to zero after 5 minutes; no base fee | Functions in the database's region; UI depends on its host | PgBouncer, `-pooler` string | Instant restore on every plan, window set by plan | pgvector, PostGIS, TimescaleDB (Apache-2 features) and more | Free $0; Launch $0.106 per CU-hour for the database; Functions billed separately on paid plans (on Launch: $0.10 active and $0.025 waiting per Capacity-Hour, $0.60 per million invocations); plus your UI host ([Neon pricing](https://neon.com/pricing) and [plans](https://neon.com/docs/introduction/plans), as of October 2026) | `pg_dump` |
| **Prisma Compute + Prisma Postgres** | Yes; TypeScript on Bun, no WebSocket servers | Per pushed branch once deploy on push is set up: its own services and a new database for each one the module declares; production data not copied | App scales to zero; database per operation | One of six regions per service | PgBouncer included | Daily snapshots on paid plans, 7 or 30 days; no PITR | pgvector, pg_search, pg_trgm and other standard extensions; no PostGIS or TimescaleDB | Free: app and database, no usage billing. Starter $10 base, 5M requests and 1M operations included, memory, active vCPU and bandwidth metered ([Prisma pricing](https://www.prisma.io/pricing), as of September 2026) | `pg_dump`; the Composer module is a TypeScript file in your repo, not a runtime |
| **Railway** | Yes, a Postgres template Railway maintains; backups, PITR, HA and pooling opt-in | Per pull request | Sleeps 5 to 10 minutes after last outbound traffic with Serverless enabled; otherwise runs all month | Per environment | PgBouncer add-on you enable on the Postgres service | Volume backups by hand or on a schedule you turn on; opt-in PITR for Postgres, about 4 weeks | None added to the default template; pgvector, PostGIS and TimescaleDB as separate templates | Free $0 with $1 of credit a month after a 30-day trial; Hobby $5 with $5 of usage, then $10 per GB RAM and $20 per vCPU a month ([Railway pricing](https://railway.com/pricing) and [plan reference](https://docs.railway.com/reference/pricing/plans), as of October 2026) | `pg_dump` |
| **Railway** | Yes, a Postgres template Railway maintains; backups, PITR, HA and pooling opt-in | Per pull request, once turned on in project settings | Sleeps 5 to 10 minutes after last outbound traffic with Serverless enabled; otherwise runs all month | Per environment | PgBouncer add-on you enable on the Postgres service | Volume backups by hand or on a schedule you turn on; opt-in PITR for Postgres, about 4 weeks | None added to the default template; pgvector, PostGIS and TimescaleDB as separate templates | Free $0 with $1 of credit a month after a 30-day trial; Hobby $5 with $5 of usage, then $10 per GB RAM and $20 per vCPU a month ([Railway pricing](https://railway.com/pricing) and [plan reference](https://docs.railway.com/reference/pricing/plans), as of October 2026) | `pg_dump` |
| **Render** | Yes, managed | Per pull request on the Pro workspace ($25 a month); no data copied | Free spins down after 15 minutes; paid runs all month | Per region | PgBouncer on paid databases | PITR on paid databases, 3 or 7 days | pgvector, PostGIS, TimescaleDB (no Community features) and more | $7 web service + $6 Postgres a month ([Render pricing](https://render.com/pricing), as of September 2026) | `pg_dump` |
| **Supabase** | Backend only (Edge Functions) | Per pull request; no production data by default | Free pauses after a week idle; paid runs all month | Depends on your app host | Shared pooler; dedicated on paid plans | Daily, 7 days on Pro; PITR add-on $100 a month | Over 50 preconfigured, including pgvector and PostGIS | Free $0; Pro from $25 a month, plus your app host ([Supabase pricing](https://supabase.com/pricing), as of September 2026) | `pg_dump` |
| **Vercel + Marketplace database** | No; Marketplace database | Preview per push; a database per preview depends on the integration | Functions per use; database on its own plan | Depends on the database region | From the provider | From the provider | From the provider | Hobby $0; Pro $20 a month plus the database plan ([Vercel pricing](https://vercel.com/pricing), as of September 2026) | `pg_dump` |
Expand Down Expand Up @@ -146,7 +146,7 @@ Each entry has the same headings, and each competitor ends with how it compares

**Pricing:** Free $0 with 500 MB and no backups; Pro from $25 a month with daily backups kept 7 days; the PITR add-on is $100 a month per 7 days of retention and needs at least Small compute. [Supabase pricing](https://supabase.com/pricing), as of September 2026.

**Trade-offs:** two bills, and the direct connection is IPv6 unless you buy the IPv4 add-on.
**Trade-offs:** a second host for the app, and a second bill unless the app runs on Vercel and you create the Supabase project from the Vercel Marketplace, which bills it through your Vercel account; the direct connection is IPv6 unless you buy the IPv4 add-on.

**Compare:** [Switch from Supabase to Prisma Postgres](https://www.prisma.io/docs/guides/switch-to-prisma-postgres/from-supabase).

Expand All @@ -162,7 +162,7 @@ Each entry has the same headings, and each competitor ends with how it compares

**Pricing:** Hobby $0; Pro $20 a month with $20 of usage credit and one developer seat, active CPU from $0.128 per hour, plus the database plan. [Vercel pricing](https://vercel.com/pricing), as of September 2026.

**Trade-offs:** two products, two bills, and a database per preview depends on the integration.
**Trade-offs:** two products, though a database you create from the Marketplace bills through your Vercel account, and a database per preview depends on the integration.

**Compare:** [Prisma vs Vercel](/prisma-vs-vercel) and [Prisma Compute vs Vercel pricing](/prisma-compute-vs-vercel-pricing).

Expand All @@ -172,7 +172,7 @@ Each entry has the same headings, and each competitor ends with how it compares

Four of the seven host the app and the database with one vendor: Prisma Compute with Prisma Postgres, Railway and Render in one project, and Fly.io in one organization, where a Managed Postgres cluster runs in the organization's private network and is attached to an app. On Railway, Render and Fly.io the database is a resource next to the app, read from a connection string. On Prisma it is a dependency the service declares in its Composer module: the deploy provisions it and hands the service the connection, typed and migrated before the service starts when declared with `postgres()` and a Prisma ORM contract, a plain URL you migrate yourself when declared with `rawPostgres()`. The cost is a declaration in the repo and a TypeScript-only runtime; the return is that production and every preview branch get the same wiring.

Supabase and Neon run backend code next to the data. Supabase does not host frontends (its Compute private alpha runs backend services), and Neon's full-stack guide keeps the UI on Vercel, Netlify or another frontend host, so a web app on either has two hosts and two bills. Vercel is the app host, with the database from a Marketplace provider.
Supabase and Neon run backend code next to the data. Supabase does not host frontends (its Compute private alpha runs backend services), and Neon's full-stack guide keeps the UI on Vercel, Netlify or another frontend host, so a web app on either has two hosts, and two bills unless the frontend runs on Vercel and you create the database from the Vercel Marketplace, which bills it through your Vercel account. Vercel is the app host, with the database from a Marketplace provider.

### Considering Neon but want app hosting too?

Expand All @@ -192,7 +192,7 @@ Four things decide whether the database keeps up when traffic grows.
- **Your API holds WebSocket connections open.** Fly.io, Railway, Render and Neon Functions run those; Prisma Compute does not.
- **You are not writing TypeScript.** Prisma Compute runs TypeScript on Bun; a Python or Go API belongs on Railway, Render, Fly.io or a VPS.
- **You need more than one region, or point-in-time recovery today.** Each Prisma Compute service runs in one of six regions, and Prisma Postgres has no PITR yet.
- **You want the repository deployed with no declaration.** Railway, Render and Fly.io build the code as it is; Prisma needs a Composer declaration and two changes to each Node.js or Bun server, three if it talks to Postgres.
- **You want the repository deployed with no declaration.** Railway and Render build the code as it is, and on Fly.io `fly launch` writes a `fly.toml` and, for most languages and frameworks including Node.js, a Dockerfile into the repository for you to keep; Prisma needs a Composer declaration and two changes to each Node.js or Bun server, three if it talks to Postgres.
- **Your frontend's main requirement is a global CDN.** Put it on Vercel with Prisma Postgres or another Marketplace database.

The full list of limits lives in one place, [Where it has trade-offs](https://www.prisma.io/docs/compute/faq#where-it-has-trade-offs) in the Prisma Compute FAQ.
Expand Down Expand Up @@ -234,3 +234,4 @@ Neon (every plan), Railway (opt-in), Render (paid databases), Fly Managed Postgr
- 2026-10-12: the Fly.io row now says Managed Postgres runs in the organization's private network and is attached to an app, instead of putting app and database in one project; the Fly.io Machine price changed from $1.94 to $2.19 a month after Fly.io's price update of 2026-10-01, and Managed Postgres storage ($0.28 per GB) is listed; Neon Functions charges are listed apart from the database's CU-hour price; porting steps now say the port and `process.env` changes apply to each Node.js or Bun server and the Postgres client change only to a server that talks to Postgres, while a Next.js app uses the `nextjs` build adapter with `output: 'standalone'`, whose server binds the port itself.
- 2026-10-14: the Railway price cell now lists Railway's Free plan ($0 with $1 of credit a month after a 30-day trial), and the Railway backups cell says volume backups are taken by hand or on a schedule you turn on; the Neon Functions Free allowance is now stated per project; Railway's pricing page and docs and Neon's pricing and plans pages were checked on 2026-10-14.
- 2026-10-19: the Supabase section and the one-vendor paragraph now say Supabase Compute, which runs backend services, is a private alpha (us-west-2 only, not for production), checked against supabase.com/compute on 2026-10-19.
- 2026-10-19: the Railway previews cell now says PR environments must be turned on in project settings; the Fly.io line in "Where Prisma is the wrong choice" says `fly launch` writes a `fly.toml` and, for most languages and frameworks, a Dockerfile into the repository; the Supabase and Vercel trade-offs and the one-vendor paragraph no longer say two bills when the app runs on Vercel and the database is created from the Vercel Marketplace, which bills it through the Vercel account; checked against Railway's, Fly.io's and Vercel's docs on 2026-10-19.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: "How to host a test version of your app without replacing production (2026)"
slug: "host-a-test-version-without-replacing-production"
date: "2026-10-15"
updatedAt: "2026-10-16"
updatedAt: "2026-10-19"
authors:
- "Gregory Boch"
metaTitle: "How to host a test version of your app without replacing production (2026)"
Expand Down Expand Up @@ -133,7 +133,7 @@ A 6.5-minute walkthrough of this workflow on Prisma Compute and Prisma Postgres:

- **Test version:** preview environments, on a Pro workspace plan or higher, copy the services, datastores and environment groups defined in your Blueprint (`render.yaml`) for each pull request (in manual mode, only for pull requests whose title includes `[render preview]`), and delete the copy when the pull request is merged or closed. Set a `previewValue` on environment variables that hold production values, such as an API key, so the preview uses a test value, and check which environment groups the preview copies. Service previews instead create a temporary instance of a single service per pull request, at its own `onrender.com` URL; the instance copies the base service's settings, including environment variables such as database connection information, so change those on the preview instance.
- **Database:** datastore copies in a preview environment do not include data from the production resource; Render's docs suggest seeding sample data while the preview environment initializes.
- **Staging:** a Render project can hold separate environments such as staging and production, with environment-scoped variables and an option to block private network traffic between environments. Hobby workspaces can have up to two environments per project.
- **Staging:** a Render project can hold separate environments such as staging and production, with environment-scoped variables and, on a Pro workspace or higher, an option to block private network traffic between environments. Hobby workspaces can have up to two environments per project.

### Vercel

Expand Down Expand Up @@ -188,3 +188,4 @@ Make production deploy only from the main branch, protect that branch in GitHub
- 2026-10-15: first published; every vendor detail was checked against the vendor's docs on 2026-10-15.
- 2026-10-16: added that GitHub branch protection in a private repository needs a paid plan, and that a pull request GitHub Copilot opens for you needs a second approver, checked against GitHub's docs on 2026-10-16; step 4 now says previews have to be set up on the host first.
- 2026-10-16: added a video walkthrough of the workflow on Prisma Compute and Prisma Postgres.
- 2026-10-19: the Render staging line now says blocking private network traffic between environments needs a Pro workspace or higher, checked against Render's pricing page on 2026-10-19.
Loading
Loading