This is the fourth post in the extension development series. I've just finished writing the seventh one, which will be published gradually after proofreading.
This is the second post in the extension development series blog. I just finished it, so if you find any errors or have any questions, feel free to leave me a comment!
I've been building browser extensions for about a year and created around 20 of them. Thought it might be useful to share what I've learned in a series of posts.
This first one covers the basic concepts - manifest files, content scripts, and how they work together.
If you have any questions or suggestions for future topics, feel free to comment!
That's right, there's a similar comparison between the iOS App Store and Android Play Store. Although the annual $99 fee is indeed expensive, the Play Store requires every app to find 12 users for 14 days of internal testing before submission for review, which is utterly incomprehensible, not to mention the constant warnings about inactive accounts potentially being disabled.
I want to be able to understand your point. For those who enjoy programming, writing code is indeed a pleasure. I spent the whole day today writing a JavaScript serialization package, and even though I know someone has already done it, I am still willing to write a new one for my specific scenario.
On the other hand, I think that although AI seems friendly to newcomers (inexperienced developers), it is actually more friendly to experienced developers because you can have AI help you complete some tasks and then review them yourself. Inexperienced developers have difficulty accurately pinpointing problems when they encounter issues, causing AI to keep going in circles and hitting walls.
What's my point? That's a phenomenal question. I think my point was to see if anyone else out there shared my existential state. Now, of course I knew someone did, but there's really nothing like a good ol' confirmation from the other.
Based on devalue, I wrote a new JS serialization library called devaluex, which supports asynchronous serialization and plugins. Through plugins, it supports types like Blob, Stream, Error, Request, Response, etc. It is still quite rudimentary at the moment and is mainly used for communication serialization between browser extension Content Script and Background, as JSON.stringify does not support many types.
I previously tried seroval (the SolidJS base library) and devalue (the Svelte base library). The authors support more features and use eval (very cleverly) for deserialization. Unfortunately, eval cannot be used in some environments (such as browser extensions). Although the authors also support a JSON mode, its performance is not as good as devalue, so I ultimately chose to wrap devalue.