09/02/2026โฑ๏ธ 3 min read
Create React App (CRA) Complete Beginner Guide
ReactCreate React AppCRAJavaScriptFrontendBeginners

Create React App (CRA) Complete Beginner Guide

Introduction

Create React App (CRA) is a quick way to scaffold a React project with zero configuration. In this tutorial, youโ€™ll create a new project, understand the scripts, add components, and build for production. If you're using frameworks like Next.js or Vite, the concepts still help you understand React basics.

Prerequisites

  • Node.js 18+ and npm (or Yarn/Pnpm)
  • A terminal (PowerShell, bash, or zsh)
  • A code editor (VS Code)

1) Create a New React App

Using npm (recommended):
bash
npx create-react-app my-app cd my-app
Using Yarn:
bash
yarn create react-app my-app cd my-app

2) Start the Development Server

bash
npm start # or yarn start
Open http://localhost:3000 to see your app. The page reloads when you save edits.

3) Project Structure Overview

my-app/
  node_modules/
  public/
    index.html
    favicon.ico
  src/
    App.css
    App.js
    index.css
    index.js
  package.json
  • src/App.js: Main component
  • src/index.js: Entry point that mounts React to the DOM
  • public/index.html: HTML template

4) Create Your First Component

Create src/components/Hello.js:
javascript
export default function Hello({ name }) { return <h2>Hello, {name}!</h2>; }
Use it in src/App.js:
javascript
import Hello from './components/Hello'; export default function App() { return ( <div> <h1>My React App</h1> <Hello name="World" /> </div> ); }

5) Fetch Data (Example)

javascript
import { useEffect, useState } from 'react'; export default function Users() { const [users, setUsers] = useState([]); useEffect(() => { fetch('https://jsonplaceholder.typicode.com/users') .then(r => r.json()) .then(setUsers); }, []); return ( <ul> {users.map(u => <li key={u.id}>{u.name}</li>)} </ul> ); }

6) Add React Router (Optional)

bash
npm install react-router-dom
Basic usage in src/App.js:
javascript
import { BrowserRouter, Routes, Route, Link } from 'react-router-dom'; import Home from './pages/Home'; import About from './pages/About'; export default function App() { return ( <BrowserRouter> <nav> <Link to="/">Home</Link> | <Link to="/about">About</Link> </nav> <Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> </Routes> </BrowserRouter> ); }

7) Environment Variables

CRA exposes env vars prefixed with REACT_APP_. Create .env:
REACT_APP_API_URL=https://api.example.com
Access in code: process.env.REACT_APP_API_URL.

8) Useful Scripts

  • Start dev: npm start
  • Test: npm test
  • Lint (if configured): npm run lint
  • Build: npm run build
  • Preview build locally: npx serve -s build

9) Build for Production

bash
npm run build
Outputs an optimized build/ folder: minified JS/CSS, asset hashing, and a service worker if enabled.

10) Deploy

  • Netlify: drag-and-drop the build/ folder or connect repo
  • Vercel: import repo, set build command to npm run build and output to build
  • GitHub Pages: npm install gh-pages --save-dev and configure homepage + deploy script

Troubleshooting

  • Clear cache: rm -rf node_modules && rm package-lock.json && npm i (Windows: delete folder via Explorer)
  • Port in use: change port set PORT=3001 && npm start (PowerShell: $env:PORT=3001; npm start)
  • Node version: ensure compatible Node (use nvm/nvs to switch).

Conclusion

You created and ran a React app with CRA, added components, routing, env variables, and built for production. From here, explore Next.js or Vite for faster builds and SSR/SSG, but CRA remains a simple way to learn React fundamentals.

Share this article

Comments