# Create React App: The Deprecated React Scaffolding Tool and What to Use Instead

> Create React App is a now-deprecated scaffolding tool that set up a zero-configuration React project with a single command. The project is in long-term stasis with no active development since early 2025, and the React team officially recommends migrating to a React framework instead.

**react/create-react-app** — GitHub describes it as Set up a modern web app by running one command.. The repository metadata lists JavaScript as its primary language. The metadata lists the MIT license. This article stays within the project description and details documented in the GitHub repository README.

- Repository: https://github.com/react/create-react-app
- Website: https://create-react-app.dev/
- Stars: 103,251 · Forks: 26,890
- Language: JavaScript
- License: MIT
- Published: 2026-08-13 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/react-create-react-app

## What Create React App Was and Why It Is Now Deprecated

Create React App (CRA) was a tool for bootstrapping single-page React applications with a preconfigured webpack, Babel, and ESLint setup, requiring no build configuration from the developer. The README describes its original philosophy: one build dependency, no required configuration, and an eject option that exposes the underlying config files when needed.

The README now carries a prominent deprecation notice. The official position is that Create React App was one of the key tools for getting a React project up and running in 2017 to 2021, and it is now in long-term stasis. The React team does not recommend starting production applications based on it, and recommends migrating to one of the React frameworks documented on the react.dev "Start a New React Project" page. The last GitHub release was v5.0.1, published on 2022-04-12. The last push to the repository was on 2025-02-15.

## What Create React App Generated

Running `npx create-react-app my-app` created a directory called `my-app` with a fixed project structure and installed transitive dependencies. The README shows the generated layout:

```
my-app
├── README.md
├── node_modules
├── package.json
├── .gitignore
├── public
│   ├── favicon.ico
│   ├── index.html
│   └── manifest.json
└── src
    ├── App.css
    ├── App.js
    ├── App.test.js
    ├── index.css
    ├── index.js
    ├── logo.svg
    └── serviceWorker.js
```

The tool set up support for React, JSX, ES6, TypeScript, Flow, autoprefixed CSS, a test runner, a live development server, and a build script. The development server listened on `http://localhost:3000`. The `npm run build` command bundled the application for production with hashes in filenames.

## How to Bootstrap a New React App Today

The React team's recommendation is to use a React framework rather than a bare scaffolding tool. The react.dev documentation links to the supported options. For teams that want a single-page app without server-side rendering, the React team's own documentation points to Vite as a common alternative for setting up a minimal React project.

The Quick Overview in the README still documents the original commands:

```sh
npx create-react-app my-app
cd my-app
npm start
```

These commands still work in the sense that the npm package exists, but the result is an outdated configuration based on webpack 5 and the v5.0.1 codebase from 2022. The README explicitly warns against using this for new production applications. If a tutorial you are following uses Create React App, the README notes there is still value in completing the tutorial with it, but it should not be the starting point for new work.

## The Eject Mechanism and What It Exposed

Create React App had an eject command. Running `npm run eject` moved all the webpack, Babel, and ESLint configuration directly into the project directory. After ejecting, the developer had full control over the build configuration but also full responsibility for maintaining it.

The README described this as a one-way operation. Once ejected, the project could not return to the managed CRA setup. The eject mechanism was designed for developers who needed build configuration that CRA's abstractions could not accommodate, such as custom webpack plugins, specific Babel presets, or unusual output structures. The package.json in the repository's own root uses `react-scripts` commands in its build script, confirming that the repository itself used the same tool it shipped.

## What Was Included and Its Limitations

Create React App bundled webpack, Babel, ESLint, and a Jest test runner as a single `react-scripts` package. The benefit was that a developer could `npm install` without managing those tools individually. The limitation was that the toolchain was hidden and difficult to customize without ejecting.

CRA did not support server-side rendering. It produced single-page applications. It had no built-in routing, no server rendering, and no static site generation. As the React ecosystem moved toward frameworks (Next.js, Remix) that add these capabilities, CRA's value proposition narrowed to teams that specifically wanted only a client-side app with minimal setup.

The build tool used inside CRA was webpack. As Vite emerged as a faster alternative for development server startup and hot module replacement, teams began preferring it even for simple client-side apps. The react.dev search data shows "create react app vs vite" and "create react app with vite" as common searches, reflecting this migration pattern.

## Comparing Create React App to Vite

Vite is a build tool that uses native ES modules in development, which means the development server starts near-instantly regardless of project size. Create React App used webpack, which bundles the full application before serving it in development mode. On large projects, this made CRA development server startup noticeably slow compared to Vite.

Vite supports React through the `@vitejs/plugin-react` plugin. The scaffolding command `npm create vite@latest` offers React as one of several framework options and generates a similar minimal project structure. Vite supports TypeScript out of the box, handles CSS, and produces an optimized production build. For new React projects that do not require server-side rendering, Vite is the current practical replacement for CRA.

For projects that need server-side rendering, static generation, or edge deployment, Next.js (which uses webpack or Turbopack) is a more appropriate starting point. The React documentation at react.dev specifically recommends framework-first rather than bare-bundler-first for new applications.

## Migration and the Current State of the Repository

The repository is not archived and is not formally closed, but it is in long-term stasis. The last release was v5.0.1 on 2022-04-12 and the last push was on 2025-02-15. There are no active maintainers publishing new releases. The project's GitHub issues and discussions page still receives traffic from developers who encounter it through tutorials.

For teams with existing CRA projects, the migration options depend on complexity. A minimal migration to Vite involves replacing the `react-scripts` dependency with Vite and its React plugin, copying the public directory contents into the Vite-expected locations, and updating the entry point. The React documentation page "Start a New React Project" at react.dev covers the recommended frameworks and their trade-offs.

The package is MIT licensed. Existing CRA-bootstrapped applications continue to run, but they receive no security updates to `react-scripts` or its bundled webpack and Babel versions.

## Conclusion

Create React App should not be used for new projects. The React team placed it in long-term stasis, the last release was in 2022, and the last push was in February 2025. For new single-page React apps, Vite with the React plugin is the current practical replacement. For applications that need server-side rendering or static generation, Next.js is the recommended starting point. Existing CRA applications continue to function but receive no ongoing security updates to the bundled toolchain.

## FAQ

### How do you install Create React App?

The original command is `npx create-react-app my-app`, which requires Node.js 14 or later. However, the project is deprecated and in long-term stasis as of 2022. The React team recommends using Vite or a React framework for new projects instead.

### How do you create a React app?

The React team currently recommends using a React framework (such as Next.js) or Vite for new projects. The original `npx create-react-app my-app` command still works but produces an outdated configuration from 2022 that the React team no longer recommends for new production apps.

### How do you use Vite to create a React app?

The README does not document Vite directly, as CRA used webpack internally. For current guidance on starting a new React project with Vite, the React documentation at react.dev/learn/start-a-new-react-project is the recommended starting point.

### How do you use Create React App with TypeScript?

Create React App supported TypeScript through a template flag: `npx create-react-app my-app --template typescript`. TypeScript support is included in the v5.0.1 release. This still works, but the resulting setup is based on 2022 tooling.

### What is included in a Create React App project?

A CRA project includes webpack, Babel, ESLint, a Jest test runner, a live development server on port 3000, support for React, JSX, ES6, TypeScript, and Flow, autoprefixed CSS, and a production build script. All tooling is hidden inside `react-scripts` unless ejected.

## Sources

- [Official documentation](https://create-react-app.dev/)
- [Official README](https://github.com/react/create-react-app#readme)
- [Project repository](https://github.com/react/create-react-app)
- [Release notes](https://github.com/react/create-react-app/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/react-create-react-app
