plasmo README

The project's README from github.com/PlasmoHQ/plasmo. As one markdown file: README.md.

plasmo logo

See License NPM Install Follow PlasmoHQ on Twitter Watch our Live DEMO every Friday Join our Discord for support and chat about our projects

English | 简体中文 | Tiếng Việt | Deutsch | French | Indonesian | Русский | Turkish | 日本語 | 한국어

Production Cloud: We've built a cloud offering for browser extensions called Itero. Check it out if you want instant beta testing and more awesome features.

Plasmo Framework

The Plasmo Framework is a battery-packed browser extension SDK made by hackers for hackers. Build your product and stop worrying about config files and the odd peculiarities of building browser extensions.

It's like Next.js for browser extensions!

CLI Demo

Highlighted Features

And many, many more! 🚀

System Requirements

Examples

We have examples showcasing how one can use Plasmo with Firebase Authentication, Redux, Supabase authentication, Tailwind, and many more. To check them out, visit our examples repository.

Documentation

Check out the documentation to get a more in-depth view into the Plasmo Framework.

Browser Extensions Book

For a more in-depth view into how browser extensions work, and how to develop them, we highly recommend Matt Frisbie's new book "Building Browser Extensions"

Usage

pnpm create plasmo example-dir
cd example-dir
pnpm dev

The road ahead is filled with many turns.

Directories

You can also organize these files in their own directories:

ext-dir
├───assets
|   └───icon.png
├───popup
|   ├───index.tsx
|   └───button.tsx
├───options
|   ├───index.tsx
|   ├───utils.ts
|   └───input.tsx
├───contents
|   ├───site-one.ts
|   ├───site-two.ts
|   └───site-three.ts
...

Finally, you can also avoid putting source code in your root directory by putting them in a src sub-directory, following this guide. Note that assets and other config files will still need to be in the root directory.

Supported Browsers

To see a list of supported browser targets, please refer to our documentation here.

Community

The Plasmo community can be found on Discord. This is the appropriate channel to get help with using the Plasmo Framework.

Our Code of Conduct applies to all Plasmo community channels.

Contributing

Please see the contributing guidelines to learn more.

A big thanks to all of our amazing contributors ❤️

Feel free to join the fun and send a PR!

Plasmo Framework

Plasmo Examples

Plasmo Storage

Browser Platform Publisher

Disclaimer

Plasmo is currently alpha software, and some things might change from version to version, so please be mindful and use it at your own risk.

License

MIT ⭐ Plasmo

plasmo (PlasmoHQ/plasmo)

bundler
Searching Database…

13.2K ·GitHub
What is this?Plasmo is a browser extension framework that handles bundling, manifest generation, and dev tooling so you can focus on building the actual extension logic instead of config files.
Is this a bundler or a full framework?It is a full SDK/framework, not just a bundler — it is described as being like Next.js but for browser extensions, with conventions for pages, scripts, and config.
How do I structure my extension code with Plasmo?Plasmo uses file-based conventions: put your popup code in popup.tsx, options page in options.tsx, content script in content.ts, and background service worker in background.ts; these can also be organized into their own folders or a src subdirectory.
What do I need installed before using Plasmo?You need Node.js 16.x or later on macOS, Windows, or Linux, and pnpm is strongly recommended as the package manager.
Is Plasmo stable enough for production extensions?The project describes itself as alpha software, meaning behavior can change between versions, so you should use it with some caution in production.
Do I need to know React and TypeScript to use it?Plasmo is built around first-class React and TypeScript support by default, so familiarity with both is expected, though Svelte and Vue are optionally supported too.
Which browsers can I target with one Plasmo project?Plasmo supports targeting multiple browsers and manifest versions from the same codebase; the full list of supported targets is in the documentation.
Can I use Svelte or Vue instead of React?Yes, Plasmo offers optional support for Svelte and Vue in addition to its default React and TypeScript setup.
Does it support live reload during development?Yes, Plasmo includes live-reloading with React HMR so changes show up instantly while developing.
How do I publish my extension automatically?Plasmo integrates with BPP (Browser Platform Publisher) to automate deployment of your extension to browser stores.
What is Itero?Itero is Plasmo's own cloud offering for browser extensions, giving instant beta testing and other extra features beyond the open-source framework.
Creator
PlasmoHQ
Size
6.2 MB
Stars
13.2K
Age
4y
Commits · 90 Days