Heroku Postgres 15 Upgrade Planning Before Q3 2026 End of Life — when and how should I migrate?
Plan the next database major upgrade before Heroku Postgres 15 reaches end of life in Q3 2026 and becomes eligible for forced upgrade attempts and access restrictions.
Blockers
- package/heroku-postgres-15 — EOL 2026-Q3
- package/heroku-postgres-16 — EOL 2027-Q3
- package/heroku-postgres-17 — EOL 2028-Q3
Who this is for
- low-ops
- cost-sensitive
- small-team
Candidates
Upgrade directly from Heroku Postgres 15 to 17 on the current plan
As of 2026-04-08, Heroku Postgres 17 is the default supported version and Heroku Postgres 15 has an end-of-life target of Q3 2026, while 17 is supported through Q3 2028. Heroku says databases on deprecated versions become subject to forced upgrade attempts five months after deprecation, and access restrictions and deletion actions begin at end of life. Heroku's public pricing is plan-based rather than version-based, so the main cost question is your database plan, not whether you run 15, 16, or 17; for example, the public pricing page lists Essential-0 at $5/month and Standard-0 at $50/month as of 2026-04-08. For Standard-tier and higher leader databases, direct major-version upgrades use `pg_upgrade` and typically require around 10 minutes of downtime; if you omit `--version`, Heroku upgrades to the latest supported version.
When to choose
Use this when you want the longest remaining support window with the fewest future major upgrades. It is the default choice if your app, extensions, and integration tests pass on 17 and you do not have a specific compatibility reason to pause on 16.
Tradeoffs
Best long-term support window and avoids doing two major upgrades in close succession. The tradeoff is that you absorb any app or extension compatibility work for the newest supported release now.
Cautions
If your database has more than 1,000 schemas or more than 10,000 objects, Heroku says the upgrade can fail due to out-of-memory conditions and should be tested in advance. Direct upgrades restrict database access while running, Follower Failover is not available for Essential-tier plans, and `pg:copy` only works for supported plans under 10 GB and only copies the default credential and data it can access.
Upgrade from Heroku Postgres 15 to 16 first, then schedule 17 later
As of 2026-04-08, Heroku Postgres 16 is supported through Q3 2027, which still clears the Q3 2026 deadline for leaving Postgres 15. Heroku's upgrade docs state you can target a specific major version with `--version 16`, rather than taking the default latest version. This path keeps you on a supported release while shortening the compatibility jump if your stack is not yet ready for 17. Public Heroku Postgres pricing remains tied to the plan you provision, not the major version shown on the pricing page.
When to choose
Use this when a verified blocker makes 17 too risky right now, such as application compatibility work you cannot finish before the Postgres 15 support window tightens. It is a delay tactic, not a final steady state, because 16 still needs another major upgrade before Q3 2027.
Tradeoffs
Reduces immediate change surface and can lower near-term migration risk. The tradeoff is a shorter support runway and an additional major-upgrade project sooner.
Cautions
This only makes sense if you have a concrete blocker for 17; otherwise it creates avoidable repeat work. Heroku's deprecation policy still applies once 16 eventually becomes the third-oldest supported release, and Heroku recommends upgrading before support ends so you can test and migrate on your own schedule.
Try with your AI agent
$ npm install -g pocketlantern $ pocketlantern init # Restart Claude Code, Cursor, or your MCP client, then ask: # "Heroku Postgres 15 Upgrade Planning Before Q3 2026 End of Life — when and how should I migrate?"