This article is published in English.
Beginner Guide: Vite First, Then Next.js (Skip New CRA)
Compare CRA, Vite, and Next.js on setup, DX, SEO, and learning path so new React learners pick a sane default.
CRA, Vite, or Next.js — a beginner map
Learning React usually means meeting three names fast: Create React App, Vite, and Next.js. Internet advice conflicts — CRA is dead, Next is too heavy, just use Vite. Here is a practical comparison for first projects.
Quick overview
- CRA — historical default; Webpack-based, now largely unmaintained for greenfield.
- Vite — fast dev server and ESM-first build; excellent SPA starter.
- Next.js — React framework with routing, SSR/SSG, and deploy conventions.
Create React App
CRA hid config and got many people started. Today it lags on modern tooling and is a poor default for new apps.
npx create-react-app my-app
Vite
Vite shines for client-side React: instant HMR, simple config, and a clear path to production builds without adopting a full framework.
npm create vite@latest
Next.js
Next adds file-based routing, server components/SSR options, API routes, and first-class deployment stories. More concepts, more power.
npx create-next-app@latest
Setup and learning curve
CRA: familiar but stale. Vite: smallest jump from components in a browser. Next: steeper because of server/client boundaries and routing conventions.
Dev speed and performance
Vite wins local feedback loops. Next can win perceived performance for content sites via SSR/SSG when configured well. CRA trails both for modern DX.
SEO
Pure CRA/Vite SPAs need extra work (pre-render or a meta strategy). Next server rendering helps documents and marketing pages out of the box.
Real-world fit
- Dashboards and authenticated SPAs → Vite (or SPA mode elsewhere)
- Content, SEO, mixed server/client → Next
- Legacy tutorials still showing CRA → follow along, then migrate mindset to Vite/Next
What beginners should learn first
Start with Vite plus React plus TypeScript to learn components, hooks, and props without framework magic. Add Next.js when you need routing conventions, SSR, or a full-stack React app. Treat CRA as legacy context, not a 2026 default.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.
Prefer small examples readers can paste into a sandbox without a monorepo.