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
Navigation Hooks
Navigation Hooks
Link Components
Link Components
Location/Pathname
Location/Pathname
Route Parameters
Route Parameters
Programmatic Navigation
Programmatic Navigation
React Hooks
State Management
useState→ PreserveduseReducer→ PreserveduseContext→ Preserved (with ‘use client’ added)
Side Effects
useEffect→ PreserveduseLayoutEffect→ PreserveduseInsertionEffect→ Preserved
Memoization
useMemo→ PreserveduseCallback→ PreserveduseRef→ Preserved
Custom Hooks
- All custom hooks preserved
- ‘use client’ added if they use browser APIs
- Type signatures maintained
Styling & CSS
Tailwind CSS
Tailwind CSS
All Tailwind classes are preserved exactly as written:The CLI also preserves:
- Tailwind configuration (copies
tailwind.config.js) - Custom utility classes
@applydirectives in CSS
CSS Modules
CSS Modules
Styled Components
Styled Components
Detected and preserved with ‘use client’ directive:
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.
