Thomas Schranz ⛄️

Plasmo - The browser extension platform

Plasmo makes it easy to build, test, and deploy browser extensions. Plasmo Framework lets you build without having to be a browser extension expert. Once you've built your extension, you can use Plasmo Itero to deploy to beta testers without a review process.

Add a comment

Replies

Best
Stefan
Maker
📌
Thanks @__tosh for hunting us! 🚀 Hey Product Hunt! 👋 Stefan and Louis here, co-founders of Plasmo! Plasmo makes building browser extensions a piece of cake. 🍰 🤯 If you've built extensions in the past, you know how painful the process can be. Building a simple "hello world" extension takes a lot of work, let alone a full-fledged React app using Tailwind and Firebase that injects into a complex series of websites, all using their own technologies and unaware of the extension's existence. Complexity stacks up super fast! 🛠️ We decided to take action, so we created Plasmo! Plasmo is a two-part platform: the Framework and Itero. 🌐 🌟 Framework is our open-source, declarative framework that makes building browser extensions a breeze. Just name a file content.tsx, export a React component, and Plasmo Framework will automatically bundle it for you, mounting it onto every web page while ensuring styles don't leak. The same goes for background.ts, options.tsx, popup.tsx, etc. Using our examples, you can hit the ground running: With pnpm create plasmo --with-tailwind, you'll have a pre-configured extension using Tailwind already built for you. To explore more examples we offer, check out our examples repo [1] 🌠 🔧 Once you've crafted an awesome MVP and are ready to test it with your beta testers, we've built Itero TestBed—think Apple's TestFlight, but for browser extensions. 🔗 Connect TestBed to your GitHub repo, and each commit will automatically build and deploy your latest code changes to all of your beta testers—no review process needed! We're super passionate about browser extensions. If you've built something with Plasmo, please let us know! [1]: https://github.com/PlasmoHQ/exam...
Vincent Driessen
We recently wrote a browser extension[1] without any prior experience, and Plasmo made it a breeze. Right from the start, we could focus on what we wanted to build, and not worry about the messy details involved in building a cross-browser extension. It just felt like writing a normal React app. Their documentation is also amazing. Can't recommend them enough. If you want to build a browser extension yourself, absolutely give Plasmo a try! [1]: https://liveblocks.io/devtools
Luke Heine
I've been following this for a while and am so excited to see it on product hunt. I'm a big expo fan, and this is like the expo for browser extensions.
Wilhelm Klopp
What an awesome framework and platform! I remember building a chrome extension for the first time many years ago and struggling with poor documentation and an unfamiliar architecture, no more!
Jökull Sólberg
Great framework. Used to build a Chrome exrensions
caleb
The plasmo framework itself is truly incredible a work of art and has helped me so much in my life, can't wait to see where it goes!! I love the vibe and energy in the community and it's just awesome how far it has already taken chrome extensions but also how much excitement there is to take it even further. I have been wondering about a future where plasmo turns the background.ts script of it's extensions into a fully fledged server that sends react ssg components to the frontend.
Louis
@superspookyuser That's definitely been on the roadmap: https://github.com/PlasmoHQ/plas... We're super excited about the future of browser extension as well :D
Salil Sethi
@stestefanfan - Congrats on the launch! It is exciting to see how Plasmo simplifies the browser extension development process. Quick question for you - How does Plasmo handle compatibility and support for different browsers, given their varying extension APIs and requirements?
Louis
@stestefanfan @salil_sethi The current framework offers 2 solutions to solve this problem: 1 - Browser target-specific module. For example, when building with `--target=edge-mv3`, user may use the entry file `popup.edge.tsx` instead. The Framework compiler then pick up just this entry file. 2- Environment variable - the Framework treeshakes any branch gated by env, thus: `if (process.env.PLASMO_BROWSER === "edge") {}` will only be available for edge build. Ultimately, we want the business logic to be agnostic of the specific browser extension API. We're slowly experimenting with this via our external API modules such as storage and messaging. With these APIs, developer can work with a higher layer of abstraction and forget about the browser APIs. We also want to enhance the bundler side of the framework such that it can magically inject polyfill + permissions for extension API when appropriate - we're already doing this for known node-modules, which allow most npm registry package to just work with extension.
DC
pretty cool platform within a platform! i've been meaning to try some browser extension ideas and this makes it real easy.
Johan Steneros
Not sure I will ever work on a browser plugin, but if I do, this seems like a great resource to have.
avi12
Great framework, very active I used it for my 100K-user extension, https://chrome.google.com/websto...
1234
Next
Last