Ruby on Rails logo

Platform Modernization

Legacy Ruby on Rails Modernization

Three tiers for legacy Ruby on Rails apps. Dashboard-centric SaaS usually benefits from full migration. CRUD/admin tools often stay on Rails.

Compare tiers

Three tiers of Rails modernization

Every tier is production-ready. The question is which tradeoffs matter most for your situation.

Tier 1 · 4-8 weeks

Keep Rails

When Rails is genuinely better

Optimize your existing Rails app. Add AI features, performance hardening, and modern tooling without migration.

Pros

  • + No migration risk—ship improvements immediately
  • + Team keeps Rails expertise, no new stack to learn
  • + Best for: complex domain logic, Sidekiq-heavy systems, CRUD tools

Cons

  • No latency improvement for user-facing pages
  • Smaller hiring pool than TypeScript
  • AI integrations require workarounds for streaming

Tier 2 · 6-10 weeks

Strangler Hybrid

Risk reduction tier

Next.js frontend with Rails as system-of-record. Production-ready, but usually transitional for transactional apps.

Pros

  • + Lower risk—migrate incrementally over months
  • + Rails keeps auth, business logic, Sidekiq
  • + Best for: read-heavy dashboards, incremental migration path

Cons

  • 80-200ms latency tax per request (network hop)
  • Two codebases to maintain (Ruby + TypeScript)
  • Usually transitional, not a permanent architecture

Tier 3 · 10-16 weeks

Full Migration

Default for dashboard-centric SaaS

Migrate legacy Rails to Next.js + Prisma. Best for B2B SaaS with authenticated dashboards, user portals, and interactive data.

Pros

  • + Sub-100ms page loads—no network hop to Rails
  • + Single TypeScript codebase, easier hiring
  • + Best for: dashboards, portals, transactional apps

Cons

  • Higher upfront investment
  • Business logic rewritten in TypeScript
  • Requires auth migration (Clerk, Auth0, or NextAuth)

How to choose

>60% behind login + interactive end-user UI? → Lean toward Tier 3 (full migration)

>60% CRUD/admin + jobs/pipelines? → Consider Tier 1 (keep Rails)

In between? → Tier 2 as a strangler pattern

For dashboard-centric B2B SaaS—where most traffic is authenticated users interacting with dynamic data—full-stack TypeScript is often the cleanest long-term equilibrium.

FAQ

Why is full migration your default for transactional apps? +
Every request to Rails adds a network hop + serialization + auth check. In a tuned setup, that's 80-200ms per page load. For sessions, carts, and personalized dashboards, that compounds fast. Direct database access via Prisma eliminates the hop entirely.
Is hybrid production-ready? +
Yes. Many companies run Rails hybrid in production. The tradeoff isn't readiness—it's latency and long-term complexity. Hybrid works as a strangler pattern or for read-heavy surfaces. It's transitional for most transactional apps.
When should we stay on Rails? +
When Rails is genuinely the right tool: complex domain logic with workflows and state machines, jobs-heavy systems where Sidekiq is the orchestrator, or CRUD internal tools. We don't push migrations to sell work.
How long does each tier take? +
Tier 1 (optimize): 4-8 weeks initial. Tier 2 (hybrid): 6-10 weeks. Tier 3 (full migration): 10-16 weeks. Hybrid is faster upfront but means maintaining two codebases long-term.
What happens to Sidekiq jobs? +
In Tier 1 or 2, Sidekiq stays. In Tier 3, jobs migrate to TypeScript alternatives like Inngest or Trigger.dev—same patterns, often better observability.
Why don't you recommend Hotwire for AI products? +
Hotwire (Turbo + Stimulus) is great for traditional CRUD apps, but AI products need streaming LLM responses, complex state management, and deep TypeScript tooling. The AI SDK ecosystem (Vercel AI, LangChain.js, OpenAI SDK) is built for React/Next.js. Fighting that ecosystem costs more than it saves.

Ready to modernize?

Start with an assessment. We'll audit your Rails codebase, analyze the tradeoffs, and give you an honest recommendation.

Request proposal