• Stars
    star
    5,648
  • Rank 7,226 (Top 0.2 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 2 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🧩 The Browser Extension Framework

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

  • Node.js 16.x or later
  • MacOS, Windows, or Linux
  • (Strongly Recommended) pnpm

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.

  • 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

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

More Repositories

1

examples

🔰 Example projects that demonstrate how to use the Plasmo Framework and integrate with popular tools
TypeScript
171
star
2

bpp

🚀 Browser Platform Publisher
TypeScript
93
star
3

bms

📢 Browser Market Submission
TypeScript
26
star
4

storage

💾 Safely store data and share it across your extension
TypeScript
18
star
5

edge-addons-api

🐓 Edge Addons API Library for nodejs
TypeScript
13
star
6

chrome-webstore-api

Chrome webstore API for NodeJS
TypeScript
10
star
7

mozilla-addons-api

Mozilla Addons API
TypeScript
10
star
8

docs

📘 Documentation site
TypeScript
8
star
9

safari-webstore-api

TypeScript
7
star
10

mice

Micro Internet Connectivity Establishment
TypeScript
7
star
11

rps

Run scripts in Parallel or in Sequence. Modernized fork of https://www.npmjs.com/package/npm-run-all
TypeScript
6
star
12

with-svelte

Plasmo with-svelte basic example template
Svelte
5
star
13

with-wasm-zig

⚡ Using zig to create wasm bundle for plasmo extension
Zig
5
star
14

open-assistant-extension

TypeScript
5
star
15

download-release-asset

An Action to download release asset via the GitHub Release API
TypeScript
4
star
16

plasmo-test

RFC and BUG reproduction. In the future, it can serve as a regression test suite!
TypeScript
4
star
17

soft-secret

🍦Write client ids and keys from github secret or plain text into a file for build actions CI.
TypeScript
4
star
18

puro

A simple utility library to create react context/provider with proper typing support
TypeScript
4
star
19

gcp-refresh-token

A cli util to retrieve a Google OAuth 2.0 refresh token
TypeScript
3
star
20

with-vue

Plasmo with-vue basic example template
Vue
3
star
21

plasmo-utils

TypeScript
3
star
22

plasmo-constants

TypeScript
3
star
23

world-edit

TypeScript
2
star
24

cex

Testing web extension deployment
Shell
2
star
25

permission-ui

JavaScript
2
star
26

plasmo-config

JavaScript
2
star
27

qtt

Quick TypeScript Template - use this for any quick scripting need
JavaScript
2
star
28

ghw-workshop

TypeScript
1
star
29

.github

1
star
30

use-hashed-state

Store state in localstorage using a serialized key generated using node-object-hash
TypeScript
1
star
31

awesome-plasmo

Awesome extensions and tools made with Plasmo
1
star