Skip to main content

What Gets Converted

The CLI handles the mechanical transformation of React patterns to Next.js equivalents. Here’s the comprehensive breakdown.

React Router → Next.js Navigation

React Hooks

State Management

  • useState → Preserved
  • useReducer → Preserved
  • useContext → Preserved (with ‘use client’ added)

Side Effects

  • useEffect → Preserved
  • useLayoutEffect → Preserved
  • useInsertionEffect → Preserved

Memoization

  • useMemo → Preserved
  • useCallback → Preserved
  • useRef → Preserved

Custom Hooks

  • All custom hooks preserved
  • ‘use client’ added if they use browser APIs
  • Type signatures maintained

Styling & CSS

All Tailwind classes are preserved exactly as written:
The CLI also preserves:
  • Tailwind configuration (copies tailwind.config.js)
  • Custom utility classes
  • @apply directives in CSS
Detected and preserved with ‘use client’ directive:
Requires styled-components configuration in next.config.js for SSR compatibility.

React Helmet → Next.js Head

Context Providers

React Context is preserved with automatic ‘use client’ detection:

File Structure Transformation

The CLI restructures your project from Vite/React Router conventions to Next.js App Router:

Automatic ‘use client’ Detection

The CLI analyzes your code and adds the ‘use client’ directive when needed:

Triggers 'use client'

  • React hooks (useState, useEffect, etc.)
  • Event handlers (onClick, onChange)
  • Browser APIs (window, document, localStorage)
  • Third-party client libraries

Stays Server Component

  • Pure presentational components
  • Data fetching
  • Async components
  • No browser APIs used

TypeScript Preservation

All TypeScript types are maintained:
  • Interface definitions
  • Generic types
  • Type aliases
  • Prop types
  • Return types
  • Import types

What’s Not Converted (By Design)

These remain unchanged and work as-is:
  • API calls (fetch, axios, etc.)
  • State management libraries (Redux, Zustand, etc.)
  • UI libraries (shadcn/ui, Material-UI, etc.)
  • Form libraries (React Hook Form, Formik, etc.)
  • Date libraries (date-fns, moment, etc.)
  • Testing code (Jest, Testing Library, etc.)
Want to see what breaks? Check out What Breaks.