They are okayish in my book.
Personally, I prefer using the MDN docs [0][1] for web extensions as I am using mozilla's polyfill library [2] anyway. These contain more practical examples and less abstract descriptions at times, including a very thorough getting started guide [3] going over everything including various concepts.
The point remains the same though, the basics aren't all that difficult and while Plasmo does seem to make some aspects easier it also seems like overkill in other areas in regard to abstraction.
[0] https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Web...
[1] https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Web...
[2] https://github.com/mozilla/webextension-polyfill
[3] https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Web...
It’s really a great little framework
I am also highly doubtful of it working perfectly given my experiences with Safari's implementation of the webextensions API. Though that of course depends on what API calls you actually need.
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.
It isn't crossbrowser extension development (which these days is actually fairly easy if you ignore Safari.... [0]).
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].
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.
Only when digging a bit deeper into the actually documentation [2] it starts to make more sense to me. From what I gather:
- 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]
- It provides some scaffolding and abstractions around things like storage and messing between content_scripts and background workers.
- There are some neat utilities available for publishing extensions.
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.
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.
[0] https://news.ycombinator.com/item?id=41043974
[1] https://github.com/toolbox-team/reddit-moderator-toolbox/blo...
[2] https://docs.plasmo.com
[3] https://docs.plasmo.com/framework/ext-pages#adding-the-optio...
[4] https://github.com/toolbox-team/reddit-moderator-toolbox/blo...
[5] https://docs.plasmo.com/framework/content-scripts#adding-a-s...