> ## Documentation Index
> Fetch the complete documentation index at: https://extension.js.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Compatibility matrix

> One page pairing what Extension.js supports: browsers by operating system, frameworks by dev update model, and CSS tooling by what installs automatically.

This page pairs the support claims that otherwise live on separate pages: which browsers run on which operating systems, what "reload" means per framework, and which CSS tools need dependencies installed. Each table links to the page that covers setup in depth.

## Browsers × operating systems

All Chromium-based and Gecko-based targets work on Windows, macOS, and Linux. Safari is the exception: running it needs macOS with full Xcode. A Safari dev session there streams logs and reloads on save, like the other targets. `extension build --browser=safari` still produces the complete `dist/safari` bundle on Windows and Linux, skipping the Xcode packaging step with a warning.

| Target | Windows | macOS | Linux | Status |
| :- | :-: | :-: | :-: | :- |
| Google Chrome | ✅ | ✅ | ✅ | Supported |
| Microsoft Edge | ✅ | ✅ | ✅ | Supported |
| Mozilla Firefox | ✅ | ✅ | ✅ | Supported |
| Chromium forks (Brave, Opera, Vivaldi, Yandex) | ✅ | ✅ | ✅ | Supported |
| Gecko forks (Waterfox, LibreWolf) | ✅ | ✅ | ✅ | Supported |
| `chromium-based` / `gecko-based` (custom binary) | ✅ | ✅ | ✅ | Supported |
| Apple Safari | ⚠️ | ✅ | ⚠️ | macOS: `build` and `dev`, needs Xcode, with logs and reload. No `preview` or `start`. Windows/Linux: `build` produces `dist/safari`, Xcode packaging skipped |

See [Browsers available](/docs/browsers/browsers-available) for target names and flags, and [Building Safari extensions](/docs/browsers/safari) for the Safari workflow and limitations.

## Frameworks × dev update model

Every framework gets automatic detection, bundling, and dev-time updates. What differs is the update model: whether an edit hot-swaps code in place or reloads the surface. See [Reload and HMR](/docs/features/reload-and-hmr) for the underlying tiers.

| Framework | Update model in dev | Component state on edit | Notes |
| :- | :- | :- | :- |
| [React](/docs/languages-and-frameworks/react) | Fast refresh | Preserved | `react-refresh` toolchain installed automatically on detection. |
| [Preact](/docs/languages-and-frameworks/preact) | Live reload | Resets | Fast refresh temporarily disabled (upstream plugin incompatibility); `react` aliases to `preact/compat`. |
| [Vue](/docs/languages-and-frameworks/vue) | Component remount | Resets | Single-file components rebuild and remount on change. |
| [Svelte](/docs/languages-and-frameworks/svelte) | Hot component updates | Resets | `svelte-loader` hot reload; edited components update without a full page reload. |
| [TypeScript](/docs/languages-and-frameworks/typescript) / vanilla JS | Per-surface reload | n/a | Background, content, and page scripts follow the standard reload tiers. |
| [WebAssembly](/docs/languages-and-frameworks/webassembly) | Per-surface reload | n/a | `.wasm` assets rebuild with the bundle. |

## CSS tooling × what installs automatically

Plain CSS and CSS Modules are built in. Preprocessors need their toolchain installed in your project: when it is missing, Extension.js warns, names the file, and ships the source uncompiled rather than installing anything for you. Tailwind rides through the PostCSS pipeline and is installed by you.

| CSS tech | Works out of the box | Installed automatically on detection |
| :- | :-: | :- |
| CSS | ✅ | Nothing needed |
| [CSS Modules](/docs/languages-and-frameworks/css-modules) (`*.module.css`) | ✅ | Nothing needed |
| [Sass/SCSS](/docs/languages-and-frameworks/sass) | On detection | Sass loader + PostCSS toolchain |
| [Less](/docs/languages-and-frameworks/less) | On detection | `less` + `less-loader` |
| [PostCSS](/docs/integrations/postcss) | With a config | `postcss` + `postcss-loader` |
| [Tailwind CSS](/docs/integrations/tailwindcss) | After you install | You add `tailwindcss`; wired via PostCSS |

## Package managers

`npm`, `pnpm`, `yarn`, `bun`, and `deno` are all supported for `create`, `dev`, and `build`. Deno projects scaffold a `deno.jsonc` instead of a `package.json`; the toolchain is manifest-agnostic. See [Create your first extension](/docs/getting-started/create-your-first-extension) for the Deno-specific notes.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.