i personally don't recommend it until they have a well written document as a lot of thing are not clear seems over encapsulated, you have to figure out yourself..
you have a better option you can try WXT (<a href="https://wxt.dev/" rel="nofollow">https://wxt.dev/</a>)) also i don't find current scaled project that are using it. soo yh... try break build fix that's what we do
The title may be little misleading. It is not Chrome-specific but also support Firefox and some other (Chromium-based) browsers:<p><a href="https://docs.plasmo.com/framework/workflows/faq#what-are-the-officially-supported-browser-targets" rel="nofollow">https://docs.plasmo.com/framework/workflows/faq#what-are-the...</a>
I also suggest checking out WXT (<a href="https://wxt.dev/" rel="nofollow">https://wxt.dev/</a>) as an alternative (it's also faster using Vite and supports more frameworks).
If you’re looking for a Vue-flavored dev experience as opposed to a react one, I recommend this:<p><a href="https://github.com/antfu-collective/vitesse-webext">https://github.com/antfu-collective/vitesse-webext</a><p>Building a web extension is pretty straightforward in Vite-land. There are some rough edges around hot reloading, but I doubt it could get that much better.
The project might do a better job of explaining what it actually intends to solve. At least as far as the readme.md goes.<p>I have been active in the area of browser extension development for over a decade now. And to me, it wasn't very clear at first glance.<p>It isn't crossbrowser extension development (which these days is actually fairly easy if you ignore Safari.... [0]).<p>The README showcases adding a lot of other frameworks and scaffolding, which to me isn't what makes extension development all that challenging. In fact, using a modern modular approach can be achieved using something like rollup [1].<p>Of course, I do believe that Plasmo makes setting it all up a lot easier. But just looking at the terminal animation I also can't help but feel that it adds a lot of abstraction I might regret later. To be clear, I also do realize that some people don't mind this and think it is easier to not have to think about the details.<p>Only when digging a bit deeper into the actually documentation [2] it starts to make more sense to me. From what I gather:<p>- Manifest creation is done entirely by plasma. You can just declare the thing you want to use or create in the right place like an options page [3]. Which is actually quite neat and something I can see makes things a bit easier for someone freshly starting with extensions. Although I'd argue that the manifest of an extension is not the most complex thing [4], even more when I see that for that with Plasmo you still need to declare similar things just at a different spot [5]<p>- It provides some scaffolding and abstractions around things like storage and messing between content_scripts and background workers.<p>- There are some neat utilities available for publishing extensions.<p>Overall, it looks like it like it does take away the creation of an extension and a lot of the utility functions you would need to write anyway. However it comes at the cost, in my opinion, of extreme abstraction to the degree that a beginner basically will have learned Plasmo and still have next to no understanding of browser extensions themselves.<p>It's one of those things where I wish this sort of tooling was available around a decade ago but I am also glad that it was not given the knowledge it gained me.<p>[0] <a href="https://news.ycombinator.com/item?id=41043974">https://news.ycombinator.com/item?id=41043974</a><p>[1] <a href="https://github.com/toolbox-team/reddit-moderator-toolbox/blob/master/rollup.config.js">https://github.com/toolbox-team/reddit-moderator-toolbox/blo...</a><p>[2] <a href="https://docs.plasmo.com" rel="nofollow">https://docs.plasmo.com</a><p>[3] <a href="https://docs.plasmo.com/framework/ext-pages#adding-the-options-page" rel="nofollow">https://docs.plasmo.com/framework/ext-pages#adding-the-optio...</a><p>[4] <a href="https://github.com/toolbox-team/reddit-moderator-toolbox/blob/master/extension/chrome_manifest.json">https://github.com/toolbox-team/reddit-moderator-toolbox/blo...</a><p>[5] <a href="https://docs.plasmo.com/framework/content-scripts#adding-a-single-content-script" rel="nofollow">https://docs.plasmo.com/framework/content-scripts#adding-a-s...</a>
Tangentially related, I've always wondered why there aren't better frameworks for creating userscripts.<p>I like customizing websites for various things, but it would be nice if I had some library I can pull into a userscript purpose-built for customizing websites (like adding pop-up config dialogs, in-line boxes to take personal notes / comment on websites, or just tools geared toward injecting and scanning the DOM using mutationobservers).<p>... or is this that, since userscripts are implemented via browser extensions anyway
Some more discussion in a Show HN two years ago <a href="https://news.ycombinator.com/item?id=31609896">https://news.ycombinator.com/item?id=31609896</a>
i built a chrome extension recently and i was evaluating/trying out different frameworks for building a browser extension.<p>for anyone who is interested for an alternative to Plasmo, i chanced upon <a href="https://github.com/extension-js/extension.js">https://github.com/extension-js/extension.js</a>
how do you build a single browser extension and then have compatible firefox/chrome files that are different in what they require for their own thing.<p>i mean currently we are doing terribly stupid thing. two folders /firefox and /chrome and do the updates manually in both. there should be something easier.
This should have really said "WebExtension extensions" instead of "Chrome extensions" as it's a standard across most modern browsers these days