Documentation Index
Fetch the complete documentation index at: https://mintlify.com/crxjs/chrome-extension-tools/llms.txt
Use this file to discover all available pages before exploring further.
Overview
CRXJS provides extension HTML pages with Vite HMR during development and optimizations in production builds. Extension pages include popups, options pages, and custom pages.Standard Extension Pages
The manifest can declare common extension pages:manifest.json
- Serves these pages from the Vite dev server during development
- Bundles and optimizes them for production
- Handles all imports and dependencies
Extra HTML Pages
If you need additional HTML pages beyond those in the manifest, declare them in your Vite config underbuild.rollupOptions.input.
vite.config.ts
Opening Extra Pages
You can open extra pages from your extension code:background.ts
Development vs Production
During development, HTML pages load from the Vite dev server with HMR enabled:Loading Placeholder Pages
During development, CRXJS emits placeholder HTML files that redirect to the Vite dev server. This ensures the extension loads correctly while preserving HMR functionality. From the source code (plugin-manifest.ts:461):HTML in Content Scripts
You can inject extension pages into host pages using iframes. See the Content Scripts page for details on HTML in content scripts.Page Imports
Extension pages support all Vite features:popup.ts
Hot Module Replacement
Extension pages support full HMR during development:- React: Fast Refresh preserves component state
- Vue: HMR updates components without page reload
- CSS: Style changes apply instantly
- Assets: Image updates reflect immediately
Learn more about HMR in the HMR documentation.
TypeScript Support
Use TypeScript for your page entry files:popup.html
Related
Manifest
Configure your extension manifest
HMR
Hot Module Replacement for extensions
Content Scripts
Inject HTML into web pages