Hacker Newsnew | past | comments | ask | show | jobs | submit | rxliuli's commentslogin

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.


It appears to have been an accident now - they fixed the issue two hours after I posted on Reddit.


Curious if you get any sort of takedown notice.


Haven't received it yet.


the page is dmca unavailable on github now as i write this message


I guess you're promoting something, which could indeed get blocked.


they literally asked me to share it


Got tired of dealing with unreadable fetch code when copying from browser DevTools - especially those with long query strings and minified JSON.

Built *Fetch Beautifier* to solve this. It formats fetch requests instantly with `Ctrl+Shift+V`.

*Before:* ```js fetch('https://api.example.com/data?userId=123&type=post&limit=10&o...', { headers: { accept: 'application/json', 'content-type': 'application/json', authorization: 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9', }, body: '{"title":"Hello World","content":"This is a test"}', method: 'POST', }) ```

*After:* ```js const url = new URL('https://api.example.com/data') url.search = new URLSearchParams([ ['userId', '123'], ['type', 'post'], ['limit', '10'], ['offset', '0'], ]).toString() fetch(url, { headers: { accept: 'application/json', 'content-type': 'application/json', authorization: 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9', }, body: JSON.stringify({ title: 'Hello World', content: 'This is a test', }), method: 'POST', }) ```

Free on VS Code marketplace. Feedback welcome!

https://marketplace.visualstudio.com/items?itemName=rxliuli....

Demo Video: https://www.youtube.com/watch?v=9SMLOwZwnU0


I built a simple tool to clean them up instantly. It auto-parses URL params, nested JSON, and formats the body perfectly.


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.


My experience is similar to yours. LLMs are helpful but the code that I write directly, from my own thinking, fits better and feels more satisfying.

Craftsmanship brings joy different from the one of productivity.

Not sure if because age, or because I use Ruby, a beautiful, terse language, but I like the process.

Often I close Cursor and fire up SublimeText for a simpler, quieter process.


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.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: