The fastest way today: Vite
Create React App (CRA) is officially deprecated (as of Feb 2025, the React team removed it from the official docs). The recommended way to start a plain client-side React app today is Vite.
npm create vite@latest my-app -- --template react
cd my-app
npm install
npm run dev
For TypeScript (recommended for anything beyond a toy project):
npm create vite@latest my-app -- --template react-ts
Folder structure (Vite default)
my-app/
├── index.html
├── package.json
├── vite.config.js
├── src/
│ ├── main.jsx # entry point, mounts <App /> to the DOM
│ ├── App.jsx # root component
│ ├── App.css
│ └── assets/
// src/main.jsx
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import App from './App.jsx';
createRoot(document.getElementById('root')).render(
<StrictMode>
<App />
</StrictMode>,
);
Choosing the right starting point
| Tool | Best for |
|---|---|
| Vite + React | Client-only SPAs, dashboards, learning React |
| Next.js | Production apps needing SSR/SSG, routing, API routes, SEO |
| Remix | Server-first apps with heavy focus on web fundamentals |
| Expo | React Native mobile apps |
Essential dev tools
- React Developer Tools (browser extension) — inspect the component tree, props, state, and profile renders.
- ESLint + Prettier — catch bugs and keep formatting consistent; Vite's React template ships ESLint by default.
- TypeScript — catches prop/type mistakes before runtime; the React team recommends it for anything beyond a quick prototype.