Repo of the Day
PlasmoHQ/plasmo
Published: Jan 3, 2025
Open repository ↗🧩 The Browser Extension Framework
Summary
The Plasmo Framework is a browser extension SDK that lets developers build Chrome, Edge, and Firefox extensions using React and TypeScript without manually authoring manifest files or configuring bundlers. It is open source under the MIT license and is described in the README as alpha software, meaning APIs may shift between versions. The project provides a CLI, a development server with React HMR, and file-based conventions for the standard extension surfaces.
What it is useful for
Plasmo is useful for teams that want a web-style developer experience when shipping browser extensions. It handles build and packaging across browser targets, so engineers can focus on application code rather than MV2/MV3 manifest quirks, content script isolation, and per-browser bundler tweaks. The topics list confirms the targets are Chrome, Edge, and Firefox, with Parcel as the underlying bundler.
The documented feature set covers the common extension surfaces: a popup (popup.tsx), an options page (options.tsx), a background service worker (background.ts), and one or more content scripts (content.ts), plus a content scripts UI mode and tab pages. It also ships built-in APIs extensions typically write by hand, including a Storage API, a Messaging API, .env* file loading, and remote code bundling for things like Google Analytics. Optional adapters are referenced for Svelte and Vue, though the primary stack is React + TypeScript.
How engineers can use it
The README documents a three-step bootstrap using pnpm, with Node.js 16.x or later required:
pnpm create plasmo example-dir
cd example-dir
pnpm dev
After scaffolding, source files are placed at well-known paths, or organized into per-surface directories such as popup/index.tsx and contents/site-one.ts. Source can optionally live under a src/ subdirectory, while assets and config files stay in the project root. The framework's docs cover multi-browser builds, automated submission via the Browser Platform Publisher (BPP), and example projects for Firebase Auth, Redux, Supabase, and Tailwind in a separate examples repository.
The README's explicit limitation is that Plasmo is alpha software, so behavior may change between versions and production use should account for that. For supported browser targets, customization, and deployment workflows, the README points readers to docs.plasmo.com.