{
  "count": 16,
  "playbooks": [
    {
      "slug": "callbacks-to-async-await",
      "url": "/playbooks/callbacks-to-async-await",
      "json": "/playbooks/callbacks-to-async-await.json",
      "from": "Callbacks and Promises",
      "to": "async/await",
      "category": "language",
      "tags": [
        "javascript",
        "typescript",
        "async",
        "promises"
      ],
      "description": "Replace callback-based and raw Promise chains with async/await for readable async code."
    },
    {
      "slug": "commonjs-to-esm",
      "url": "/playbooks/commonjs-to-esm",
      "json": "/playbooks/commonjs-to-esm.json",
      "from": "CommonJS",
      "to": "ESM",
      "category": "infra",
      "tags": [
        "esm",
        "commonjs",
        "modules",
        "node",
        "javascript"
      ],
      "description": "Replace require/module.exports with ES module import/export syntax."
    },
    {
      "slug": "cra-to-vite",
      "url": "/playbooks/cra-to-vite",
      "json": "/playbooks/cra-to-vite.json",
      "from": "Create React App",
      "to": "Vite",
      "category": "frontend",
      "tags": [
        "vite",
        "cra",
        "react",
        "bundler"
      ],
      "description": "Migrate a Create React App project to Vite for faster dev server startup and builds."
    },
    {
      "slug": "cypress-to-playwright",
      "url": "/playbooks/cypress-to-playwright",
      "json": "/playbooks/cypress-to-playwright.json",
      "from": "Cypress",
      "to": "Playwright",
      "category": "frontend",
      "tags": [
        "e2e",
        "testing",
        "cypress",
        "playwright"
      ],
      "description": "Replace Cypress with Playwright for cross-browser end-to-end testing with async/await."
    },
    {
      "slug": "enzyme-to-rtl",
      "url": "/playbooks/enzyme-to-rtl",
      "json": "/playbooks/enzyme-to-rtl.json",
      "from": "Enzyme",
      "to": "React Testing Library",
      "category": "frontend",
      "tags": [
        "testing",
        "react"
      ],
      "description": "Migrate Enzyme-based tests to React Testing Library, adopting user-centric testing patterns."
    },
    {
      "slug": "express-to-fastify",
      "url": "/playbooks/express-to-fastify",
      "json": "/playbooks/express-to-fastify.json",
      "from": "Express",
      "to": "Fastify",
      "category": "backend",
      "tags": [
        "node",
        "express",
        "fastify",
        "api"
      ],
      "description": "Migrate an Express HTTP server to Fastify for built-in validation, schema-first design, and higher throughput."
    },
    {
      "slug": "flow-to-typescript",
      "url": "/playbooks/flow-to-typescript",
      "json": "/playbooks/flow-to-typescript.json",
      "from": "Flow",
      "to": "TypeScript",
      "category": "language",
      "tags": [
        "typescript",
        "flow",
        "types"
      ],
      "description": "Replace Flow type annotations with TypeScript equivalents across a JavaScript codebase."
    },
    {
      "slug": "javascript-to-typescript",
      "url": "/playbooks/javascript-to-typescript",
      "json": "/playbooks/javascript-to-typescript.json",
      "from": "JavaScript",
      "to": "TypeScript",
      "category": "language",
      "tags": [
        "typescript",
        "javascript",
        "types"
      ],
      "description": "Incrementally migrate a JavaScript codebase to TypeScript with strict mode."
    },
    {
      "slug": "jest-to-vitest",
      "url": "/playbooks/jest-to-vitest",
      "json": "/playbooks/jest-to-vitest.json",
      "from": "Jest",
      "to": "Vitest",
      "category": "infra",
      "tags": [
        "testing",
        "vitest",
        "jest",
        "vite"
      ],
      "description": "Replace Jest with Vitest for faster test execution in Vite-based projects."
    },
    {
      "slug": "lodash-to-native",
      "url": "/playbooks/lodash-to-native",
      "json": "/playbooks/lodash-to-native.json",
      "from": "Lodash",
      "to": "Native JavaScript",
      "category": "data",
      "tags": [
        "lodash",
        "javascript",
        "es2020",
        "native"
      ],
      "description": "Replace Lodash utility functions with native JavaScript equivalents to reduce bundle size."
    },
    {
      "slug": "moment-to-date-fns",
      "url": "/playbooks/moment-to-date-fns",
      "json": "/playbooks/moment-to-date-fns.json",
      "from": "Moment.js",
      "to": "date-fns",
      "category": "data",
      "tags": [
        "dates",
        "moment",
        "date-fns"
      ],
      "description": "Replace Moment.js with date-fns for tree-shakeable, immutable date utilities."
    },
    {
      "slug": "pretender-to-msw",
      "url": "/playbooks/pretender-to-msw",
      "json": "/playbooks/pretender-to-msw.json",
      "from": "Pretender",
      "to": "Mock Service Worker",
      "category": "frontend",
      "tags": [
        "testing",
        "mocking",
        "msw",
        "pretender",
        "api"
      ],
      "description": "Replace Pretender's in-memory fake server with MSW for network-level request interception."
    },
    {
      "slug": "proptypes-to-typescript",
      "url": "/playbooks/proptypes-to-typescript",
      "json": "/playbooks/proptypes-to-typescript.json",
      "from": "PropTypes",
      "to": "TypeScript",
      "category": "language",
      "tags": [
        "typescript",
        "react",
        "proptypes",
        "types"
      ],
      "description": "Replace runtime PropTypes validation with compile-time TypeScript interfaces."
    },
    {
      "slug": "class-to-functional-components",
      "url": "/playbooks/class-to-functional-components",
      "json": "/playbooks/class-to-functional-components.json",
      "from": "React Class Based",
      "to": "React Functional Components",
      "category": "frontend",
      "tags": [
        "react",
        "hooks",
        "components"
      ],
      "description": "Migrate React class based components to functional components with hooks."
    },
    {
      "slug": "redux-to-redux-toolkit",
      "url": "/playbooks/redux-to-redux-toolkit",
      "json": "/playbooks/redux-to-redux-toolkit.json",
      "from": "Vanilla Redux",
      "to": "Redux Toolkit + RTK Query",
      "category": "frontend",
      "tags": [
        "redux",
        "redux-toolkit",
        "rtk-query",
        "state-management"
      ],
      "description": "Replace boilerplate-heavy vanilla Redux with Redux Toolkit and RTK Query for data fetching."
    },
    {
      "slug": "webpack-to-vite",
      "url": "/playbooks/webpack-to-vite",
      "json": "/playbooks/webpack-to-vite.json",
      "from": "Webpack",
      "to": "Vite",
      "category": "infra",
      "tags": [
        "vite",
        "webpack",
        "bundler",
        "build"
      ],
      "description": "Replace Webpack with Vite for native ESM dev server and faster builds."
    }
  ]
}