Override create-react-app webpack, Jest, and dev server configurations without ejecting.
React-app-rewired is a configuration override tool for Create React App (CRA) projects. It enables developers to customize webpack, Jest, and dev server settings without ejecting from CRA, allowing for added plugins, loaders, and other build modifications. It solves the limitation of CRA's "no config" approach by providing a controlled way to extend its tooling.
React developers using Create React App who need to customize their build configuration—such as adding Webpack plugins, modifying Babel settings, or adjusting Jest options—but want to avoid ejecting and managing the full config themselves.
Developers choose react-app-rewired because it offers a middle ground between CRA's simplicity and full configuration control. It provides flexibility to tweak tooling while keeping CRA's updates and structure, unlike alternatives that require ejecting or forking react-scripts.
Override create-react-app webpack configs without ejecting
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables customization of webpack, Jest, and dev server settings without ejecting from Create React App, preserving its streamlined setup and update path.
Supports overriding webpack for dev/prod builds, Jest for testing, dev server for HTTPS/proxies, and paths via a config-overrides.js file, as detailed in the README.
Boasts a wide range of community-maintained rewires for libraries like styled-components, TypeScript, and webpack plugins, listed in the README for easy integration.
Allows exporting the rewired webpack config for use with tools like React Cosmos, facilitating advanced setups without ejecting.
The project is 'lightly' maintained by the community since CRA 2.0, leading to potential compatibility issues and slower bug fixes, as noted in the README.
Breaks CRA's 'guarantees,' meaning users fully own the config with no support from the CRA team, increasing debugging complexity and risk of build errors.
Changing the default entry point from src/index.js is difficult and requires workarounds like file requires or custom scripts, as admitted in the 'Additional Issues' section.
Requires different versions for CRA 1.x and 2.x, and version 2.0 removed helper functions, causing migration headaches and setup confusion.