diff --git a/apps/blog/content/blog/app-hosting-platforms-with-managed-postgres-2026/index.mdx b/apps/blog/content/blog/app-hosting-platforms-with-managed-postgres-2026/index.mdx index 6b484fe635e..1026f50a4e9 100644 --- a/apps/blog/content/blog/app-hosting-platforms-with-managed-postgres-2026/index.mdx +++ b/apps/blog/content/blog/app-hosting-platforms-with-managed-postgres-2026/index.mdx @@ -2,13 +2,13 @@ title: "App hosting platforms with managed Postgres compared (2026): Prisma Compute, Railway, Render, Fly.io, Supabase, Neon and Vercel" slug: "app-hosting-platforms-with-managed-postgres-2026" date: "2026-09-30" -updatedAt: "2026-10-07" +updatedAt: "2026-10-12" authors: - "Gregory Boch" -metaTitle: "App hosting platforms with managed Postgres compared (2026)" +metaTitle: "App hosting platforms with managed Postgres compared (2026): Node.js on Prisma Compute, Railway, Render, Fly.io, Vercel" metaDescription: "Prisma Compute, Railway, Render, Fly.io, Supabase, Neon and Vercel compared for an app next to managed Postgres: previews, idle cost, pooling, backups and prices." heroImagePath: "/app-hosting-platforms-with-managed-postgres-2026/imgs/hero.svg" -heroImageAlt: "Seven app hosting platforms sorted into two groups: Prisma Compute with Prisma Postgres, Railway, Render and Fly.io run the app and a Postgres database in one project, managed everywhere except Railway, where Postgres is a template you maintain; Supabase, Neon and Vercel need a second product for the other half." +heroImageAlt: "Seven app hosting platforms sorted into two groups: Prisma Compute with Prisma Postgres, Railway, Render and Fly.io run the app and a Postgres database with one vendor, on Railway from a Postgres template Railway maintains and on Fly.io in the organization's private network; Supabase, Neon and Vercel need a second product for the other half." metaImagePath: "/app-hosting-platforms-with-managed-postgres-2026/imgs/meta.png" excerpt: "Seven ways to run an app next to a managed Postgres database in 2026, compared on previews per branch, idle cost, pooling, backups and price at small scale, with every competitor number linked to the vendor page and dated. Prisma Compute and Prisma Postgres are our product, and the rows say where they are the wrong pick." tags: @@ -16,24 +16,24 @@ tags: - "prisma-postgres" --- -For app hosting with managed Postgres in one place, Prisma Compute and Prisma Postgres run a TypeScript frontend, a Node API and their database from one GitHub repository on one plan, in the same six regions, with previews that get their own database once deploy on push is set up. Railway, Render and Fly.io are the pick for a WebSocket server or a Python or Go API (on Railway, Postgres is a template you maintain yourself), Fly.io for an app that has to run in more than one region, and Neon or Supabase if you need point-in-time recovery today. Prisma makes Prisma ORM, Prisma Postgres and Prisma Compute. +Five platforms host a Node.js app next to managed Postgres in 2026: Prisma Compute with Prisma Postgres, Railway, Render, Fly.io, and Vercel with a Marketplace database (Prisma Postgres, Neon or Supabase); Supabase and Neon run the database with functions beside it. They differ on who runs the database, what an idle app costs, previews per branch and runtime limits. Prisma Compute runs TypeScript apps built for Node.js, Bun or Next.js on Bun, next to Prisma Postgres in one project and region. Prisma makes Prisma ORM, Prisma Postgres and Prisma Compute. :::note[How we compared] -We make Prisma Compute and Prisma Postgres, and their row is labeled as our product. The criteria are the eight columns of the Quick comparison table. The Prisma cells come from Prisma's docs and pricing page; every other cell was checked against the vendor's own pricing page or docs on 29 September 2026, listed under [Sources and check dates](#sources-and-check-dates). Where a vendor page states no number, the cell says so. +We make Prisma Compute and Prisma Postgres. The comparison table and the platform sections are in alphabetical order, and the criteria are the columns of the Quick comparison table. The Prisma cells come from Prisma's docs and pricing page; every other cell was checked against the vendor's own pricing page or docs on 29 September 2026, the Railway, Neon, point-in-time recovery and Postgres extension cells again on 8 October 2026, and the Fly.io and Neon price cells and the Fly.io project cell on 12 October 2026, listed under [Sources and check dates](#sources-and-check-dates). Where a vendor page states no number, the cell says so. ::: ## Quick recommendation -A TypeScript service and its database from one GitHub repository on one plan: Prisma Compute and Prisma Postgres, Free with no usage billing, or Starter at $10 a month base plus metered compute. A WebSocket server or a Python or Go API: Render or Fly.io run the container you have next to a managed database, Railway runs it next to a Postgres template you maintain, and Fly.io runs it in more than one region. Point-in-time recovery today: Neon, Railway (opt-in), Render (paid databases), Fly Managed Postgres or Supabase (paid add-on), because Prisma Postgres does not have it yet. +A TypeScript service and its database from one GitHub repository in one project: Prisma Compute and Prisma Postgres. The Free plan has no usage billing; Starter is a $10 base, and Compute memory, CPU and bandwidth are metered on top. A WebSocket server or a Python or Go API: Render or Fly.io run the container you have next to a managed database, Railway runs it next to a Postgres template Railway maintains, and Fly.io runs it in more than one region. Point-in-time recovery today: Neon, Railway (opt-in), Render (paid databases), Fly Managed Postgres or Supabase (paid add-on), because Prisma Postgres does not have it yet. | Your situation | Pick | Why | | --- | --- | --- | -| I just want it deployed from GitHub, everything in one project | Prisma Compute + Prisma Postgres | One plan for both. Add a Composer declaration, run your build, deploy with `npx prisma deploy module.ts` (it does not build for you), then connect the repo and add the `prisma/cloud-deploy-action` workflow for deploy on push | -| Small production app on one plan, previews per branch | Prisma Compute + Prisma Postgres | Starter $10 base, 5M requests and 1M operations included. Once deploy on push is set up, every pushed branch gets a preview with its own database, built from your migrations | +| I just want it deployed from GitHub, everything in one project | Prisma Compute + Prisma Postgres | App and database in one project. Add a Prisma Composer declaration and make two changes to each Node.js or Bun server, three if it talks to Postgres, run your build, deploy with `npx prisma deploy module.ts` (it does not build for you), then connect the repo and add the `prisma/cloud-deploy-action` workflow for deploy on push | +| Small production app with previews per branch | Prisma Compute + Prisma Postgres | Starter $10 base, 5M requests and 1M operations included. Once deploy on push is set up, every pushed branch gets a preview with its own services and, for databases declared in the Composer module, its own new database; production data is not copied | | REST, tRPC or GraphQL API + TypeScript frontend + Postgres from GitHub | Prisma Compute + Prisma Postgres | One project, one region, PgBouncer pooling included | | Leaving Netlify with a full-stack TypeScript app and Postgres | Prisma Compute + Prisma Postgres | The frontend, the API and the database deploy from one repository; [Netlify alternatives for a full-stack TypeScript app](/prisma-vs-netlify) has the feature-parity table | | Just hosted Postgres, free, standard tools | Prisma Postgres | PostgreSQL 17, 1.01 GB and 200,000 operations a month on Free, any Postgres client | -| Holds WebSocket connections open | Fly.io, Railway, Render | Prisma Compute does not run WebSocket servers | +| Holds WebSocket connections open | Fly.io, Neon Functions, Railway, Render | Prisma Compute does not run WebSocket servers | | Python or Go API | Railway, Render, Fly.io | Prisma Compute runs TypeScript on Bun | | More than one region | Fly.io | One region per Prisma Compute service, from six | | Need point-in-time recovery today | Neon, Railway (opt-in), Render (paid databases), Fly Managed Postgres, Supabase (paid add-on) | Prisma Postgres has daily snapshots on paid plans, no PITR yet | @@ -42,33 +42,69 @@ A TypeScript service and its database from one GitHub repository on one plan: Pr ## Quick comparison -| | App + DB in one project | Previews per branch | Idle cost | Same-region networking | Pooling | Backups / PITR | Price at small scale | Exit path | -| --- | --- | --- | --- | --- | --- | --- | --- | --- | -| **Prisma Compute + Prisma Postgres** (our product) | Yes; TypeScript on Bun, no WebSocket servers | Per pushed branch, own database, once deploy on push is set up | 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 | 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 you maintain (unmanaged) | 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 | Scheduled volume backups; opt-in PITR for Postgres, about 4 weeks | 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 September 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 | $7 web service + $6 Postgres a month ([Render pricing](https://render.com/pricing), as of September 2026) | `pg_dump` | -| **Fly.io** | Yes, Managed Postgres | 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` | $1.94 Machine + $38 Managed Postgres a month ([Fly.io pricing](https://fly.io/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 | Free $0; Pro from $25 a month, plus your app host ([Supabase pricing](https://supabase.com/pricing), as of September 2026) | `pg_dump` | -| **Neon** | Backend only (Functions, four AWS regions) | Copy-on-write branch with the parent's data | Scales to zero after 5 minutes; no base fee | Depends on your app host | PgBouncer, `-pooler` string | Instant restore, 6 hours to 30 days by plan | Free $0; Launch $0.106 per CU-hour, plus your app host ([Neon pricing](https://neon.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 | Hobby $0; Pro $20 a month plus the database plan ([Vercel pricing](https://vercel.com/pricing), as of September 2026) | `pg_dump` | +Rows in alphabetical order; we make Prisma Compute and Prisma Postgres. -## The platforms, ranked by the stated criteria +| | App + DB in one project | Preview / staging per branch | Idle cost | Same-region networking | Pooling | Backups / PITR | Postgres extensions | Price at small scale | Exit path | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| **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 | Scheduled volume backups; opt-in PITR for Postgres, about 4 weeks | None added to the default template; pgvector, PostGIS and TimescaleDB as separate templates | 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 September 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` | -### 1. Prisma Compute + Prisma Postgres (our product) +## The seven platforms, A to Z -**Best for:** a TypeScript frontend and Node API deployed from one GitHub repository next to their database, on one plan. +Each entry has the same headings, and each competitor ends with how it compares with Prisma Compute + Prisma Postgres. We make Prisma Compute and Prisma Postgres; the other six were checked against their own docs on 29 September 2026, and the details later updates changed again on 8 and 12 October 2026. -**What it does:** Prisma Compute, generally available since August 2026, runs TypeScript HTTP services (Node.js, Bun or Next.js) next to Prisma Postgres. With Prisma Composer you describe your whole app in TypeScript: `npx prisma dev module.ts` runs it on your laptop, and `npx prisma deploy module.ts` provisions the services on Prisma Compute and the databases on Prisma Postgres, applying the committed migrations to any database declared with `postgres()` and a Prisma ORM contract before its service starts. An existing repository adds a declaration (`service.ts` per server plus `module.ts`) that a coding agent can write from the [porting guide](https://www.prisma.io/docs/composer/porting-an-app) prompt. +### Fly.io + +**Best for:** an app in more than one region, or one that holds WebSocket connections open, with Managed Postgres in the same organization. + +**What it does:** runs Machines in 17 regions, most of which also host Fly Managed Postgres, with backups and pooling on every database plan. A Managed Postgres cluster runs in the organization's private network, and attaching it to an app sets the connection string as a secret on that app. + +**Scaling behavior:** Machines autostop when idle and autostart on request; a stopped Machine pays only for its root filesystem. + +**Pricing:** a shared-cpu-1x 256 MB Machine at $2.19 a month plus Managed Postgres Basic at $38 and database storage at $0.28 per GB, Machines billed by the second. [Fly.io pricing](https://fly.io/pricing), as of October 2026. + +**Trade-offs:** Managed Postgres plans start at $38 a month, and the review-apps guide creates an app per pull request but no database. Managed Postgres restores to a point in time with [`fly mpg restore --pitr-time`](https://fly.io/docs/flyctl/mpg-restore/). + +**Compare:** [Fly.io vs Prisma Compute](/where-to-host-typescript-frontend-node-api-postgres#4-flyio). + +**vs Prisma Compute + Prisma Postgres:** Fly.io runs Machines in more than one region, holds WebSocket connections open and runs any language, and its Managed Postgres includes high availability and pooling on every plan plus point-in-time restore; Prisma Compute + Prisma Postgres starts on a Free plan for the app and the database, where Fly Managed Postgres starts at $38 a month, and gives every pushed branch a preview with a new database for each one the Composer module declares, where Fly's review-apps guide creates no database. + +### Neon, plus a host for the frontend + +**Best for:** branches with production-shaped data per pull request, point-in-time restore, and no monthly floor. + +**What it does:** serverless Postgres billed by the CU-hour (its pricing page now calls it Lakebase Postgres). Neon Functions (generally available since 2026-09-17, also on Free) run Node.js 24 HTTP handlers next to the database, including WebSockets and SSE, in four AWS regions today; Neon's full-stack guide keeps the UI on Vercel, Netlify or another frontend host. + +**Scaling behavior:** compute scales to zero after 5 idle minutes, up to 16 CU on Launch; an always-on API pays for every hour awake. + +**Pricing:** Free $0 with 100 CU-hours and 1 GB of storage per project, up to 20 GB across all projects; Launch $0.106 per CU-hour and $0.35 per GB-month with restore up to 7 days; Scale $0.222 per CU-hour with up to 30 days. Functions are billed separately: on Launch, $0.10 per active and $0.025 per waiting Capacity-Hour plus $0.60 per million invocations, and Free includes 10 active and 400 waiting Capacity-Hours and 1 million invocations a month. [Neon pricing](https://neon.com/pricing) and [plans](https://neon.com/docs/introduction/plans), as of October 2026. + +**Trade-offs:** the frontend needs a second host, and extra branches ($1.50 per branch-month) and restore history ($0.20 per GB-month) add up. + +**Compare:** [Neon vs Prisma Postgres for app hosting in one place](/neon-vs-prisma-postgres-app-hosting-in-one-place) and the [pricing comparison](/prisma-postgres-vs-neon-pricing-2026). + +**vs Prisma Compute + Prisma Postgres:** Neon has point-in-time restore on every plan, copy-on-write branches with the parent's data, and Functions that hold WebSocket connections and run on cron triggers; Prisma Compute also runs the server that serves the frontend, so a web app and its database run in one project and region, and Prisma Postgres bills per operation instead of by compute hours. + +### Prisma Compute + Prisma Postgres + +**Best for:** a TypeScript frontend and Node API deployed from one GitHub repository next to their database, in one project. + +**What it does:** Prisma Compute, generally available since August 2026, runs TypeScript HTTP services (Node.js, Bun or Next.js) next to Prisma Postgres. With Prisma Composer you describe your whole app in TypeScript: `npx prisma dev module.ts` runs it on your laptop, and `npx prisma deploy module.ts` provisions the services on Prisma Compute and the databases on Prisma Postgres, applying the committed migrations to any database declared with `postgres()` and a Prisma ORM contract before its service starts. An existing repository adds a declaration (a `service.ts` per server plus one `module.ts`) and makes two changes to each Node.js or Bun server, three if it talks to Postgres: read the port from `service.port()` and bind 0.0.0.0, turn other `process.env` reads into service inputs or dependencies, and, in a server that talks to Postgres, build the client from the injected `db.url`. A Next.js app uses the `nextjs` build adapter with `output: 'standalone'` instead, and its standalone server binds the port itself. A coding agent can do this from the [porting guide](https://www.prisma.io/docs/composer/porting-an-app) prompt. **Scaling behavior:** the app scales to zero when idle; the database bills per operation. **Pricing:** Free $0 for app and database, no usage billing, no credit card. Starter $10 base with 5M requests and 1M operations included; memory ($0.006 per GB-hour), active vCPU ($0.064 per vCPU-hour) and bandwidth ($0.025 per GB) metered from the first unit. [Prisma pricing](https://www.prisma.io/pricing), as of September 2026. -**Trade-offs:** we make both products and list them first for the situations above, and we checked the other six against their own docs on 29 September 2026. Railway, Render and Fly.io run WebSocket servers; Prisma Compute does not. One region per service from six, a Bun runtime, 60 seconds to send the first byte, daily snapshots on paid plans only, and no point-in-time recovery yet. [Composer limitations](https://www.prisma.io/docs/composer/limitations) lists what the declaration does not cover. +**Trade-offs:** Railway, Render, Fly.io and Neon Functions run WebSocket servers; Prisma Compute does not. One region per service from six, a Bun runtime, 60 seconds to send the first byte, daily snapshots on paid plans only, and no point-in-time recovery yet. [Composer limitations](https://www.prisma.io/docs/composer/limitations) lists what the declaration does not cover. **Compare:** [Where to host a TypeScript frontend, Node API and Postgres](/where-to-host-typescript-frontend-node-api-postgres), and for a move off Netlify, [Netlify alternatives for a full-stack TypeScript app with Postgres](/prisma-vs-netlify). -### 2. Railway +### Railway **Best for:** the container you have, in any language, next to Postgres, with an environment per pull request. @@ -78,11 +114,13 @@ A TypeScript service and its database from one GitHub repository on one plan: Pr **Pricing:** a Free plan for one project after a 30-day trial ($0 with $1 of credit a month in the plan reference; $1 a month on the pricing card); Hobby $5 a month with $5 of usage included, then $10 per GB of 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 September 2026. -**Trade-offs:** Postgres is a template that Railway's [PostgreSQL guide](https://docs.railway.com/guides/postgresql) calls unmanaged, so configuration, upgrades and recovery are yours. Sleeping is opt-in per service: without the Serverless setting, a service runs and bills RAM and vCPU all month. +**Trade-offs:** Railway maintains its Postgres template; backups, point-in-time recovery, high availability and PgBouncer pooling are opt-in in [its docs](https://docs.railway.com/databases#what-railway-manages) (checked 2026-10-08). Sleeping is opt-in per service: without the Serverless setting, a service runs and bills RAM and vCPU all month. **Compare:** [Railway vs Prisma Compute](/where-to-host-typescript-frontend-node-api-postgres#2-railway). -### 3. Render +**vs Prisma Compute + Prisma Postgres:** Railway builds the repository in any language Railpack supports, or from its Dockerfile, holds WebSocket connections open and offers the opt-in Postgres features above; Prisma Compute needs a Prisma Composer declaration and two changes to each Node.js or Bun server, three if it talks to Postgres, and in return gives every pushed branch, not only pull requests, a preview with its own services and a new database for each one the Composer module declares, and scales an idle app to zero without a setting. + +### Render **Best for:** managed Postgres with point-in-time recovery next to a container you keep as it is. @@ -96,21 +134,9 @@ A TypeScript service and its database from one GitHub repository on one plan: Pr **Compare:** [Render vs Prisma Compute](/where-to-host-typescript-frontend-node-api-postgres#3-render). -### 4. Fly.io - -**Best for:** an app in more than one region, or one that holds WebSocket connections open, with Managed Postgres in the same organization. - -**What it does:** runs Machines in 17 regions, most of which also host Fly Managed Postgres, with backups and pooling on every database plan. - -**Scaling behavior:** Machines autostop when idle and autostart on request; a stopped Machine pays only for its root filesystem. - -**Pricing:** a shared-cpu-1x 256 MB Machine at $1.94 a month plus Managed Postgres Basic at $38, Machines billed by the second. [Fly.io pricing](https://fly.io/pricing), as of September 2026. - -**Trade-offs:** no free database tier, and the review-apps guide creates an app per pull request but no database. Managed Postgres restores to a point in time with [`fly mpg restore --pitr-time`](https://fly.io/docs/flyctl/mpg-restore/). +**vs Prisma Compute + Prisma Postgres:** Render runs WebSocket servers and APIs in any language next to managed Postgres, with point-in-time recovery on paid databases; Prisma's Free plan has no time limit, where Render's free Postgres expires after 30 days, and Prisma Compute scales an idle app to zero on every plan and gives every pushed branch a preview with a new database for each one the Composer module declares, where Render's full preview environments need the Pro workspace. -**Compare:** [Fly.io vs Prisma Compute](/where-to-host-typescript-frontend-node-api-postgres#4-flyio). - -### 5. Supabase, plus a host for the app +### Supabase, plus a host for the app **Best for:** Postgres with auth, storage and Edge Functions from one vendor, with the frontend elsewhere. @@ -124,21 +150,9 @@ A TypeScript service and its database from one GitHub repository on one plan: Pr **Compare:** [Switch from Supabase to Prisma Postgres](https://www.prisma.io/docs/guides/switch-to-prisma-postgres/from-supabase). -### 6. Neon, plus a host for the frontend - -**Best for:** branches with production-shaped data per pull request, point-in-time restore, and no monthly floor. - -**What it does:** serverless Postgres billed by the CU-hour (its pricing page now calls it Lakebase Postgres). Neon Functions run Node.js 24 backends in four AWS regions, one deployment per branch; a website still needs another host. - -**Scaling behavior:** compute scales to zero after 5 idle minutes, up to 16 CU on Launch; an always-on API pays for every hour awake. - -**Pricing:** Free $0 with 100 CU-hours and 1 GB of storage per project, up to 20 GB across all projects; Launch $0.106 per CU-hour and $0.35 per GB-month with restore up to 7 days; Scale $0.222 per CU-hour with up to 30 days. [Neon pricing](https://neon.com/pricing) and [plans](https://neon.com/docs/introduction/plans), as of October 2026. - -**Trade-offs:** the frontend needs a second host, and extra branches ($1.50 per branch-month) and restore history ($0.20 per GB-month) add up. - -**Compare:** [Neon vs Prisma Postgres for app hosting in one place](/neon-vs-prisma-postgres-app-hosting-in-one-place) and the [pricing comparison](/prisma-postgres-vs-neon-pricing-2026). +**vs Prisma Compute + Prisma Postgres:** Supabase bundles auth, storage and Edge Functions with Postgres and sells point-in-time recovery as an add-on; Prisma Compute also runs the app server and the API, so the app and Prisma Postgres run in one project from one vendor, and Prisma's Free plan includes 1.01 GB of storage. -### 7. Vercel, plus a Marketplace database +### Vercel, plus a Marketplace database **Best for:** a frontend that needs a global CDN above everything else. @@ -152,11 +166,17 @@ A TypeScript service and its database from one GitHub repository on one plan: Pr **Compare:** [Prisma vs Vercel](/prisma-vs-vercel) and [Prisma Compute vs Vercel pricing](/prisma-compute-vs-vercel-pricing). +**vs Prisma Compute + Prisma Postgres:** Vercel serves the frontend from a global CDN with a preview deployment per push, and lets you pick the database from the Marketplace, Prisma Postgres included; Prisma Compute runs a frontend served by Next.js, Astro, TanStack Start or your own Node.js or Bun server, and the API, next to Prisma Postgres in one project and region, and every pushed branch gets a preview with a new database for each one the Composer module declares, instead of depending on the integration. + ## Platforms with app hosting and Postgres in one place -Four of the seven host the app and the database in one project: Prisma Compute with Prisma Postgres, Railway, Render and Fly.io. On Railway, Render and Fly.io it 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. +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, 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. + +### Considering Neon but want app hosting too? -Supabase and Neon run backend code next to the data but not a frontend, so a web app on either has two hosts and two bills. Vercel is the app host, with the database from a Marketplace provider. +Neon Functions (generally available since 2026-09-17, also on Free) run Node.js 24 HTTP handlers next to the database, including WebSockets and SSE; Neon's full-stack guide keeps the UI on Vercel, Netlify or another frontend host (neon.com, checked 2026-10-08). Functions are available today for Neon projects in four AWS regions. To keep the frontend, the API and Postgres with one vendor instead, Prisma Compute with Prisma Postgres, Railway, Render and Fly.io each host all three. [Neon alternatives with app hosting and Postgres in one place](/neon-vs-prisma-postgres-app-hosting-in-one-place) compares Neon with Prisma Compute and Prisma Postgres, Railway, Render and Supabase. ## Managed Postgres hosting options that scale @@ -169,10 +189,10 @@ Four things decide whether the database keeps up when traffic grows. ## Where Prisma is the wrong choice -- **Your API holds WebSocket connections open.** Fly.io, Railway and Render run those; Prisma Compute does not. +- **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. +- **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. - **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. @@ -181,7 +201,7 @@ The full list of limits lives in one place, [Where it has trade-offs](https://ww ### Can I host my existing GitHub repo on Prisma Compute? -Yes, once the repository carries a Composer declaration: a `service.ts` for each server and a `module.ts` that composes them, which a coding agent can write from the [porting guide](https://www.prisma.io/docs/composer/porting-an-app) prompt. Run your build, then deploy with `npx prisma deploy module.ts`, which packages the build output and does not build for you. For deploy on push, connect the repository and add the `prisma/cloud-deploy-action` workflow; a connected repository without the workflow deploys nothing. +Yes, once the repository carries a Composer declaration: a `service.ts` for each server and a `module.ts` that composes them, plus two changes to each Node.js or Bun server, and a third if it talks to Postgres. A Node.js or Bun server reads its port from `service.port()` and binds 0.0.0.0, and its other `process.env` reads become service inputs or dependencies; a server that talks to Postgres declares a `rawPostgres()` dependency and builds its client from the injected `db.url`. A Next.js app instead uses the `nextjs` build adapter with `output: 'standalone'`, whose standalone server binds the port itself. A coding agent can make these changes from the [porting guide](https://www.prisma.io/docs/composer/porting-an-app) prompt. Run your build, then deploy with `npx prisma deploy module.ts`, which packages the build output and does not build for you. For deploy on push, connect the repository and add the `prisma/cloud-deploy-action` workflow; a connected repository without the workflow deploys nothing. ### Do I need Prisma ORM to use Prisma Compute or Prisma Postgres? @@ -189,19 +209,19 @@ No: Prisma Postgres runs PostgreSQL 17 and any Postgres client works, whether `p ### Which managed Postgres options have point-in-time recovery? -Neon on every plan (6 hours on Free, up to 7 days on Launch, 30 on Scale), Railway for Postgres (roughly 4 weeks), Render on paid databases (3 days on Hobby workspaces, 7 on Pro), Fly Managed Postgres through `fly mpg restore --pitr-time`, and Supabase as a $100-a-month add-on per 7 days of retention. Prisma Postgres has daily snapshots on paid plans, kept 7 days on Starter and Pro and 30 on Business, and no point-in-time recovery yet. +Neon (every plan), Railway (opt-in), Render (paid databases), Fly Managed Postgres (`fly mpg restore --pitr-time`) and Supabase (add-on) have point-in-time recovery. Prisma Postgres does not yet and restores from daily snapshots on paid plans. ## Sources and check dates | Vendor | Pages | Checked | | --- | --- | --- | -| Prisma | [Pricing](https://www.prisma.io/pricing), [Compute pricing](https://www.prisma.io/docs/compute/pricing), [Compute limitations](https://www.prisma.io/docs/compute/limitations), [Deploy on push](https://www.prisma.io/docs/compute/deploy-on-push), [Port an existing app](https://www.prisma.io/docs/composer/porting-an-app), [Composer databases](https://www.prisma.io/docs/composer/databases), [Backups](https://www.prisma.io/docs/postgres/database/backups), [Connection pooling](https://www.prisma.io/docs/postgres/database/connection-pooling) | 2026-09-29 | -| Railway | [Pricing](https://railway.com/pricing), [Plan reference](https://docs.railway.com/reference/pricing/plans), [Environments](https://docs.railway.com/environments), [Backups](https://docs.railway.com/reference/backups), [Point-in-time recovery](https://docs.railway.com/volumes/point-in-time-recovery), [Serverless](https://docs.railway.com/reference/app-sleeping), [PostgreSQL](https://docs.railway.com/guides/postgresql), [Connection pooling](https://docs.railway.com/databases/postgresql-pgbouncer), [Private networking](https://docs.railway.com/guides/private-networking) | 2026-09-29 | -| Render | [Pricing](https://render.com/pricing), [Preview environments](https://render.com/docs/preview-environments), [Postgres backups](https://render.com/docs/postgresql-backups), [Connection pooling](https://render.com/docs/postgresql-connection-pooling), [Free instances](https://render.com/docs/free), [Private network](https://render.com/docs/private-network) | 2026-09-29 | -| Fly.io | [Pricing](https://fly.io/pricing), [Managed Postgres](https://docs.fly.io/mpg/overview/), [mpg restore](https://fly.io/docs/flyctl/mpg-restore/), [Autostop and autostart](https://docs.fly.io/launch/autostop-autostart/), [Regions](https://docs.fly.io/reference/regions/), [Review apps](https://docs.fly.io/blueprints/review-apps-guide/), [Private networking](https://docs.fly.io/networking/private-networking/) | 2026-09-29 | -| Supabase | [Pricing](https://supabase.com/pricing), [Backups](https://supabase.com/docs/guides/platform/backups), [Branching](https://supabase.com/docs/guides/deployment/branching), [Connecting to Postgres](https://supabase.com/docs/guides/database/connecting-to-postgres), [Edge Functions](https://supabase.com/docs/guides/functions) | 2026-09-29 | -| Neon | [Pricing](https://neon.com/pricing), [Plans](https://neon.com/docs/introduction/plans), [Scale to zero](https://neon.com/docs/introduction/scale-to-zero), [Connection pooling](https://neon.com/docs/connect/connection-pooling), [Neon Functions](https://neon.com/docs/compute/functions/overview) | 2026-09-29 | -| Vercel | [Pricing](https://vercel.com/pricing), [Fluid compute pricing](https://vercel.com/docs/fluid-compute/pricing), [Postgres on Vercel](https://vercel.com/docs/postgres), [Environments](https://vercel.com/docs/deployments/environments), [Prisma Postgres integration](https://vercel.com/marketplace/prisma) | 2026-09-29 | +| Prisma | [Pricing](https://www.prisma.io/pricing), [Compute pricing](https://www.prisma.io/docs/compute/pricing), [Compute limitations](https://www.prisma.io/docs/compute/limitations), [Deploy on push](https://www.prisma.io/docs/compute/deploy-on-push), [Port an existing app](https://www.prisma.io/docs/composer/porting-an-app), [Service input](https://www.prisma.io/docs/composer/service-input), [Composer databases](https://www.prisma.io/docs/composer/databases), [Backups](https://www.prisma.io/docs/postgres/database/backups), [Connection pooling](https://www.prisma.io/docs/postgres/database/connection-pooling), [Postgres extensions](https://www.prisma.io/docs/postgres/database/postgres-extensions) | 2026-09-29; pricing, deploy on push and extensions 2026-10-08; porting guide 2026-10-08 and 2026-10-12; service input 2026-10-12 | +| Railway | [Pricing](https://railway.com/pricing), [Plan reference](https://docs.railway.com/reference/pricing/plans), [Environments](https://docs.railway.com/environments), [Backups](https://docs.railway.com/reference/backups), [Point-in-time recovery](https://docs.railway.com/volumes/point-in-time-recovery), [Serverless](https://docs.railway.com/reference/app-sleeping), [PostgreSQL template](https://docs.railway.com/databases/postgresql), [What Railway manages](https://docs.railway.com/databases#what-railway-manages), [Connection pooling](https://docs.railway.com/databases/postgresql-pgbouncer), [Private networking](https://docs.railway.com/guides/private-networking) | 2026-09-29; PostgreSQL template, What Railway manages, point-in-time recovery and pricing 2026-10-08 | +| Render | [Pricing](https://render.com/pricing), [Preview environments](https://render.com/docs/preview-environments), [Postgres backups](https://render.com/docs/postgresql-backups), [Connection pooling](https://render.com/docs/postgresql-connection-pooling), [Free instances](https://render.com/docs/free), [Private network](https://render.com/docs/private-network), [Postgres extensions](https://render.com/docs/postgresql-extensions) | 2026-09-29; Free instances, Postgres backups and extensions 2026-10-08 | +| Fly.io | [Pricing](https://fly.io/pricing), [Managed Postgres](https://fly.io/docs/mpg/), [Attach an app](https://docs.fly.io/postgres/create-and-connect), [mpg restore](https://fly.io/docs/flyctl/mpg-restore/), [Autostop and autostart](https://docs.fly.io/launch/autostop-autostart/), [Regions](https://docs.fly.io/reference/regions/), [Review apps](https://docs.fly.io/blueprints/review-apps-guide/), [Private networking](https://docs.fly.io/networking/private-networking/) | 2026-09-29; Managed Postgres and mpg restore 2026-10-08; pricing, Managed Postgres and Attach an app 2026-10-12 | +| Supabase | [Pricing](https://supabase.com/pricing), [Backups](https://supabase.com/docs/guides/platform/backups), [Branching](https://supabase.com/docs/guides/deployment/branching), [Connecting to Postgres](https://supabase.com/docs/guides/database/connecting-to-postgres), [Edge Functions](https://supabase.com/docs/guides/functions), [Extensions](https://supabase.com/docs/guides/database/extensions) | 2026-09-29; pricing, backups and extensions 2026-10-08 | +| Neon | [Pricing](https://neon.com/pricing), [Plans](https://neon.com/docs/introduction/plans), [Scale to zero](https://neon.com/docs/introduction/scale-to-zero), [Connection pooling](https://neon.com/docs/connect/connection-pooling), [Neon Functions](https://neon.com/docs/compute/functions/overview), [Functions runtime limits](https://neon.com/docs/compute/functions/reference/runtime-limits), [Full-stack apps](https://neon.com/use-cases/full-stack-apps), [Postgres extensions](https://neon.com/docs/extensions/pg-extensions) | 2026-09-29; pricing, scale to zero, Functions, full-stack apps and extensions 2026-10-08; pricing and plans (Functions billing) 2026-10-12 | +| Vercel | [Pricing](https://vercel.com/pricing), [Fluid compute pricing](https://vercel.com/docs/fluid-compute/pricing), [Postgres on Vercel](https://vercel.com/docs/postgres), [Environments](https://vercel.com/docs/deployments/environments), [Prisma Postgres integration](https://vercel.com/marketplace/prisma) | 2026-09-29; Postgres on Vercel 2026-10-08 | ## Update history @@ -209,3 +229,5 @@ Neon on every plan (6 hours on Free, up to 7 days on Launch, 30 on Scale), Railw - 2026-10-05: Neon Free storage updated from 0.5 GB to 1 GB per project, up to 20 GB across all projects, after Neon raised the limit; the Pricing line in the Neon section was re-checked against Neon's pricing and plans pages on 2026-10-05. - 2026-10-07: added a "Leaving Netlify" row to the Quick recommendation and a link to the Netlify alternatives post from the Prisma entry; no prices or vendor facts changed. - 2026-10-07: Prisma Postgres Free storage updated from 500 MB to 1.01 GB, matching the pricing page. +- 2026-10-08: the comparison table and platform sections are now in alphabetical order; Railway's Postgres row now says Railway maintains its template, after Railway's docs changed on 2026-10-07; Neon Functions are described as generally available; a Postgres extensions column was added; Railway, Neon, Fly.io and extension facts were checked on 2026-10-08. +- 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. diff --git a/apps/blog/content/blog/serverless-postgres/index.mdx b/apps/blog/content/blog/serverless-postgres/index.mdx index d1e8302d6d3..50f5f8f8266 100644 --- a/apps/blog/content/blog/serverless-postgres/index.mdx +++ b/apps/blog/content/blog/serverless-postgres/index.mdx @@ -2,7 +2,7 @@ title: "Serverless Postgres: How It Works and How to Choose a Provider" slug: "serverless-postgres" date: "2026-07-09" -updatedAt: "2026-10-07" +updatedAt: "2026-10-08" authors: - "Martin Janse van Rensburg" tags: @@ -39,7 +39,7 @@ Walk the tree, or read the guidance beneath it. - **Spiky or scheduled workloads (cron jobs, internal tools, dev/test fleets):** compute-time billing with scale-to-zero was built for this. Neon, or Aurora if you're already on AWS and can tolerate ~15-second resumes. - **User-facing apps that go idle but have latency-sensitive users:** this is where cold starts hurt. Either keep the database always ready and pay per query (Prisma Postgres), disable auto-suspend on Neon, or run a small always-on instance on PlanetScale ($5) or paid Supabase ($25). The [cost comparison](#the-cost-crossover) below shows how to pick between them. - **Steady, high-throughput production:** always-on dedicated capacity wins on price-per-query at sustained load. PlanetScale (from $5 single node, $50 Metal), or Aurora sized for the load. -- **Many small databases (per-tenant, per-user, per-AI-agent):** account-level metering across a fleet beats per-database pricing. Prisma Postgres meters operations across all databases on one plan; Neon's per-project free allowance also stretches far. +- **Many small databases (per-tenant, per-user, per-AI-agent):** account-level metering across a fleet beats per-database pricing. Prisma Postgres meters operations across all databases in a workspace; Neon's per-project free allowance also stretches far. - **You want more than a database:** for auth, storage, and realtime out of the box, Supabase. For app hosting alongside the database, Prisma pairs Prisma Postgres with [Prisma Compute](https://www.prisma.io/docs/compute) (TypeScript app hosting, generally available since August 2026) and the ORM as one platform. ## The two decisions that matter @@ -89,7 +89,7 @@ Managed Postgres on unikernels in microVMs, designed so databases are always rea - **Bills for:** operations, defined on the [pricing page](https://www.prisma.io/pricing) as "each time you interact with your database, no matter the compute time. We count the Prisma ORM queries you make, not the SQL statements you run." Check the pricing docs for how non-ORM queries count. - **Idle behaviour:** no scale-to-zero and no cold starts; databases stay ready. - **Free / entry:** 200,000 operations, 1.01 GB, and 50 databases, no card; paid from $10/mo (1M operations, 10 GB, then $0.008 per 1,000) to $129/mo (50M operations). Allowances are account-wide, not per database. -- **Watch out for:** no database branching yet (separate databases are the substitute); less operational track record than Aurora or Supabase; at sustained high query volume the per-operation math can exceed always-on billing (see the [cost comparison](#the-cost-crossover)). +- **Watch out for:** no copy-on-write database copies yet (separate databases are the substitute: on Prisma Compute, every pushed branch gets a preview with its own services and, for databases declared in the Prisma Composer module, its own new database; production data is not copied); less operational track record than Aurora or Supabase; at sustained high query volume the per-operation math can exceed always-on billing (see the [cost comparison](#the-cost-crossover)). ### Neon @@ -144,7 +144,7 @@ Below that crossover, operation billing keeps you off always-on costs; above it, Beyond billing and idle behavior, a production choice touches a few more things. They rarely decide the shortlist, but they can break a tie: -- **Branching.** Copy-on-write storage lets several providers fork a database like a Git branch for previews or migration tests. Neon includes 10 branches per project free; Supabase bills $0.01344 per branch-hour; PlanetScale runs each branch as its own billed cluster. Prisma Postgres has no branching yet (its substitute is separate databases: 50 free, 1,000 on paid). +- **Branching.** Copy-on-write storage lets several providers fork a database like a Git branch for previews or migration tests. Neon includes 10 branches per project free; Supabase bills $0.01344 per branch-hour; PlanetScale runs each branch as its own billed cluster. Prisma Postgres has no copy-on-write copies yet; its substitute is separate databases (50 free, 1,000 on paid). - **Connection pooling.** Serverless functions open connections fast, and Postgres tolerates a limited number. Prisma Postgres, Neon, and Supabase build in a pooler. On Aurora the answer is RDS Proxy, a separately billed service that holds connections open and, as a result, prevents auto-pause from ever engaging. - **Ecosystem.** Aurora buys into the full AWS stack; Supabase bundles auth, storage, and realtime; PlanetScale brings its Vitess and Metal operational heritage. diff --git a/apps/blog/public/app-hosting-platforms-with-managed-postgres-2026/imgs/hero.svg b/apps/blog/public/app-hosting-platforms-with-managed-postgres-2026/imgs/hero.svg index dfd8d30eb12..699017213b3 100644 --- a/apps/blog/public/app-hosting-platforms-with-managed-postgres-2026/imgs/hero.svg +++ b/apps/blog/public/app-hosting-platforms-with-managed-postgres-2026/imgs/hero.svg @@ -1,6 +1,6 @@ App hosting platforms with managed Postgres compared (2026) - Seven app hosting platforms sorted into two groups: four that run the app and a managed Postgres database in one project, and three where the database and the app host are two products. Prisma blog cover, 2026 brand. + Seven app hosting platforms sorted into two groups: four that run the app and a managed Postgres database with one vendor, and three where the database and the app host are two products. Prisma blog cover, 2026 brand.