-
tampermonkey
Tampermonkey is the most popular userscript manager, with over 10 million users. It's available for Chrome, Microsoft Edge, Safari, Opera Next, and Firefox.
-
SurveyJS
Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
This extension makes use of JS computed property names to perform user specified dynamic actions on user specified elements.
I started working on an extension primarily for my own very specific use case. I knew of Tampermonkey and it's relatives before, but hadn't used it extensively. I also was following the news of MV3, so wasn't sure of their long term viability. But more than anything having recently got into frontend development I also just wanted to build an extension myself, getting to understand the newer limitation and alternatives was just a bonus point.
Literally a couple of days ago I got to know (From HN nonetheless https://news.ycombinator.com/item?id=38526277) that userscripts are going to be allowed in MV3 too, so I finally decided to actually check out ViolentMonkey, which is pretty neat, but from the looks of it would have to migrate to `chrome.userScripts.register` which would eventually require `userScripts` permission and with it would need [developer mode enabled](https://developer.chrome.com/docs/extensions/reference/api/u...). While browsing through the subsequent discussions I saw there were many other alternatives for dynamic script execution, from creating and the dynamic code to `` tags to using `evaljs`, but I wasn't aware of them while building this (see for ex: <a href="https://news.ycombinator.com/item?id=31425256">https://news.ycombinator.com/item?id=31425256</a> and <a href="https://github.com/Tampermonkey/tampermonkey/issues/644#issuecomment-857838249">https://github.com/Tampermonkey/tampermonkey/issues/644#issu...</a>) (and tbf it wan't even my goal to get full JS execution in my extension).<p>Long term my goal was to build a small JSON config for the actions needed and parse and apply them to have the desired behavior. I also was planning on exposing some extension only behavior (like tab functionality) via message passing with service workers (The config could be something like