A modern foundation for Chrome extensions with Webpack 5, Tailwind CSS 3, and Manifest V3.
Content Script Loaded | Options UI |
---|---|
![]() |
![]() |
Popup UI (Status tab) | Popup UI (Actions tab) |
---|---|
![]() |
![]() |
Options UI in Popup | Options UI in Popup (Saved) |
---|---|
![]() |
![]() |
git clone --depth=1 https://github.com/justintieu/chrome-extension-boilerplate.git
cd chrome-extension-boilerplate
npm install
npm run build
āāā README.md # README file
āāā .github # GitHub folder
āāā public/ # Static assets
ā āāā *.html # Extension pages
ā āāā icons/ # Extension icons
āāā scripts # Scripts folder
āāā src/
ā āāā background.js # Service worker
ā āāā content.js # Content scripts
ā āāā popup.js # Popup UI
ā āāā options.js # Settings page
ā āāā styles.js # Tailwind CSS
āāā webpack.config.js # Build configuration
āāā tailwind.config.js # Tailwind settings
āāā postcss.config.js # PostCSS plugins
āāā manifest.json # Extension manifest
Command | Description |
---|---|
npm run dev |
Development build with watch mode |
npm run build |
Creates production build |
npm run package |
Create zip from production build |
npm run release |
Runs build and package commands |
npm run prettier |
Format all files |
manifest.json
based on your needs:{
"name": "Your Extension",
"description": "Custom description",
"version": "1.0.0",
"action": {
"default_popup": "popup.html"
}
}
public/
webpack.config.js
// tailwind.config.js
module.exports = {
theme: {
extend: {
colors: {
primary: "#3b82f6",
},
},
},
};
npm run release
extension.zip
to Chrome Web Store DashboardQ: Styles not updating?
Q: Extension not loading?
chrome://extensions
Everyone is welcome to contribute to this project. Feel free to open an issue if you have any questions or find a bug. Totally open to suggestions and improvements.
Licensed under the MIT License, Copyright Ā© 2025 See LICENSE for more information.
Found this useful? Please star ā the repo!