Migration Playbooks
Step-by-step interactive guides to migrate between tools. No more googling for 3 hours.
Move from Firebase Firestore + Auth to Supabase PostgreSQL + Auth. Biggest change: NoSQL → SQL mindset.
Railway is the closest Heroku experience. Procfile compatible, auto-detect buildpacks, built-in Postgres.
10x faster dev server, simpler config. Most webpack plugins have Vite equivalents.
CRA is deprecated. Vite is the recommended replacement. Most CRA apps migrate in under 2 hours.
2x faster throughput, built-in validation with JSON Schema, TypeScript-first. Plugin system > middleware chain.
Better DX, prebuilt UI components, simpler pricing. Clerk handles the full user management flow.
Drizzle is lighter, faster, SQL-first. No code generation step, better serverless cold starts.
Zero egress fees, Workers for compute, R2 for storage. Cheaper at scale than Vercel.
Better DX, React Email templates, simpler API. Modern alternative to legacy SendGrid.
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.
Move from MongoDB/Mongoose document model to relational PostgreSQL with Drizzle. Involves rethinking data structure, not just swapping libraries.
Redis changed its license to non-OSS in 2024. Valkey is the Linux Foundation fork with identical API. Drop-in replacement.
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.
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.
Vitest is Jest-compatible but runs on Vite. Same expect/describe/it API, 10x faster with Vite's transform pipeline.
Day.js is a 2KB drop-in replacement for Moment.js (which is deprecated and 70KB). Same API.
Coolify is a self-hosted Vercel/Netlify alternative. Auto-deploys from Git, manages SSL, databases, and Docker apps on your own server.
Gatsby is effectively dead (Netlify acquisition, no updates). Astro is the modern content-first framework with island architecture.
Caddy provides automatic HTTPS (Let's Encrypt), simpler config, and HTTP/3 out of the box. No more manual SSL cert management.
Zustand is simpler, lighter (1KB), no boilerplate. No providers, no action creators, no reducers. Just a hook.
Meilisearch is open-source, self-hostable, with similar API and typo-tolerance. No per-request pricing.
Grafana + Loki + Tempo + Mimir replaces Datadog's logs, traces, and metrics. Self-hosted or Grafana Cloud. Dramatically cheaper at scale.
Hono is 3-5x faster than Express, runs on Cloudflare Workers, Bun, Deno, and Node. TypeScript-first with RPC client generation.
Railway removes Vercel's egress fees and function execution limits. Better for server-rendered apps, background workers, and long-running processes.
Sentry v8 brings OpenTelemetry integration, smaller bundle, and auto-instrumentation. Init order matters — v8 is strict about it.
PostHog Cloud includes 1M free events/mo. Self-hosted was operationally burdensome for small teams. Migration preserves all your events.
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.
Unleash is the open-source LaunchDarkly. Free to self-host, same feature flag concepts, much cheaper at scale.
PostgreSQL is more standards-compliant, has better JSON support, window functions, and a richer extension ecosystem. Moving from MySQL requires schema and query adjustments.
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.
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'.
Outline is an open-source Confluence alternative. Fast, Markdown-based, self-hostable. Much better search and writing experience.
App Router is Next.js's future. React Server Components, server actions, streaming, and layouts replace getServerSideProps/getStaticProps.
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.
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.
Neon adds branching, autoscaling, scale-to-zero, and managed backups. Zero config for the features you'd spend weeks building on self-hosted.
SWC is 20-70x faster than Babel for transpilation. Drop-in replacement for most projects. No plugins needed for TypeScript/JSX.
Linear is 10x faster, keyboard-driven, and designed for engineering teams. The mental model shift (Projects, Cycles, Issues) is the main learning curve.
v5 simplifies the API — one query signature, no overloads. Minor breaking changes but the codemod handles 80% of the migration.
Auth.js v5 is the App Router rewrite of NextAuth. Providers work the same but the session API changed significantly.
Move just the auth layer from Firebase to Supabase without touching Firestore. Useful when migrating step-by-step.
Astro is purpose-built for content sites. Zero JS by default, island architecture, and Content Collections with type safety beat Next.js for blogs.
Native fetch is available in all modern runtimes (Node 18+, browsers, Deno, Bun). Removes a dependency and works seamlessly with Next.js caching.
tRPC gives type safety without a schema language or codegen. Better fit for full-stack TypeScript apps that don't need a public API.
Fly.io manages the underlying infra. Machines API replaces Deployments/Pods. Much simpler ops, global edge deployment, significantly cheaper for small-medium workloads.
SQLite is excellent for development and single-server apps. PostgreSQL is needed for multi-server, high concurrency, or cloud-native deployments.
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.
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.
Better Auth is framework-agnostic, plugin-based, and offers full type safety end-to-end. NextAuth's complexity around adapters and callbacks goes away.
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.
v5 simplifies the API to single-object signatures and renames a few options. Most upgrades take an hour with the codemod.
v11 adds TanStack Query v5 support, FormData inputs, and improved subscriptions. TypeScript 5.7.2+ required.
Vite 6 is mostly backwards-compatible. The Environment API is opt-in. Main breaking change is dropping Node 16/17.
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.
Rsbuild is a Rspack-based build tool that aims for zero-config CRA replacement. Faster than Vite for large apps in some benchmarks.
Valkey is the BSD-licensed Redis fork by AWS, Google, Oracle and the Linux Foundation. iovalkey is the ioredis-compatible client. API is identical.
ts-rest gives REST-shaped contracts; tRPC gives RPC. If you don't need REST verbs and are TypeScript-only, tRPC is more ergonomic.
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.
Switch when you find yourself splitting one big Zustand store into many slices and want fine-grained atom-based reactivity instead.
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.
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.
v4 is a complete rewrite — first-class TypeScript, async iterators for streaming, resource-based methods. Worth the upgrade.
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.
Deno 2 is Node-compatible: npm packages work, node: builtins work, package.json supported. Migration is mostly removing boilerplate and fixing path imports.
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.
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.
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.
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.
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.
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.
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.
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.
Express 5 reached GA after years of beta. Improved async error handling, removed deprecated methods, and updated path matching. Migration is mostly mechanical.
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.
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.
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.
Vitest is Jest-compatible but faster for Vite-based projects. Same describe/it/expect API. Most Jest tests run without changes. Config is simpler.
OpenTofu is the Linux Foundation fork of Terraform after the BSL license change. Drop-in replacement. Same syntax, same providers, same state files.
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.
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.
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.
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).
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.
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.
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.
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.
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.
The Sass legacy JS API (renderSync/render) is deprecated. Modern API (compile/compileString) is faster, required by Vite 6+, and supports custom importers.
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.