Heroku Migration Guide: Move to HostStack
Modern Heroku alternative on EU infrastructure. Real free tier, predictable pricing, and dynos that don’t sleep at random. Migrate in under an hour.
In February 2026 Heroku moved to a sustaining-engineering model: stability and security fixes, no new features, and no new Enterprise contracts. Nothing shuts down, but the platform that invented the buildpack PaaS workflow has stopped moving — the free tier went in 2022, and dyno pricing climbs fast past a hobby app. HostStack keeps the developer experience and brings it forward: real EU residency, native managed databases beyond Postgres, and pricing per resource instead of per dyno.
Why switch from Heroku?
- Real free tier: 1 Nano web service + 1 Starter Postgres + 1 cron + 1 preview env, no time limits.
- EU data residency by default — European infrastructure with a signed DPA at signup. Heroku’s EU region runs on AWS under US-incorporated Salesforce, so the US CLOUD Act reaches it.
- Predictable per-resource pricing. No "professional dyno" tax — you pay for the CPU and RAM you use.
- Managed MySQL, MongoDB, and Redis natively, not via third-party Heroku add-ons.
- No buildpack to port: HostStack detects Node, Bun, Python, Ruby, Go, Rust, Java, PHP, .NET and Elixir from your project files and builds them itself — or ship a Dockerfile.
- Build and start commands, port, health check and env defaults in a hoststack.yaml in your repo; migrations run as a pre-deploy command before traffic switches, and a failed one leaves the old release serving.
- CLI, SDK, and MCP server included — drive deploys from any tool, including Claude / Cursor.
Price comparison
| Resource | Heroku | HostStack | Comparison |
|---|---|---|---|
| Hobby web app | $5/mo Eco (or $7 Basic) | €1/mo Pico (or free Nano) | Up to 100% |
| Production web app | $50/mo Standard-2X (1 GB) | €10/mo Small (1 GB) | ~80% |
| Managed Postgres (1GB) | $5/mo Essential-0 | €4/mo Micro | ~20% |
| Managed Redis (25MB) | $3/mo Mini (Heroku Key-Value Store) | €4/mo Micro (256MB) | Comparable, 10× memory |
| Persistent disk (10GB) | Not available (ephemeral filesystem) | €1/mo (10¢/GB·mo) | Native vs none |
Heroku prices checked May 2026 against their public pricing page. Heroku prices are USD as published; HostStack figures are the live EUR catalog. Verify at the source before deciding.
Code migration
Before (Heroku)
# Procfile
web: bun run start
release: bun run migrate
# app.json
{
"name": "my-api",
"stack": "heroku-24",
"buildpacks": [{ "url": "heroku/nodejs" }],
"addons": ["heroku-postgresql:essential-0"]
}After (HostStack)
# hoststack.yaml -- configures the existing "my-api" service
services:
my-api:
install:
command: bun install
start:
command: bun run start
# Not in this file -- set on the service:
# release: -> hoststack services update svc_... --pre-deploy-command "bun run migrate"
# heroku-postgresql -> hoststack db create --project prj_... --name my-db --engine postgres --plan micro
# hoststack db link db_... --service svc_...Feature comparison
| Feature | Heroku | HostStack |
|---|---|---|
| Git push deploys | Yes | Yes |
| Build system | Buildpacks | Runtime auto-detection or Dockerfile (no buildpacks) |
| Free tier | Removed in 2022 | Yes — Nano + Starter Postgres + cron + preview |
| Managed databases | Postgres, Key-Value Store, Kafka (paid) | Postgres, MySQL, MongoDB, Redis, S3 |
| Data residency | US/EU Common Runtime; 10 Private Space regions (AWS) | Helsinki, FI (EU only, named region) |
| Cron jobs | Add-on (Heroku Scheduler) | Native, 1 free per project |
| Preview environments | Review Apps (Pipeline-only) | Native, 1 free per project |
| DPA | Salesforce DPA (US entity) | At signup (EU entity) |
| CLI / API / MCP | CLI + Platform API + MCP | CLI + SDK + MCP |
Migration gotchas
No "ps:scale web=2 worker=3" — services are independent.
Each Procfile process type becomes its own HostStack service with its own scaling policy: one service for web, one for each worker, and a Cron Job service for a clock process.
Heroku DATABASE_URL is automatically injected.
HostStack does the same — when you link a managed Postgres to a service, DATABASE_URL is injected at runtime. No code changes needed.
Facing Heroku-22’s end of life or a Cedar → Fir move?
Heroku-22 is supported until April 2027. Fir runs on ARM with Cloud Native Buildpacks only, has no heroku.yml or container support, and apps have to be migrated to it by hand. A re-platform is coming either way — you can make it the one that also moves your data into the EU.
Add-ons → managed resources.
If you depend on a Heroku add-on (Bugsnag, Papertrail, etc), keep it. They’re vendor-neutral. Only the data-plane add-ons (Postgres, Redis, Kafka) move to HostStack’s managed resources.
Migration steps
- 1Sign up at hoststack.dev. Connect GitHub / GitLab / Bitbucket and import your Heroku-deployed repo.
- 2Create one service per Procfile process type — HostStack does not read the Procfile. Put the web command in the service’s start command (or in hoststack.yaml), and set a release command as the service’s pre-deploy command with hoststack services update svc_... --pre-deploy-command.
- 3Export config vars with heroku config --shell > .env, delete DATABASE_URL and REDIS_URL (linking the HostStack database injects its own), then run hoststack env import svc_... .env. It is a dry run that lists what would change; add --apply to write.
- 4Take a pg_dump from Heroku (heroku pg:backups:capture, then heroku pg:backups:download) and restore into your new HostStack Postgres.
- 5For Heroku Redis, run a one-shot dump/restore via redis-cli --rdb. For Heroku Scheduler, recreate each job as a Cron Job service with its schedule and command.
- 6Update DNS. Run in parallel for as long as you need, then point traffic at HostStack and decommission the Heroku app.
Frequently asked questions
Do you support Heroku buildpacks?
Not as buildpacks. HostStack detects the runtime from your project files (package.json, requirements.txt or pyproject.toml, Gemfile, go.mod, Cargo.toml, composer.json, pom.xml or build.gradle, a .NET project, mix.exs) and builds it with its own preset, so most Heroku apps need no build configuration at all. Anything a preset does not cover — a custom buildpack, system packages — goes in a Dockerfile. HostStack does not read your Procfile: copy the web command into the service’s start command, and give each other process type a service of its own.
What about Heroku Pipelines / Review Apps?
HostStack supports preview environments natively. Every pull request gets an ephemeral deploy with a unique URL. A preview uses the databases its service is linked to, so build previews from a staging service if they must not touch production. There is no separate "pipeline" object — the project itself owns its environments.
Can I keep my Heroku-style "git push heroku main" workflow?
Yes. Once you connect your repo through GitHub / GitLab / Bitbucket, every push to your default branch (or any branch you configure) triggers a deploy. You can also push directly via the CLI: hoststack deploy.