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.
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!
- First-class React + Typescript Support
- Declarative Development
- Content Scripts UI
- Tab Pages
- Live-reloading + React HMR
.env*
files- Storage API
- Messaging API
- Remote code bundling (e.g., for Google Analytics)
- Targeting multiple browser and manifest pairs
- Automated deployment via BPP
- Optional support for Svelte and Vue
And many, many more! 🚀
- Node.js 16.x or later
- MacOS, Windows, or Linux
- (Strongly Recommended) pnpm
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.
Check out the documentation to get a more in-depth view into the Plasmo Framework.
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"
pnpm create plasmo example-dir
cd example-dir
pnpm dev
The road ahead is filled with many turns.
- Popup changes go in
popup.tsx
- Options page changes go in
options.tsx
- Content script changes go in
content.ts
- Background service worker changes go in
background.ts
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.
To see a list of supported browser targets, please refer to our documentation here.
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.
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 is currently alpha software, and some things might change from version to version, so please be mindful and use it at your own risk.