Hint
Vite uses native ES modules in dev — instant server start vs CRA's webpack bundle
CRA (Create React App) is largely deprecated. Vite is the modern standard for React projects.
| Create React App | Vite | |
|---|---|---|
| Dev server start | 30-60s (bundles everything) | <300ms (no bundling) |
| HMR (hot reload) | Slow (rebundles) | Instant (native ESM) |
| Build tool | webpack | Rollup (prod), esbuild (dev) |
| Config | Ejection required | vite.config.ts |
| Maintenance | Unmaintained | Actively maintained |
// Vite dev — serves files directly as ES modules
// Browser requests /src/App.tsx → Vite transforms just that file → instant
// CRA dev — bundles ALL files on start, then watches
// Every change → re-bundle affected module graph → slow
// Starting a new project
npm create vite@latest my-app -- --template react-ts
# vs
npx create-react-app my-app --template typescript # avoid
Alternatives for production apps: