Skip to content
Two boats side by side at night: a wooden skiff with a glowing teal sail and a lantern, and a plain grey boat with a limp sail

Comparison · updated September 2026

The Heroku experience, without the Heroku bill.

Push to deploy, Procfile-style start commands, config vars, one-click Postgres and Redis. Skiffly adds a prepaid balance, PayPal and crypto top-ups, a free tier that needs no card, and EU-only hosting on hardware we own.

Why switch

Why people switch

A bill you can see coming

Top up $20 and watch the runway. We warn at 20% and at zero, hold for 3 days, then pause. Nothing is deleted and no invoice arrives.

Pay how you can

Not everyone has a card that works with US billing. PayPal and stablecoins top up the same balance at the exchange rate at confirmation, with no fee from us.

Data stays in the EU

Our own nodes in Finland. No hyperscaler in the path, no transfer outside the EU, backups in EU object storage.

Nothing new to learn

The GraphQL fields, CLI commands and MCP tools mirror Railway where the feature exists. ${{Postgres.DATABASE_URL}} references, PR environments, templates: same shapes.

Migration

Migrate in 10 minutes

Three commands for the app, one dump and restore for the database. The guide walks through variables, domains and the things to check before cutting over.

A dockside crane lowers a glowing crate into a small skiff moored at a night pier
01 · EXPORT

Export from Heroku

Variables with one command, a dump of each database. Drop the platform-specific entries: Skiffly provides the SKIFFLY_* equivalents.

A boat shed lit warm amber from inside, a skiff on the slipway with a few sparks and a teal glow
02 · BUILD

Build on Skiffly

skiffly init && skiffly up builds the same repository with Railpack, every service in its own sandbox. Set the variables, deploy the Postgres template, restore the dump.

A lighthouse sweeps its beam over a skiff with a teal sail moored at a jetty with a lit signpost
03 · CUT OVER

Move the domain

Test on the generated *.skiffly.cloud domain, add the custom one, switch the CNAME once the certificate is issued. Keep Heroku running until DNS has propagated.

terminal
$ heroku config -s -a my-app > vars.env   # export config vars
$ skiffly init && skiffly up              # build the repo on Skiffly
$ skiffly variables set --skip-deploys $(cat vars.env | xargs)
Where Heroku is ahead

A mature add-on marketplace, release phase hooks, pipelines with promotion and years of production history. Skiffly is smaller and simpler: one EU region, no SLA yet, a prepaid balance instead of a sales process.

Full migration guide
Compare

Side by side

What we know about ourselves is exact; what we say about others is deliberately general. Check their pricing page for current numbers.

How you paySkiffly · Card, PayPal or crypto (USDT, USDC, BTC, ETH), all into a prepaid balanceHeroku · Card
Billing modelSkiffly · Prepaid balance drawn per minute; 3-day grace period, then pause. Never an invoice.Heroku · Dyno hours and add-ons billed monthly
Free tier without a cardSkiffly · Yes: one app plus one database, 512 MB / 1 vCPU each; the app sleeps after 10 min idle, 50 vCPU·h a month; static sites never sleepHeroku · No free tier since 2022
EU hostingSkiffly · EU only: our own nodes in Helsinki, Finland; volumes, logs and backups stay in the EUHeroku · US and EU regions on AWS
Workload isolationSkiffly · Own kernel per service: gVisor by default, Kata microVM on request; private network per projectHeroku · Dynos (containers)
API / CLI / MCPSkiffly · Railway-compatible GraphQL fields, same CLI command names, MCP server with matching tool namesHeroku · Heroku Platform API and CLI
BackupsSkiffly · Included: daily volume snapshots, 7 daily / 4 weekly / 3 monthly, plus Postgres and MySQL dumpsHeroku · Postgres backups depend on the add-on plan
App SleepingSkiffly · Optional per service; ~10 min idle, wakes on the next request, not billed while asleepHeroku · Eco dynos sleep after inactivity
MemorySkiffly · $8 / GB-month, per minute, from the balanceHeroku · Fixed dyno sizes; see their pricing page
CPUSkiffly · $15 / vCPU-month, any fractionHeroku · Bundled with the dyno size
DatabasesSkiffly · Postgres, MySQL, Redis, MongoDB, ClickHouse and 130+ more templates; you pay for the resources, not per add-onHeroku · Add-ons with their own plans
RegionsSkiffly · One EU region today; more EU regions planned, no multi-region promisesHeroku · US and EU

Statements about Heroku describe the product in general terms as of September 2026 and may be out of date; see their pricing and documentation for specifics. Skiffly figures come from our pricing page.

FAQ

Questions before switching

What happens to my Procfile?
Each process type becomes a service: web gets a domain, worker runs without one. The command line becomes the service's start command. Scheduler jobs become services with a cron schedule.
How do I replace Heroku Postgres and Redis?
Deploy the Postgres or Redis template; it lands with a volume and a DATABASE_URL / REDIS_URL you reference from your app. Move the data with pg_restore through skiffly connect. You pay for the resources the instance uses, not a per-add-on plan.
Is there a release phase?
Not as a hook. Run migrations from the start command (sh -c "npm run migrate && npm start") or as a one-off with skiffly ssh -- npm run migrate.
Do apps sleep like Eco dynos?
Only if you turn on App Sleeping for that service; Hobby and Pro services are never stopped on a timer. The free tier's single service sleeps after 10 minutes idle and wakes on the next request.
Dawn over open water: a skiff with a teal sail heads for the horizon along a dashed chart line drawn on the sea

Try the switch on the free tier

No card. One app and one database, a domain with TLS, and the same commands you would use in production.