← Back to Dispatch Articles
Engineering Log

Migrating from Heroku to Deployxa: A Complete Step-by-Step Guide

Complete guide to migrating from Heroku to Deployxa — export env vars, migrate databases, handle Procfiles, configure custom domains, and start saving on deployment costs.

Migrating from Heroku to Deployxa: A Complete Step-by-Step Guide

If you have been running applications on Heroku for any length of time, you probably already know the feeling. The platform that once felt like the gold standard for developer productivity has slowly become a source of frustration. Rising costs, stagnant features, and a growing sense that Salesforce treats Heroku as an afterthought have pushed thousands of developers to start looking elsewhere.

You are not alone in this. Entire communities of developers, from solo founders bootstrapping SaaS products to engineering teams at mid-size companies, are actively searching for a Heroku replacement that delivers the same push-to-deploy simplicity without the bloated pricing and clunky add-on marketplace.

That is exactly where Deployxa comes in.

Deployxa (deployxa.com) is an AI-powered deployment platform that picks up where Heroku left off. You push your code, Deployxa handles the rest. Version 4.2.0 brings auto-scaling to zero, AI-powered build detection, native managed databases, and a pricing model that does not punish you for having a popular application.

This guide walks you through every step of migrating from Heroku to Deployxa. Whether you are running a single Node.js API or a complex Rails monolith with background workers and custom domains, this article covers exactly what you need to do, in order, with no steps skipped.

The State of Heroku in 2026

It is worth understanding why so many developers are leaving Heroku before diving into the migration itself. The story is not just about price, though price is a major factor.

Salesforce acquired Heroku in 2010. For the first several years, the platform thrived. Developer experience was unmatched. The dyno model was simple, add-ons were plentiful, and git push deployments felt magical. But over time, investment slowed. The product roadmap stalled. Meanwhile, Heroku's pricing steadily increased.

The inflection point for many teams came when Heroku eliminated its popular free tier and low-cost hobby dynos. Overnight, side projects that cost nothing to run suddenly carried a monthly bill. Small teams that relied on a handful of eco dynos found themselves paying significantly more for the same workloads. The value proposition that made Heroku iconic, affordable simplicity, started to fracture.

Today, in 2026, the community sentiment is clear. Developer forums, Reddit threads, and Twitter discussions are filled with developers asking the same question: what is the best Heroku alternative? The platform still works. Your apps still run. But the combination of high costs, slow build times, limited scaling options, and an add-on marketplace that often feels like a trap, paying third-party vendors for basic functionality, has made staying feel like the riskier choice.

If you are reading this, you have likely already made the decision to leave. The rest of this guide shows you how to do it cleanly, confidently, and with minimal downtime.

What to Look for in a Heroku Alternative

Not every platform that calls itself a Heroku alternative actually qualifies. After evaluating the landscape, the criteria that matter most to teams making this switch come down to a few core requirements.

First, Git-based deployments are non-negotiable. The reason Heroku became so popular is that it removed operations from the developer workflow. You pushed code to a branch, and the platform built and deployed it. Any replacement needs to offer this same level of simplicity. If you have to write Dockerfiles, manage Kubernetes manifests, or configure CI/CD pipelines manually, you have not found a true alternative.

Second, managed services matter. On Heroku, you could provision a PostgreSQL database, a Redis instance, or an S3-compatible store with a single command. Your alternative should offer the same. Managed databases, managed caching, and managed file storage reduce operational burden and let your team focus on application code.

Third, the platform needs to handle background workers natively. Many Heroku applications rely on Sidekiq, Celery, or similar process-based workers. A migration path that does not support background processes is a non-starter.

Fourth, cost transparency is critical. Heroku's pricing model, where each dyno type, each add-on, and each metered resource is billed separately, makes it difficult to predict monthly costs. A good alternative should offer straightforward, predictable pricing.

Fifth, auto-scaling matters more than ever. The ability to scale to zero during quiet periods and scale up during traffic spikes is no longer a luxury. It is a baseline expectation for modern platforms.

Deployxa checks every one of these boxes.

Why Deployxa Is the Best Heroku Alternative

Deployxa was built from the ground up as a next-generation PaaS. It is not a Heroku clone. It is a reimagining of what a deployment platform should look like in an era of AI tooling, container-native infrastructure, and cost-conscious engineering teams.

Here is how Deployxa compares to Heroku across the dimensions that matter most:

  • Feature | Heroku | Deployxa
  • Deployment Model | Git push | Git push
  • Build System | Slug compiler (slow, cached) | AI-powered build detection (fast, incremental)
  • Auto-Scaling | Manual or via add-on | Built-in, scales to zero automatically
  • Managed PostgreSQL | Via Heroku Postgres add-on | Native, included in platform
  • Managed Redis | Via Heroku Redis add-on | Native, included in platform
  • Background Workers | Separate dyno types | Native process support
  • Custom Domains | Supported, manual SSL | Supported, automatic SSL provisioning
  • Environment Variables | Config vars, CLI-based | Full UI, CLI, and API support
  • AI Features | None | Build detection, error analysis, scaling recommendations
  • Pricing Model | Per-dyno + per-add-on | Transparent tiered pricing
  • Cold Start Time | 10-30 seconds (eco dynos) | Under 3 seconds
  • Build Time | 2-8 minutes typical | 30-90 seconds typical
  • Free Tier | Eliminated | Available with generous limits

The differences are not marginal. Deployxa's AI-powered build detection means the platform automatically identifies your framework, language, and dependency structure without requiring you to configure buildpacks. Builds that took six minutes on Heroku regularly complete in under a minute on Deployxa.

Before You Migrate: Audit Your Heroku App

Before touching any code or creating any Deployxa projects, you need a complete picture of what you are running on Heroku. This audit prevents surprises during migration and ensures nothing gets left behind.

Start by listing all your dynos. Run heroku ps --app your-app-name and note every process type: web, worker, clock, release, or any custom process types defined in your Procfile. Each of these will need a corresponding configuration in Deployxa.

Next, catalog every add-on. Run heroku addons --app your-app-name and write down each one. Pay special attention to databases (Heroku Postgres, JawsDB, ClearDB), caching layers (Heroku Redis, Memcachier), logging services (Papertrail, Logtail), monitoring tools (New Relic, Librato), and email services (SendGrid, Mailgun). Many of these add-ons exist because Heroku does not include them natively. Deployxa includes managed PostgreSQL and Redis out of the box, which means several add-ons can be eliminated entirely.

Export your environment variables. Run heroku config --app your-app-name and save the full output. Every config var matters, from DATABASE_URL to API keys to feature flags.

Document your custom domains. Run heroku domains --app your-app-name and note each domain along with its DNS configuration.

Finally, check for Heroku-specific features that may require special handling. These include release phase scripts (defined in your Procfile), Heroku-specific buildpacks, the Heroku CLI plugin ecosystem, app.json for review apps, and any webhook configurations.

With this audit complete, you have a migration checklist. Every item on this list will be addressed in the steps that follow.

Step 1: Export Your Heroku Environment Variables

Environment variables are the lifeline of your application. Losing or misconfiguring even one can cause your app to crash on the new platform. This step deserves careful attention.

Export your Heroku config vars to a local file:

heroku config --app your-app-name -s > heroku-env-backup.sh

This exports every config var in a shell-compatible format. Open the file and review it carefully. You will likely see variables in these categories:

  • Database credentials: DATABASE_URL, JAWSDB_URL, CLEARDB_DATABASE_URL
  • Cache credentials: REDIS_URL, MEMCACHIER_SERVERS
  • API keys: STRIPE_API_KEY, AWS_ACCESS_KEY_ID, SENDGRID_API_KEY
  • Application config: RAILS_ENV, NODE_ENV, SECRET_KEY_BASE, APP_DOMAIN
  • Heroku-specific: HEROKU_APP_NAME, HEROKU_RELEASE_VERSION

For a deeper understanding of how Deployxa handles environment variables across environments, see our guide on environment variable management in Deployxa.

Do not skip this step. Environment variables are the single most common source of migration failures. Having a complete backup gives you a safety net and a reference point as you configure your Deployxa project.

Step 2: Set Up Your Deployxa Project

With your audit complete and your environment variables backed up, it is time to create your Deployxa project.

First, sign up at deployxa.com if you have not already. Deployxa offers a free tier, so you can complete the entire migration without committing to a paid plan upfront.

Create a new project and connect your GitHub repository. Deployxa supports direct GitHub integration, which means every push to your main branch (or any branch you configure) triggers an automatic build and deployment. This is the same workflow you are used to on Heroku, so the muscle memory transfers directly.

If your code lives in a monorepo, Deployxa supports subdirectory configuration. You can specify which directory within your repository corresponds to each Deployxa project. This is particularly useful if you have a frontend and backend in the same repository.

Once your repository is connected, Deployxa's AI-powered build detection kicks in. It analyzes your codebase, identifies your framework and language, and configures the build process automatically. No buildpacks to select. No build configuration files to write. The platform just knows.

Trigger your initial deployment by pushing to your configured branch. Even if the deployment does not fully succeed on the first attempt, because you have not yet configured your database or environment variables, this initial build confirms that Deployxa can successfully detect and build your application.

Step 3: Migrate Your Database

For most Heroku applications, the database is the most critical component to migrate. Data loss during a database migration is unacceptable, so this step requires precision.

The approach depends on your database provider. If you are using Heroku Postgres, follow these steps:

Export from Heroku:

heroku pg:backups:capture --app your-app-name
heroku pg:backups:download --app your-app-name

This creates and downloads a full backup of your Heroku Postgres database as a dump file.

Create a managed PostgreSQL database in Deployxa: From your project dashboard, provision a managed PostgreSQL database. Deployxa provides you with a connection string.

Import to Deployxa:

pg_restore --clean --no-owner -d your-deployxa-db-url heroku-backup.dump

If your database is large, consider using pg_dump and pg_restore with custom format for faster transfers. For databases over 10GB, you may want to use a replication approach instead of a dump and restore, which allows for a faster cutover with minimal downtime.

If you are using a third-party database add-on like JawsDB or ClearDB, you can either migrate to Deployxa's managed PostgreSQL or continue using your existing provider. The connection string is simply an environment variable, so either approach works.

After the import, verify your data integrity. Run your test suite against the new database, spot-check critical tables, and confirm that record counts match.

Step 4: Configure Environment Variables in Deployxa

Now that your database is in place, configure the environment variables that your application needs to run.

In the Deployxa dashboard, navigate to your project's environment variables section. Deployxa provides a clean interface for managing variables across different environments (staging, production, preview). This is a significant improvement over Heroku's flat config var model, where all environments shared the same variable space.

Import your Heroku config vars systematically. Start with the critical ones:

  • Update DATABASE_URL to point to your new Deployxa PostgreSQL instance
  • Update REDIS_URL if you are migrating to Deployxa's managed Redis
  • Remove or update any Heroku-specific variables (like HEROKU_APP_NAME)
  • Copy all third-party API keys and service credentials as-is

Deployxa supports encrypted environment variables for sensitive values. Mark variables like SECRET_KEY_BASE, private API keys, and database credentials as secret. This prevents them from being exposed in logs or the dashboard UI after initial entry.

For a comprehensive walkthrough of environment variable best practices, refer to our environment variable management guide.

Step 5: Handle Heroku-Specific Features

Most applications have at least one feature that ties them to Heroku's platform. Addressing these before your final migration prevents post-launch issues.

Release Phase Scripts: Heroku's release phase runs tasks after a build succeeds but before the new release is deployed. Common uses include running database migrations (rails db:migrate), compiling assets, or warming caches. In Deployxa, you can configure post-build hooks in your project settings that serve the same purpose. Add your migration commands there.

Buildpacks: Heroku uses buildpacks to transform your source code into a runnable slug. Deployxa does not use buildpacks. Instead, its AI-powered build detection handles framework identification and dependency installation automatically. If you have custom buildpacks, check whether Deployxa's default detection covers your use case. In most cases, it does. For edge cases, Deployxa supports custom build commands.

Procfile Conversion: Heroku uses a Procfile to declare process types. Deployxa uses a similar concept but with a more flexible configuration format. Convert your Procfile entries to Deployxa process definitions:

# Heroku Procfile
web: bundle exec puma -C config/puma.rb
worker: bundle exec sidekiq -C config/sidekiq.yml
release: bundle exec rails db:migrate

In Deployxa, you configure the web process as your main service and declare worker processes separately in the project settings. Release commands map to post-build hooks.

Heroku CLI Plugins: If your deployment workflow or scripts rely on Heroku CLI plugins, you will need to replace those with Deployxa CLI commands or API calls. The Deployxa CLI covers all common operations: deploys, environment variable management, database provisioning, and log streaming.

Step 6: Deploy and Verify

With your database migrated, environment variables configured, and Heroku-specific features handled, you are ready for a full deployment.

Push your code to trigger a fresh build and deploy. Monitor the build logs in the Deployxa dashboard. If the build succeeds, your application should start and become reachable at its Deployxa-assigned URL.

Run through your smoke testing checklist:

  • Load the homepage and verify it renders correctly
  • Test user authentication (login, logout, password reset)
  • Exercise core API endpoints
  • Submit a form or perform a write operation to confirm database connectivity
  • Trigger a background job to confirm worker processes are running
  • Check application logs for any errors or warnings

Deployxa provides built-in health check endpoints. Configure your health check path in the project settings, and Deployxa will automatically monitor your application's availability. This replaces the need for external uptime monitoring add-ons that many Heroku users pay for separately.

If anything fails during this verification step, check your environment variables first. Misconfigured variables account for the vast majority of initial deployment issues. Next, review the build logs for dependency installation errors or framework detection issues. Deployxa's AI build system is highly accurate, but unusual project structures may require a small configuration adjustment.

Step 7: Set Up Custom Domains

Once your application is running correctly on its Deployxa URL, it is time to connect your custom domain.

In the Deployxa dashboard, add your custom domain to the project. Deployxa automatically provisions an SSL certificate for your domain using Let's Encrypt. This is a notable improvement over Heroku, where SSL certificate provisioning for custom domains sometimes required manual intervention or paid add-ons.

Deployxa provides you with a CNAME target. Update your DNS configuration to point your domain to this target:

  • For apex domains (example.com), create an ALIAS or ANAME record pointing to the Deployxa target
  • For subdomains (www.example.com, app.example.com), create a CNAME record pointing to the Deployxa target

DNS propagation typically takes anywhere from a few minutes to 48 hours, though most DNS providers propagate changes within 15 minutes in practice. Use a tool like dig or an online DNS checker to verify that your domain resolves to the correct Deployxa endpoint.

Once DNS propagates, verify that your application loads correctly over HTTPS at your custom domain. Check that the SSL certificate is valid and that there are no mixed content warnings in the browser console.

Step 8: Configure Background Workers

If your application uses background workers, this step ensures they continue processing jobs on Deployxa.

For Ruby on Rails applications using Sidekiq, add a worker process to your Deployxa project configuration pointing to your Sidekiq command. Deployxa will run this as a separate process alongside your web process, exactly as Heroku did with worker dynos.

For Python applications using Celery, configure both the Celery worker and Celery beat (if you use scheduled tasks) as separate processes in Deployxa.

For Node.js applications using Bull, Bee-Queue, or similar libraries, configure the worker process with the appropriate startup command.

The key difference on Deployxa is that worker processes scale independently from your web process. If you have a burst of background jobs, Deployxa can scale workers up without affecting your web tier. And when the queue is empty, workers scale to zero, saving you money during quiet periods.

Verify your workers are functioning by enqueueing a test job and confirming it processes successfully. Check the Deployxa logs for your worker process to ensure there are no connection errors to your database, Redis, or external services.

Step 9: Set Up Monitoring and Alerts

On Heroku, monitoring typically required add-ons. Papertrail for logs. New Relic for APM. Librato for metrics. Each one added to your monthly bill.

Deployxa includes monitoring and alerting as built-in features. There is no add-on marketplace to navigate and no third-party vendor lock-in.

From the Deployxa dashboard, configure:

  • Log aggregation: All application and build logs are collected automatically and searchable in real time
  • Error tracking: Deployxa captures unhandled exceptions and groups them for easy triage
  • Performance metrics: Response times, throughput, memory usage, and CPU utilization are tracked per process
  • Uptime monitoring: Health checks run at configurable intervals, with alerts delivered via email, Slack, or webhook
  • Auto-scaling alerts: Get notified when your application scales up or down, so you always know your resource usage

If you relied on specific Heroku add-ons for monitoring, now is the time to evaluate whether Deployxa's built-in features cover your needs. For most applications, they do. For specialized requirements, Deployxa supports integrating with external monitoring tools via webhooks and API endpoints.

Common Migration Gotchas and How to Fix Them

Even with careful planning, migrations can hit snags. Here are the most common issues developers encounter when moving from Heroku to Deployxa, and how to resolve each one.

Port binding errors. Heroku automatically injects a PORT environment variable and expects your application to bind to it. Deployxa does the same, but if your application has a hardcoded port, it will fail to start. Always use process.env.PORT (Node.js), ENV['PORT'] (Ruby), or os.environ.get('PORT') (Python) rather than hardcoding a port number.

Database connection pool sizing. Heroku Postgres sets DATABASE_CONNECTION_POOL or relies on your ORM defaults. Deployxa's managed PostgreSQL may have different default limits. Review your connection pool configuration and adjust it based on your Deployxa plan's connection limits.

Session storage. If your application stores sessions in a Heroku-specific way (such as using the heroku-redis session store), update the session configuration to point to Deployxa's managed Redis or your preferred session backend.

Vendor locking in environment variables. Some Heroku add-ons inject environment variables that reference Heroku-internal URLs or credentials. After migration, these variables may point to services that no longer exist. Review every environment variable and update references to decommissioned Heroku add-ons.

Slug size limits. Heroku's slug compiler enforces a 500MB slug size limit. Deployxa uses a more generous approach to artifact sizing, but extremely large dependency trees can still slow down builds. Use this migration as an opportunity to audit and trim unnecessary dependencies.

Websocket connections. Heroku's routing layer handles websockets with specific timeout configurations. Deployxa also supports websockets, but the default timeout values may differ. If your application relies on long-lived websocket connections, verify the timeout behavior on Deployxa and adjust if needed.

For guidance on ensuring smooth deployments throughout your migration and beyond, our article on zero-downtime deployments covers the strategies Deployxa uses to keep your application available during every deploy.

Cost Comparison: Heroku vs Deployxa

For many teams, cost is the primary motivation for leaving Heroku. Here is a detailed comparison across common traffic levels.

Solo Developer / Side Project

  • Resource | Heroku (Monthly) | Deployxa (Monthly)
  • Web Dyno (Eco) | $5 | Included in free tier
  • PostgreSQL (Mini) | $5 | Included in free tier
  • Redis (Mini) | $6 | Included in free tier
  • Logging (Papertrail) | $7 | Included
  • Total | $23 | $0

Small Production App

  • Resource | Heroku (Monthly) | Deployxa (Monthly)
  • 2x Web Dynos (Basic) | $20 | $12
  • 1x Worker Dyno (Basic) | $10 | $6
  • PostgreSQL (Basic) | $15 | Included
  • Redis (Premium 0) | $15 | Included
  • Logging | $7 | Included
  • Monitoring | $25 | Included
  • Total | $92 | $18

Growing Application

  • Resource | Heroku (Monthly) | Deployxa (Monthly)
  • 4x Web Dynos (Standard-1X) | $100 | $36
  • 2x Worker Dynos (Standard-1X) | $50 | $18
  • PostgreSQL (Standard 0) | $50 | $20
  • Redis (Premium 2) | $30 | Included
  • Logging | $15 | Included
  • Monitoring | $75 | Included
  • Total | $320 | $74

The savings compound as you scale. Deployxa's model of including managed services rather than charging for each one individually means your costs grow linearly with compute, not multiplicatively with add-ons.

For solo founders and bootstrapped teams, these savings are not just nice to have. They are the difference between profitability and burning cash on infrastructure. If this resonates with your situation, our article on why solo founders should never touch infrastructure explores this topic in depth.

Post-Migration: What You Gain

Completing the migration is just the beginning. Once your application is running on Deployxa, you gain access to capabilities that Heroku simply does not offer.

Faster builds. Deployxa's build system uses intelligent caching and incremental builds to dramatically reduce deployment times. What used to take five to eight minutes on Heroku typically completes in 30 to 90 seconds on Deployxa. For teams that deploy multiple times per day, this adds up to hours of saved developer time per week.

Auto-scaling to zero. Deployxa scales your application down to zero when there is no traffic and scales it back up instantly when requests arrive. Cold starts take under three seconds, which means your users never notice. On Heroku, you pay for every dyno every minute of every month, regardless of whether anyone is using your application.

AI-powered detection and diagnostics. Deployxa's AI analyzes your builds, detects potential issues before they reach production, and provides actionable recommendations. If a dependency has a known vulnerability, Deployxa flags it. If your build is slower than usual, Deployxa investigates and suggests optimizations. This is not a feature Heroku offers at any price point.

Unified dashboard. Instead of managing your application in the Heroku dashboard, your database in a separate add-on panel, your logs in Papertrail, and your metrics in New Relic, Deployxa gives you a single pane of glass for everything. Application health, build history, environment variables, database status, logs, and metrics are all accessible from one interface.

Transparent pricing. No more surprise bills. No more counting dynos and add-ons to estimate your monthly cost. Deployxa's pricing is straightforward and predictable, so you can focus on building your product instead of managing your infrastructure budget.

Conclusion

Migrating from Heroku to Deployxa is not a risky leap into the unknown. It is a deliberate, well-supported transition from an aging platform to a modern one. The concepts are familiar. Git-based deployments, environment variables, managed databases, background workers. If you understand Heroku, you already understand most of Deployxa.

The difference is that Deployxa builds on those familiar concepts with faster builds, built-in services that Heroku charges extra for, AI-powered features that catch problems before they reach your users, and a pricing model that scales with your actual needs.

The migration process outlined in this guide covers everything from auditing your current Heroku setup to verifying your application on Deployxa, handling custom domains, configuring workers, and replacing your monitoring stack. Follow these steps in order, take your time with the database migration, and verify thoroughly at each stage. Most teams complete the entire process in under a day.

If you are ready to stop overpaying for infrastructure that has not kept pace with modern development practices, sign up at deployxa.com and start your migration today. Your application deserves a platform that works as hard as you do.

Ready to deploy with Deployxa?

Deploy your apps globally with automatic SSL and AI diagnostics.

Start Free Now