Skip to content

ExtForge

The build system for Manifest V3 browser extensions.

Quick start

Scaffold, install, and load your first extension in under 60 seconds.

Cross-browser

Chrome, Firefox, Edge, and Safari from a single config file.

HMR that works

Targeted reloads via script-id matching, React Fast Refresh for UI, full-page error overlay on build failures.

Typed APIs

Plugins, testing helpers, and error codes — all fully typed.

Browser extension tooling has not kept up with web development. You end up stitching together webpack configs, custom manifest transformers, and browser-specific packaging scripts — all of which break when Chrome ships a new MV3 restriction.

ExtForge is a zero-config build system built specifically for Manifest V3. It uses esbuild under the hood for sub-second rebuilds, ships a WebSocket-based HMR layer that targets individual content scripts by ID, and produces a separate dist/<browser>/ directory for each store you need to submit to.

It is for extension authors who need to ship the same extension to multiple browser stores without maintaining multiple build pipelines.

  • MV3 bundler — esbuild pipeline with automatic manifest generation and icon resizing.
  • Dev server with HMR — WebSocket-driven targeted reloads, React Fast Refresh for popup/options/sidepanel, full-page error overlay on build failures.
  • Cross-browser builds — Per-browser output with polyfill and compat shims applied automatically. Pure-Node ZIP fallback for Windows packaging.
  • Scaffold (extforge init) — Interactive project generator: framework, CSS, browsers, features, permissions.
  • Runtime packages — Typed chrome.storage wrapper (extforge/storage), typed RPC + Ports (extforge/messaging), Shadow-DOM Content Script UI (extforge/csui), structured logger (extforge/logger), .env loader (extforge/env).
  • Testing helpers — Vitest preset with Chrome API fakes; Playwright fixtures for end-to-end.