Skip to content

πŸš€πŸ› οΈπŸ§© ExtenStart: Chrome Extension Boilerplate built with Webpack 5 + Tailwind CSS 3 + Manifest V3. ⚑ Modern foundation with Popup UI, Content Scripts, Options Page, Background Service Worker, Settings Sync, Build Pipeline, and Chrome Store Packaging.

License

Notifications You must be signed in to change notification settings

justintieu/chrome-extension-boilerplate

Repository files navigation

Chrome Extension Boilerplate ⚑

A modern foundation for Chrome extensions with Webpack 5, Tailwind CSS 3, and Manifest V3.

Features

  • πŸ›  Webpack 5 + Babel
  • 🎨 Tailwind CSS + PostCSS
  • πŸ“¦ Manifest V3 Ready
  • πŸ“„ HTML/JS/CSS Hot Reloading
  • ⚑ Production Optimization
  • πŸ“¦ Auto ZIP Packaging
  • πŸ“ Code Formatter with Prettier
  • 🎁 Automatic changelog generation with Semantic Release
  • πŸ“ Linter with ESLint

Demo

Content Script Loaded Options UI
Content Script Loaded Options UI
Popup UI (Status tab) Popup UI (Actions tab)
Popup UI (Status tab) Popup UI (Actions tab)
Options UI in Popup Options UI in Popup (Saved)
Settings UI Settings UI (Saved)

Requirements

  • Node.js 22+ and npm

Quick Start

  1. Getting started Run the following command on your local environment:
git clone --depth=1 https://github.com/justintieu/chrome-extension-boilerplate.git
cd chrome-extension-boilerplate
npm install
  1. Build Project
npm run build
  1. Load in Chrome
  • Go to chrome://extensions
  • Enable "Developer mode" (toggle top-right)
  • Click "Load unpacked"
  • Select the dist folder

Project Structure

β”œβ”€β”€ 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

Scripts

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

Customization

  1. Update Manifest Edit manifest.json based on your needs:
{
  "name": "Your Extension",
  "description": "Custom description",
  "version": "1.0.0",
  "action": {
    "default_popup": "popup.html"
  }
}
  1. Add/Remove Pages
  • Create new HTML in public/
  • Add JS entry in webpack.config.js
  • Update manifest permissions
  1. Modify Styles Edit Tailwind config:
// tailwind.config.js
module.exports = {
    theme: {
        extend: {
            colors: {
                primary: "#3b82f6",
            },
        },
    },
};

Packaging

  1. Build production files and create ZIP package
npm run release
  1. Upload extension.zip to Chrome Web Store Dashboard

FAQ

Q: Styles not updating?

  • Restart Webpack dev server
  • Check Tailwind content config

Q: Extension not loading?

  • Reload extension in chrome://extensions
  • Check browser console (Ctrl+Shift+J)

Contributions

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.

License

Licensed under the MIT License, Copyright Β© 2025 See LICENSE for more information.

Found this useful? Please star ⭐ the repo!

About

πŸš€πŸ› οΈπŸ§© ExtenStart: Chrome Extension Boilerplate built with Webpack 5 + Tailwind CSS 3 + Manifest V3. ⚑ Modern foundation with Popup UI, Content Scripts, Options Page, Background Service Worker, Settings Sync, Build Pipeline, and Chrome Store Packaging.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published