Question presented to candidate:
"What is create-react-app, and when would you reach for it to start a new project today?"
What a strong answer should cover:
- CRA was the officially blessed zero-configuration starter: one command produced a working React app with Babel, webpack, ESLint, and a dev server pre-wired.
- Its value was hiding the build configuration, with
ejectas the escape hatch. - The key fact: the React team officially sunset CRA in February 2025. It is deprecated and unmaintained, kept alive only in maintenance mode.
- Why: it had no active maintainers, and it solved none of the problems real production apps have — routing, data fetching, code splitting.
- The current recommendation: a framework (Next.js, React Router, Expo) for most apps, or a build tool (Vite, Parcel, Rsbuild) if you want a plain SPA.
- Secondary problems that made it untenable: slow cold starts and rebuilds versus modern esbuild/Rollup-based tooling, and a large transitive dependency tree with persistent audit noise.
- So the answer to "when would you use it" is: for a new project, never — only when maintaining an existing CRA app, where the real discussion is migration.
Clarifying questions expected:
- "Is this a new project, or are we maintaining an existing CRA app?"
- "Do we need server rendering and SEO, or is a client-only SPA fine?"
Code / implementation expected: No. This is a tooling and judgement question; naming the right replacement command matters more than code.