Create React browser extensions with no build configuration.
- Same CRA Developer Experience for your browser extension projects (
service worker functionality)
- Webpack dev server hot reloads extension on changes (NOTE: contentScript hot reloading not supported)
- Supports any combination of background, content and popup chrome extensions
- Automated fork watcher to stay updated with the original CRA
- Add support for automated deployments and docs to help users with what to do after having built their extension.
- Add e2e test suite similar to the original CRA and run with automated pipeline.
- Add some kind of dependency watcher (e.g. greenkeeper) to stay up to date with the dependencies that are not managed by CRA
If something doesn’t work, please file an issue.
npx create-react-app my-browser-extension --scripts-version react-browser-extension-scripts cd my-browser-extension npm start
Then open Chrome, and unpack the newly created
/dev folder to see your extension added locally to your browser.
When you’re ready to ship your extension, create an optimized build with
npm run build.
What's do I need to know to start building my extension ?
It's follows mostly the same conventions as CRA.
Only 1 new convention
There are different types of chrome extensions which can be any combination of:
- Popup UI which renders your
index.jswhen you click on your extension in the browser extension icon.
- Background script which will run in the background from
/background/index.jsand can be use for things like state-management.
- Content script from
/contentScript/index.jswhich will run on configured web pages
- Options UI
❎Does not support yet
- Dev tools page
❎Does not support yet
Do not delete any of the entry files, this is a convention to remind you what your extensions could be. The build will notify you and fail if you remove any of these important files.
Creating a Browser Extension
You’ll need to have Node 8.16.0 or Node 10.16.0 or later version on your local development machine (but it’s not required on the server). You can use nvm (macOS/Linux) or nvm-windows to easily switch Node versions between different projects.
To create a new Browser Extension, you may choose one of the following methods:
npx create-react-app my-browser-extension --scripts-version react-browser-extension-scripts
npm init react-app my-browser-extension --scripts-version react-browser-extension-scripts
npm init <initializer> is available in npm 6+
yarn create react-app my-browser-extension --scripts-version react-browser-extension-scripts
yarn create is available in Yarn 0.25+
It will create a directory called
my-browser-extension inside the current folder.
Inside that directory, it will generate the initial project structure and install the transitive dependencies:
my-browser-extension ├── README.md ├── node_modules ├── package.json ├── .gitignore ├── public │ ├── img │ │ ├── icon-16.png │ │ ├── icon-48.png │ │ ├── icon-128.png │ ├── popup.html │ └── manifest.json └── src ├── background │ ├── index.js ├── contentScripts │ ├── index.js ├── App.css ├── App.js ├── App.test.js ├── index.css ├── index.js ├── logo.svg
No configuration or complicated folder structures, just the files you need to build your extension.
Once the installation is done, you can open your project folder:
Inside the newly created project, you can run some built-in commands:
npm start or
Runs the browser extension in development mode. You will see a
/dev folder has been created in your project with the extension.
To view the extension in your browser, open up chrome and unpack extension.
The extension will automatically reload if you make changes to the code.
You will see the build errors and lint warnings in the console.
npm run build or
Builds the app for production to the
It correctly bundles React in production mode and optimizes the build for the best performance.
Your extension is ready to be shipped.
this awesome browser extensions list for more great packages to help you create a great web extensionCheck out
We'd love to have your helping hand on
create-react-extension! See CONTRIBUTING.md for more information on what we're looking for and how to get started.
We are grateful to everyone who has been a part of the following existing related projects for their ideas and collaboration:
- How to Fork CRA Post to help me create this successfully
- React-chrome-extension-boilerplate and create-chrome-extension, both of unfortunately don't look like they're actively supported, but have been inspiration and shown an appetite for building extensions in the community.
- I have no doubt this will grow as the project grows.
Create React App is open source software licensed as MIT.