Skip to main content
Build extension UI surfaces quickly with utility classes across popup, options, new tab, sidebar, and content-script entries. Extension.js integrates Tailwind through PostCSS and supports both Tailwind v3 and v4 setups.

When Tailwind CSS is a good fit

  • You need fast UI iteration across multiple extension surfaces.
  • You prefer utility-first styling with shared tokens.
  • You want consistent styling patterns across page and content-script entries.

Tailwind capabilities

Template examples

Use this template when you want a complete Tailwind setup in a real extension UI surface. sidebar-shadcn screenshot
Repository: examples/sidebar-shadcn

Usage with an existing extension

Installation

Install the required dependencies:

Configuration

Create postcss.config.js:
For Tailwind v3 projects, use tailwindcss as the PostCSS plugin and keep a tailwind.config.js content list.

Tailwind v4 vs v3 quick setup

Tailwind content paths (v3 style)

Usage

Create a global stylesheet and import Tailwind:

Create the global CSS file

Import this file in entry scripts that use Tailwind classes.

In a page script (popup/options/new-tab)

In a content script

Extension.js routes content-script CSS through its content-script style pipeline and emits those assets under content_scripts/.

Best practices

  • Keep Tailwind source imports in shared style entry files (styles/globals.css).
  • Ensure your content scanning includes pages/, scripts/, and src/ when relevant.
  • In monorepos, verify Tailwind content paths resolve from the extension project root.
  • Use templates when possible to avoid configuration drift between PostCSS and Tailwind versions.

Next steps

  • Configure PostCSS for additional CSS transforms.
  • Ensure your CSS follows best practices with Stylelint.