Skip to content

Migration Playbooks

Step-by-step interactive guides to migrate between tools. No more googling for 3 hours.

89
Playbooks
472
Total steps
32
Easy migrations
FirebaseSupabase

Move from Firebase Firestore + Auth to Supabase PostgreSQL + Auth. Biggest change: NoSQL → SQL mindset.

medium8-16h7 steps
HerokuRailway

Railway is the closest Heroku experience. Procfile compatible, auto-detect buildpacks, built-in Postgres.

easy1-3h5 steps
WebpackVite

10x faster dev server, simpler config. Most webpack plugins have Vite equivalents.

medium4-8h6 steps
Create React AppVite

CRA is deprecated. Vite is the recommended replacement. Most CRA apps migrate in under 2 hours.

easy1-2h5 steps
ExpressFastify

2x faster throughput, built-in validation with JSON Schema, TypeScript-first. Plugin system > middleware chain.

medium4-12h6 steps
Auth0Clerk

Better DX, prebuilt UI components, simpler pricing. Clerk handles the full user management flow.

easy2-4h6 steps
PrismaDrizzle ORM

Drizzle is lighter, faster, SQL-first. No code generation step, better serverless cold starts.

medium4-8h5 steps
VercelCloudflare Pages

Zero egress fees, Workers for compute, R2 for storage. Cheaper at scale than Vercel.

medium3-6h6 steps
SendGridResend

Better DX, React Email templates, simpler API. Modern alternative to legacy SendGrid.

easy1-2h5 steps
PlanetScaleNeon

PlanetScale removed its free tier in 2024. Neon offers serverless PostgreSQL with scale-to-zero and database branching. Switching MySQL → PostgreSQL requires schema and query changes.

medium4-10h6 steps
Mongoose (MongoDB)Drizzle ORM (PostgreSQL)

Move from MongoDB/Mongoose document model to relational PostgreSQL with Drizzle. Involves rethinking data structure, not just swapping libraries.

hard12-24h7 steps
Redis (redis npm)Valkey (iovalkey)

Redis changed its license to non-OSS in 2024. Valkey is the Linux Foundation fork with identical API. Drop-in replacement.

easy1-2h4 steps
TerraformOpenTofu

OpenTofu is the open-source Terraform fork maintained by the Linux Foundation after HashiCorp's license change to BUSL. Fully compatible with Terraform up to 1.5.x.

easy1-3h4 steps
Auth0Better Auth

Better Auth is a self-hosted TypeScript-first auth library. Free, open-source, no MAU limits. Best for apps wanting full control without vendor lock-in.

medium4-8h6 steps
JestVitest

Vitest is Jest-compatible but runs on Vite. Same expect/describe/it API, 10x faster with Vite's transform pipeline.

easy1-3h5 steps
Moment.jsDay.js

Day.js is a 2KB drop-in replacement for Moment.js (which is deprecated and 70KB). Same API.

easy1-2h5 steps
Docker Compose (VPS)Coolify

Coolify is a self-hosted Vercel/Netlify alternative. Auto-deploys from Git, manages SSL, databases, and Docker apps on your own server.

easy2-4h5 steps
GatsbyAstro

Gatsby is effectively dead (Netlify acquisition, no updates). Astro is the modern content-first framework with island architecture.

medium4-10h6 steps
NginxCaddy

Caddy provides automatic HTTPS (Let's Encrypt), simpler config, and HTTP/3 out of the box. No more manual SSL cert management.

easy1-2h5 steps
Redux ToolkitZustand

Zustand is simpler, lighter (1KB), no boilerplate. No providers, no action creators, no reducers. Just a hook.

easy2-4h5 steps
AlgoliaMeilisearch

Meilisearch is open-source, self-hostable, with similar API and typo-tolerance. No per-request pricing.

medium3-6h5 steps
DatadogGrafana Stack

Grafana + Loki + Tempo + Mimir replaces Datadog's logs, traces, and metrics. Self-hosted or Grafana Cloud. Dramatically cheaper at scale.

hard8-16h6 steps
ExpressHono

Hono is 3-5x faster than Express, runs on Cloudflare Workers, Bun, Deno, and Node. TypeScript-first with RPC client generation.

easy2-4h5 steps
VercelRailway

Railway removes Vercel's egress fees and function execution limits. Better for server-rendered apps, background workers, and long-running processes.

medium2-4h5 steps
Sentry SDK v7Sentry SDK v8

Sentry v8 brings OpenTelemetry integration, smaller bundle, and auto-instrumentation. Init order matters — v8 is strict about it.

medium2-4h5 steps
PostHog self-hostedPostHog Cloud

PostHog Cloud includes 1M free events/mo. Self-hosted was operationally burdensome for small teams. Migration preserves all your events.

easy1-2h5 steps
ClerkBetter Auth

Better Auth is free and self-hosted. No MAU limits, no vendor lock-in. Best for teams who want full control and hit Clerk's pricing ceiling.

medium4-8h6 steps
LaunchDarklyUnleash

Unleash is the open-source LaunchDarkly. Free to self-host, same feature flag concepts, much cheaper at scale.

medium4-8h5 steps
MySQLPostgreSQL

PostgreSQL is more standards-compliant, has better JSON support, window functions, and a richer extension ecosystem. Moving from MySQL requires schema and query adjustments.

hard8-20h6 steps
REST API (Express/Fastify)tRPC

tRPC gives end-to-end type safety between client and server with zero codegen. Best for full-stack TypeScript monorepos using Next.js or similar.

medium4-12h6 steps
GitHub Actions (complex pipelines)Dagger

Dagger lets you write CI pipelines in TypeScript/Go/Python that run identically locally and in CI. Eliminates YAML hell and 'works in CI but not locally'.

hard8-16h6 steps
ConfluenceOutline

Outline is an open-source Confluence alternative. Fast, Markdown-based, self-hostable. Much better search and writing experience.

easy2-6h5 steps
Next.js Pages RouterNext.js App Router

App Router is Next.js's future. React Server Components, server actions, streaming, and layouts replace getServerSideProps/getStaticProps.

hard8-24h6 steps
PlanetScaleTurso

Turso offers a generous free tier (500 DBs, 9GB, 1B reads). Unlike PlanetScale it's SQLite-based (libSQL), so queries are nearly identical but schema is SQLite dialect.

medium4-8h6 steps
AWS S3Cloudflare R2

R2 has zero egress fees vs S3's $0.09/GB. R2 is S3-compatible — just change the endpoint. Ideal for assets served to users.

easy1-3h5 steps
Self-hosted PostgreSQLNeon

Neon adds branching, autoscaling, scale-to-zero, and managed backups. Zero config for the features you'd spend weeks building on self-hosted.

easy1-3h5 steps
BabelSWC

SWC is 20-70x faster than Babel for transpilation. Drop-in replacement for most projects. No plugins needed for TypeScript/JSX.

easy1-2h5 steps
JiraLinear

Linear is 10x faster, keyboard-driven, and designed for engineering teams. The mental model shift (Projects, Cycles, Issues) is the main learning curve.

medium4-8h6 steps
TanStack Query v4TanStack Query v5

v5 simplifies the API — one query signature, no overloads. Minor breaking changes but the codemod handles 80% of the migration.

medium2-4h5 steps
NextAuth.js v4Auth.js v5

Auth.js v5 is the App Router rewrite of NextAuth. Providers work the same but the session API changed significantly.

medium2-4h5 steps
Firebase AuthSupabase Auth

Move just the auth layer from Firebase to Supabase without touching Firestore. Useful when migrating step-by-step.

medium4-8h6 steps
Next.js Markdown blogAstro Content Layer

Astro is purpose-built for content sites. Zero JS by default, island architecture, and Content Collections with type safety beat Next.js for blogs.

medium3-6h6 steps
AxiosNative fetch

Native fetch is available in all modern runtimes (Node 18+, browsers, Deno, Bun). Removes a dependency and works seamlessly with Next.js caching.

easy1-3h5 steps
GraphQL (Apollo)tRPC

tRPC gives type safety without a schema language or codegen. Better fit for full-stack TypeScript apps that don't need a public API.

hard8-20h5 steps
Kubernetes (self-managed)Fly.io

Fly.io manages the underlying infra. Machines API replaces Deployments/Pods. Much simpler ops, global edge deployment, significantly cheaper for small-medium workloads.

medium4-12h6 steps
SQLitePostgreSQL

SQLite is excellent for development and single-server apps. PostgreSQL is needed for multi-server, high concurrency, or cloud-native deployments.

medium3-6h6 steps
Node.jsBun

Bun is 3-4x faster for HTTP throughput and startup time. Drop-in for most Node.js apps. Native TypeScript, test runner, bundler, and package manager included.

easy1-3h5 steps
HerokuCoolify

Coolify is a self-hosted Heroku on your own VPS. Git push deploy, built-in databases, SSL, and all the DX — for the cost of a $5/mo VPS.

medium2-4h6 steps
NextAuth.js / Auth.jsBetter Auth

Better Auth is framework-agnostic, plugin-based, and offers full type safety end-to-end. NextAuth's complexity around adapters and callbacks goes away.

medium3-6h5 steps
Axiosky / native fetch

Axios is 13kb minified+gzipped. Ky is 4kb and built on fetch. For most apps the bundle savings and modern API are worth the migration.

easy1-3h5 steps
TanStack Query v4TanStack Query v5

v5 simplifies the API to single-object signatures and renames a few options. Most upgrades take an hour with the codemod.

medium2-5h5 steps
tRPC v10tRPC v11

v11 adds TanStack Query v5 support, FormData inputs, and improved subscriptions. TypeScript 5.7.2+ required.

medium3-6h5 steps
Vite 5Vite 6

Vite 6 is mostly backwards-compatible. The Environment API is opt-in. Main breaking change is dropping Node 16/17.

easy1-3h5 steps
Kubernetes (small clusters)Coolify

For 1-3 person teams running 5-20 services on K8s, Coolify on a couple of VPS gives 90% of the value at 10% of the operational cost.

medium4-10h6 steps
Create React AppRsbuild

Rsbuild is a Rspack-based build tool that aims for zero-config CRA replacement. Faster than Vite for large apps in some benchmarks.

easy1-2h5 steps
redis (npm)iovalkey

Valkey is the BSD-licensed Redis fork by AWS, Google, Oracle and the Linux Foundation. iovalkey is the ioredis-compatible client. API is identical.

easy1h4 steps
ts-resttRPC

ts-rest gives REST-shaped contracts; tRPC gives RPC. If you don't need REST verbs and are TypeScript-only, tRPC is more ergonomic.

medium4-8h5 steps
Supabase AuthBetter Auth

If you only use Supabase for auth (not the database/storage), Better Auth gives you ownership and removes a vendor. Keep Supabase Postgres if you like it.

medium4-8h5 steps
ZustandJotai

Switch when you find yourself splitting one big Zustand store into many slices and want fine-grained atom-based reactivity instead.

medium3-6h5 steps
DatadogOpenObserve / SigNoz

Datadog bills can hit $50k/mo for mid-size teams. OpenObserve and SigNoz are open-source, OTel-native and run on object storage for cheap retention.

hard8-20h6 steps
ExpressElysia (Bun)

Elysia is built for Bun and gives end-to-end type safety with a Hono-like API. 10x+ throughput vs Express on the same hardware.

medium4-10h6 steps
OpenAI SDK v3 (Node)OpenAI SDK v4

v4 is a complete rewrite — first-class TypeScript, async iterators for streaming, resource-based methods. Worth the upgrade.

medium2-5h5 steps
Create React AppNext.js

CRA is dead. Next.js gives you SSR, SSG, API routes, and a production-ready setup. Most effort is restructuring routing and deciding Pages vs App Router.

medium4-10h7 steps
Node.jsDeno 2

Deno 2 is Node-compatible: npm packages work, node: builtins work, package.json supported. Migration is mostly removing boilerplate and fixing path imports.

medium4-12h7 steps
Apollo ClientTanStack Query + fetch

Apollo Client is heavy (34 KB gzipped) and ties you to GraphQL. TanStack Query + plain fetch (or a thin GraphQL client like graphql-request) gives you the same caching with 10x less complexity.

medium6-16h6 steps
Mongoose (MongoDB)Prisma + MongoDB

Prisma supports MongoDB (preview → stable). You get type-safe queries, migrations-lite via schema push, and a unified ORM if you ever switch to PostgreSQL.

medium6-14h6 steps
Remix v2React Router v7

React Router v7 IS Remix v3. The Remix team merged into React Router. Migration is mostly a package rename with a codemod that handles 90% of changes.

easy1-3h5 steps
Next.js 14Next.js 15

Next.js 15 is a minor upgrade from 14. Main change: fetch caching is opt-in (not opt-out), and async request APIs (cookies, headers, params) are now async. Official codemod handles most of it.

easy1-3h5 steps
Prisma + PlanetScaleDrizzle ORM + Neon

PlanetScale killed its free tier, prompting many to move to Neon (serverless Postgres). Drizzle is lighter than Prisma and Neon-native with HTTP driver support for edge environments.

medium6-12h6 steps
React Class ComponentsReact Hooks (Function Components)

Class components still work in React 19, but no new React features target them. Hooks are idiomatic. Migration is straightforward but time-intensive for large codebases.

medium4-16h6 steps
NextAuth.js v4Auth.js v5 (next-auth v5)

Auth.js v5 is a ground-up rewrite of NextAuth v4. Framework-agnostic, App Router native, Edge-compatible. The API surface changed significantly but migration guides are thorough.

medium3-8h5 steps
ESLint .eslintrcESLint flat config (eslint.config.js)

ESLint v9 makes flat config the default. Legacy .eslintrc files still work with a flag but will be removed in v10. Flat config uses imports instead of extends.

medium2-4h5 steps
Express 4Express 5

Express 5 reached GA after years of beta. Improved async error handling, removed deprecated methods, and updated path matching. Migration is mostly mechanical.

medium3-6h5 steps
PrismaDrizzle ORM

Drizzle is the SQL-first TypeScript ORM gaining ground on Prisma. No query engine binary, smaller bundle, closer to raw SQL. Migration requires schema rewrite but queries map cleanly.

medium6-12h6 steps
Vue 2Vue 3

Vue 2 is EOL (Dec 2023). Vue 3 brings Composition API, Teleport, Suspense, and better TypeScript support. Major breaking changes in reactivity system and template compilation.

hard16-40h5 steps
WebpackRspack

Rspack is a Webpack-compatible bundler written in Rust. 5-10x faster builds. Most Webpack plugins and loaders work without changes. Drop-in replacement for many projects.

easy1-3h5 steps
JestVitest

Vitest is Jest-compatible but faster for Vite-based projects. Same describe/it/expect API. Most Jest tests run without changes. Config is simpler.

easy1-3h5 steps
TerraformOpenTofu

OpenTofu is the Linux Foundation fork of Terraform after the BSL license change. Drop-in replacement. Same syntax, same providers, same state files.

easy1-2h4 steps
CypressPlaywright

Playwright offers faster execution, multi-browser support, and free CI reporting. API is different from Cypress but concepts map well. Microsoft-backed with consistent releases.

medium4-8h5 steps
RedisValkey

Valkey is the BSD-licensed Redis fork by AWS, Google, Oracle under the Linux Foundation. Wire-compatible with Redis 7.2. AWS ElastiCache already defaults to Valkey.

easy1-2h4 steps
styled-componentsTailwind CSS

Moving from runtime CSS-in-JS to utility-first CSS. Eliminates the styled-components runtime, reduces bundle size. Required for React Server Components which don't support runtime CSS-in-JS.

hard8-20h5 steps
Docker Compose v1 (docker-compose)Docker Compose v2 (docker compose)

Docker Compose v1 (Python-based) is EOL. v2 (Go-based) is a Docker CLI plugin. Command changes from docker-compose to docker compose (with space).

easy0.5-1h4 steps
HerokuCoolify (self-hosted)

Coolify on a Hetzner VPS gives Heroku-like DX at a fraction of the cost. Git-push deploy, managed databases, SSL, and a web dashboard.

medium3-6h6 steps
PostmanBruno

Bruno is an open-source, offline-first API client that stores collections as files on disk (git-friendly). No cloud sync, no account required. Direct Postman collection import.

easy1-2h4 steps
GatsbyAstro

Gatsby is effectively dead after Netlify acquisition. Astro is the natural successor for content-heavy sites: MDX support, image optimization, partial hydration, and much faster builds.

medium6-16h5 steps
AirtableNocoDB (self-hosted)

NocoDB is the open-source Airtable alternative. Self-hosted on any database (PostgreSQL, MySQL, SQLite). No record limits, no per-seat pricing. Airtable CSV import supported.

medium3-6h4 steps
AlgoliaTypesense (self-hosted or cloud)

Typesense is an open-source search engine with Algolia-like DX. Self-hosted or managed cloud. No per-search-unit pricing. Supports typo tolerance, faceting, and geo search.

medium4-8h5 steps
Sass legacy JS APISass modern API

The Sass legacy JS API (renderSync/render) is deprecated. Modern API (compile/compileString) is faster, required by Vite 6+, and supports custom importers.

easy0.5-1h4 steps
New RelicGrafana Cloud (or self-hosted)

New Relic is under private equity ownership (cost-cutting risk). Grafana Cloud has a generous free tier. Self-hosted Grafana + Prometheus + Loki gives full observability with no per-host pricing.

medium4-10h4 steps

Explore other areas