If you have searched for “Ruby on Rails upgrade services,” you are probably in one of two situations. Either your app is on an older Rails version and you know it needs to move forward, or someone on your team just told you that your current version is approaching end of life and you need to act.

Both are valid. Both are common. And both deserve better than a vague promise from a contractor who has never upgraded a production Rails app before.

This post explains what a professional Rails upgrade engagement actually looks like, what it should cost, what questions to ask before signing, and how to tell the difference between a team that will get you there safely and one that will leave you with a half-finished migration.

What a Rails Upgrade Actually Involves

A Rails upgrade is not a single bundle update rails command. It is a coordinated migration that touches multiple layers of your application:

Ruby version. Rails 8 requires Ruby 3.2 at minimum. If your Ruby is older than that, the Ruby upgrade comes first — and it is its own project with its own breakage surface.

The Rails framework. The rails gem itself, plus actionpack, activerecord, activesupport, and the rest of the framework gems. Each major version introduces deprecations, removals, and new defaults.

Your gem dependencies. Everything in your Gemfile.lock needs to be compatible with the target Rails version. This is usually where the real work lives — one pinned gem with no Rails 8 support can block the entire upgrade.

Configuration and initializers. Rails ships new defaults with each version. Your config/application.rb, environment files, and initializers all need to be reviewed and updated.

Your application code. Deprecated APIs, changed method signatures, removed features. The test suite catches most of these, but only if you have one.

Infrastructure. Database version requirements change. Deploy tooling may need updates. CI pipelines need adjustment.

A good upgrade service handles all of these as a coordinated sequence, not as a single big-bang PR.

What to Look For in an Upgrade Provider

Rails-specific experience

General web development shops can write Rails code, but upgrading a production Rails app across major versions is a specialized skill. Ask how many Rails upgrades the team has completed, what version combinations they have handled, and whether they can show you a process — not just a resume.

Incremental approach

Any provider proposing to jump three Rails majors in a single PR is a red flag. Professional upgrade services move version by version: 6.1 to 7.0, 7.0 to 7.1, 7.1 to 7.2, 7.2 to 8.0. Each step is a deployable milestone. Each step has its own test pass.

Test-first methodology

The upgrade team should run your test suite before, during, and after every version bump. If your test coverage is thin, a good provider will flag that upfront and help you add coverage for critical paths before touching the framework version.

Clear scoping and communication

You should know before the engagement starts: what versions you are moving between, what the estimated timeline is, what risks have been identified, and what the team will do if a gem turns out to be incompatible. No surprises.

Post-upgrade support

The upgrade is not done when the PR merges. It is done when the app has been stable in production for a reasonable period. Ask whether the provider includes a stabilization window after deploy.

What a Professional Upgrade Engagement Looks Like

A typical Rails upgrade engagement follows this arc:

Week 1: Audit and scoping. The team reviews your codebase, gem dependencies, Ruby version, test coverage, and infrastructure. You get a written scope: target versions, estimated effort, identified risks, and a timeline.

Weeks 2-N: Incremental upgrades. Each version bump is a branch, a test pass, a code review, and a deploy to staging. Ruby first, then Rails minor-by-minor, then the major jump. Gems are updated alongside each step.

Final week: Production deploy and stabilization. The final version lands in production. The team monitors for regressions, performance changes, and edge cases for an agreed stabilization window.

The timeline depends on your starting point. A well-maintained Rails 7.2 app moving to 8.0 might take 2-4 weeks. A Rails 5.2 app with Webpacker and 200 gems might take 3-4 months.

What It Should Cost

Rough ranges for a typical SaaS app:

The biggest cost drivers are: how far behind you are, how many gems need replacing, whether you have test coverage, and whether the asset pipeline needs migration.

If someone quotes you a flat rate without looking at the codebase first, be cautious.

Questions to Ask Before Signing

  1. How many Rails upgrades have you completed in the last 12 months?
  2. What is your process for handling incompatible gems?
  3. Do you upgrade Ruby and Rails in separate steps?
  4. What happens if the timeline estimate is wrong?
  5. Is post-deploy stabilization included?
  6. Will I work with the same engineers throughout?
  7. Can you show me a past upgrade plan or case study?

The answers tell you more than the sales pitch.

When to Upgrade vs. When to Maintain

Not every Rails app needs an upgrade right now. If you are on a supported Rails version (currently 7.2 or 8.0) with a current Ruby, your priority is ongoing maintenance — keeping gems patched, monitoring for CVEs, and staying current incrementally.

If you are on an unsupported version, the upgrade is not optional — it is a security and compliance requirement. The question is not whether to upgrade but who does it and how fast.

For a deeper look at the Rails 7 to 8 path specifically, see our Rails 7 to Rails 8 upgrade guide.


Need a Rails upgrade done right? Rails Upgrade Express is our structured, incremental upgrade service — scoped before we start, delivered version by version. If you are not sure where you stand, a Rails technical audit gives you an honest assessment first. And once you are current, a Rails Care Plan keeps you there.

Schedule a consultation or email to scope your Rails upgrade.