[HN Gopher] For your next side project, make a browser extension
       ___________________________________________________________________
        
       For your next side project, make a browser extension
        
       Author : Glench
       Score  : 108 points
       Date   : 2023-01-15 18:21 UTC (4 hours ago)
        
 (HTM) web link (www.geoffreylitt.com)
 (TXT) w3m dump (www.geoffreylitt.com)
        
       | sum1ren wrote:
       | Extensions were the only way to help me fix my habit of
       | constantly rebrowsing websites. It was chronic at one point.
       | 
       | Might come in helpful for someone: Https://fetcher.page
        
       | iambateman wrote:
       | To extend the idea a bit...iOS shortcuts should be considered
       | "extensions" by the same token.
       | 
       | They're incredibly easy to make and can create a lot of value,
       | plus they're shareable.
       | 
       | As an example...I built https://SimplifyRecipe.com/shortcut in a
       | couple hours and it's been extremely useful for getting rid of
       | the life story on recipe pages. Lots of people connected with
       | that concept, so now I'm working on building a full-fledged app.
        
         | Adraghast wrote:
         | How will you differentiate it from existing apps like Paprika
         | or Mela?
        
           | iambateman wrote:
           | There's room enough for the both of us. :) but seriously
           | thanks for the question.
           | 
           | The short answer is by being web-first and absurdly fast.
           | SimplifyRecipe is for people who used Pinterest for a couple
           | years but got annoyed by the cruft in that ecosystem.
        
         | duncan-donuts wrote:
         | I just forwarded this off to my wife because we joke about how
         | bad most recipes are with elaborate backstories. This is a
         | product that I really want while also solving a problem that
         | doesn't quite meet the threshold for me to actually do
         | something about it. Stumbling upon it randomly was a good way
         | for me to adopt it tho so there's that.
        
           | iambateman wrote:
           | Right on, thanks!
           | 
           | I hope it works well for her. There's still lots more work to
           | do to get it fully working but we will get there! Really
           | appreciate it.
        
         | redeux wrote:
         | This is really useful shortcut, thanks for sharing! Do you have
         | any good resources for getting started with iOS shortcut apps
         | like this?
        
           | iambateman wrote:
           | Thanks! I'm happy to answer questions if you have any:
           | Stephen at bate-man.com.
           | 
           | It's a bit of a Wild West right now so there are very few
           | resources. I just started building a couple tools using the
           | shortcuts app (it comes with a builder GUI).
           | 
           | The system is more powerful than it looks. You can pull HTML
           | from pages, grab all the links, do for each loops, if
           | statements, variables, etc.
           | 
           | the biggest drawbacks are (1) the UI in the shortcuts app is
           | targeted at non-developers and (2) not all features are
           | supported on older devices and (3) you can't issue "updates",
           | so once you share a shortcut it's just out there and (4)
           | people don't usually have context for what a shortcut is.
           | 
           | But in exchange you get instant, one-click install without an
           | approval process. It's pretty cool!
        
       | 2h wrote:
       | no dont. I would like to see less people doing browser
       | extensions, and more people writing simple servers. so many
       | companies offering free tier, it would be helpful for people to
       | share who they chose and why, and for people to swap
       | recommendations.
       | 
       | extensions allow you to bypass the same-origin policy, but they
       | dont give you the full power of a server. plus with a server, you
       | can choose any language you want, you aren't locked into
       | JavaScript like you are with an extension.
        
         | kitsunesoba wrote:
         | On top of the language/toolkit restrictions, I'm not a huge fan
         | of writing browser extensions simply because of the limitations
         | they pose compared to just about anything else... server side
         | app, static SPA, electron, and native desktop/mobile are all so
         | much more capable that when ideas spring up, those are the
         | platforms they tend toward.
         | 
         | I think though that if browser extensions broadly became
         | capable of browser UI overhauls like Firefox extensions used to
         | be, I'd be much much more interested. Most of the things I want
         | to change about web browsing are in the browser, not the web,
         | and making those changes by way of extension is far more
         | practical than the nightmare of maintaining a browser fork.
        
         | redeux wrote:
         | Hating on JS and suggesting people write servers aren't very
         | constructive suggestions. A browser extension is just a client,
         | you can back it with the "full power" of a server if you want.
        
           | 2h wrote:
           | [flagged]
        
             | redeux wrote:
             | Please keep Hacker News Guidelines[1] in mind when making
             | your comments. Ad hominem attacks don't bolster your
             | argument and make this forum a worse place to have open
             | discussions.
             | 
             | [1] https://news.ycombinator.com/newsguidelines.html
        
               | 2h wrote:
               | You might want to read them yourself before throwing the
               | link around.
        
       | Glench wrote:
       | I wrote something similar about extensions being a good starting
       | place for indie hackers that are trying to make money. Many of
       | the same conclusions as the author of the article -- low barrier
       | to creating, can sometimes grow and be useful for a lot of people
       | with no scaling issues: https://www.indiehackers.com/post/why-
       | browser-extensions-are...
       | 
       | Also, I run a service that lets extension developers take
       | payments in their extensions and it's been really cool to see
       | many extensions take off like the author describes.
        
       | nickjj wrote:
       | If someone is looking for ideas, I'd love an extension that shows
       | if a png image is really transparent instead of being a png or
       | jpg with literal checker box patterns on the image.
       | 
       | I tweeted about this once a while back[0], it gained some
       | traction but never materialized.
       | 
       | This would save a lot of time trying to find transparent images
       | that turn out to be fake. These types of sites are worse than the
       | "fake" github issue tracker sites.
       | 
       | [0]: https://twitter.com/nickjanetakis/status/1545876124865101826
        
         | mrbombastic wrote:
         | Hmmm the checkered background actually seems distinct enough
         | that it wouldn't be too difficult to automate its removal and
         | just create a png with a transparent background.
        
           | nickjj wrote:
           | > Hmmm the checkered background actually seems distinct
           | enough that it wouldn't be too difficult to automate its
           | removal and just create a png with a transparent background.
           | 
           | You can do this with some image editors and a "magic wand"
           | but you typically end up with jagged edges unless the shape
           | is basic or you have specialized tools that can auto-feather
           | them in a natural way.
           | 
           | I think with a bit of code you could check if the image type
           | is png and it hasn't been flattened then overlay a little
           | icon that says it's really transparent when you activate the
           | browser extension.
           | 
           | Although I did just discover an interesting trick[0]. If you
           | goto let's say images.google.com and search for something,
           | you can tell right away if it's transparent or not by
           | selecting the image and dragging it to anywhere on the page.
           | If it shows the checker boxes while dragging then it's not
           | transparent.
           | 
           | My life is complete now.
           | 
           | [0]: https://www.youtube.com/watch?v=G3Y5PcuH23Y&t=173s
        
       | pictur wrote:
       | I don't know how the Firefox extension store is, but publishing
       | the extensions in the chrome extension store was really torture.
       | They unpublished a plugin I published years ago. When I contacted
       | support later, they said it was removed by mistake and
       | republished it. and this situation continued for 4 5 times.
       | Finally, I said I can't deal with it and stopped caring. Does
       | this kind of thing still happen?
        
         | 0xCAP wrote:
         | Yes
        
       | dom96 wrote:
       | Funny to see this. I recently worked on a browser extension[0] to
       | expand Twitter.com's functionality as well, specifically to
       | connect it to Mastodon and show Mastodon posts amongst ordinary
       | tweets.
       | 
       | It was a lot of fun to build this, though dealing with the
       | oddities of Chrome was frustrating at times. Especially when it
       | comes to permission granularity.
       | 
       | [0] - https://chrome.google.com/webstore/detail/mastodon-
       | chirper/l...
        
       | ajolly wrote:
       | Creating and modifying browser extensions have been one of the
       | most useful quality of life utilities ive written.
       | 
       | I'm dreading the switch to V3, I'll have to figure out what I can
       | port over and how to do so :/
        
       | fswd wrote:
       | Any suggestions for a good stack to develop extensions? I'm
       | coming from nodejs/react, and would like to stay close to that.
       | Is there an up-to-date stack I can clone, copy, and deploy with
       | something like 'yarn run build' and start hacking?
        
         | coldsauce wrote:
         | Shameless plug, but we built the Plasmo Framework to make that
         | (and a lot more) super easy: https://github.com/plasmohq/plasmo
        
           | AETackaberry wrote:
           | I am a user of plasmo and it is amazing, super easy to get
           | started and it just works
        
         | satvikpendem wrote:
         | I've used NextJS for browser extensions, works well. There are
         | templates on GitHub but to be honest it isn't that hard to
         | package into a browser extension.
        
       | stuaxo wrote:
       | This looks great, though extensions being sold has a history of
       | going badly for the users, is it safe to install this now it's
       | owned by Tweethuntet who seem big on "monetisation" ?
        
       | tzs wrote:
       | I very briefly looked into extensions for some things I wanted to
       | do, but got kind of lost in the documentation. The browsers seem
       | to expose a very large API and I failed to figure out if it
       | supports what I wanted.
       | 
       | Essentially what I wanted was to be able to implement a
       | simplified version of the "wget" command. I wanted to be able to
       | invoke the extension on a page and have it save the current page
       | contents to a file, then navigate to each link on the page that
       | doesn't go offsite and save those pages, and so on to a specified
       | depth.
       | 
       | (Why not just use wget itself from my terminal? Because the pages
       | I was interested in have JavaScript that modifies the DOM, and it
       | is that modified DOM I want).
        
       | revskill wrote:
       | Agree. One of usecase, is to let user select the "theme" for the
       | project by just installing theme extension.
        
       | nassimsoftware wrote:
       | If I want to build a cross platform browser extension is there an
       | easier way then having to write it twice?
        
         | wongarsu wrote:
         | Last time I wrote an extension (which is a while ago) the
         | changes between the Chrome and Firefox version were minimal.
         | And Edge takes unmodified Chrome extensions.
         | 
         | Obviously depends on the APIs you want, but a typical extension
         | should be trivial to make compatible and package for both
         | Chrome and Firefox.
        
       | sfifs wrote:
       | I believed in stuff built on top of browser platform too and had
       | written something useful for me and it turns out a few dozen more
       | people through the Chrome store. Then Google for some ideological
       | reason related to PWAs killed the Chrome Apps platform and all of
       | a sudden, a great way to distribute functionality just
       | disappeared.
       | 
       | https://blog.chromium.org/2020/01/moving-forward-from-chrome...
       | 
       | Apparently it is now alive-ish (there seem to be a set of follow
       | up announcements) but was burnt.
        
       | bariumbitmap wrote:
       | Browser extensions are useful. I've made some simple ones and
       | published a few:
       | 
       | https://addons.mozilla.org/en-US/firefox/user/14310707/
       | 
       | But it's also worth considering where the browser gives priority.
       | For example, while browser extensions can add custom keyboard
       | shortcuts, they can't override the keybindings a website uses.
       | Want to use the keyboard shortcut Ctrl-Shift-1 for a browser
       | extension while a Google Docs page is focused? Nope, sorry, can't
       | be done.
       | 
       | https://github.com/gsomoza/firefox-easy-container-shortcuts/...
       | 
       | It's pretty clear that while a browser extension can access
       | browser APIs that a web app can't, the extension is still a
       | second-class citizen in other respects.
        
       | Alifatisk wrote:
       | I try to stay away from browser extensions as much as I can, it
       | will only bloat my browser even further. Firefox + Tampermonkey
       | should be enough in my case.
       | 
       | Is there anything a browser extension can do that Tampermonkey
       | cannot?
        
       | satvikpendem wrote:
       | PSA: If you're making a browser extension, please support Firefox
       | as well, not just Chrome. Firefox makes it easy since they
       | support the `chrome` namespace for functions [0].
       | 
       | You can also use React/Next.js or another frontend library too if
       | you prefer. I had created an extension a while ago out of pure
       | HTML, CSS, and TypeScript but I found that was quite annoying to
       | add more complex features with lots of state. I switched to
       | Next.js and it's now on par with regular web DX [1].
       | 
       | [0] https://developer.mozilla.org/en-US/docs/Mozilla/Add-
       | ons/Web...
       | 
       | [1] https://css-tricks.com/nextjs-chrome-extension-starter/
        
         | FractalHQ wrote:
         | Svelte / Sveltekit also works great and is a bit more
         | lightweight / performant while being easier / faster to develop
         | with.
         | 
         | I have an implementation on GitHub for my personal hybrid
         | bookmark-manager / hackernews-reader newtab extension[0]. Its
         | still a wip but i use the website version[1] daily as it
         | doesn't need to be installed and can still be set as my newtab
         | page (warning as I've never opened it on mobile).
         | 
         | [0] https://github.com/fractalhq/nutab [1]
         | https://nutab.vercel.app
        
         | dom96 wrote:
         | The problem with supporting Firefox is that it doesn't yet
         | support manifest v3. I know this support is coming, but seeing
         | as Chrome right now disallows new extensions that don't use v3
         | it feels pretty delayed. It's also unclear how to test manifest
         | v3 Firefox extensions before the support is officially out
         | there (though maybe there isn't even beta support yet?)
        
           | tech234a wrote:
           | It is coming on Tuesday with the release of Firefox 109.
        
         | alphabet9000 wrote:
         | firefox/mozilla doesn't really make it easy (compared to
         | chrome)
         | 
         | mozilla now requires "add-on signing" [0]; extensions now have
         | to be "signed" (By mozilla) before you can permanently side-
         | load _your own_ private extension onto regular firefox. they
         | also require you to use 2FA [1] when setting up a firefox.com
         | account (which is required in order for you to upload
         | extensions so they can be signed).
         | 
         | at least with chrome you can just enable 'developer mode' and
         | drag and drop your own extensions and use it right away without
         | having to deal with any of that.
         | 
         | [0] https://blog.mozilla.org/addons/2020/03/10/support-for-
         | exten...
         | 
         | [1] https://blog.mozilla.org/addons/2021/03/11/two-factor-
         | authen...
        
           | cdrini wrote:
           | Huh? To the best of my knowledge, to get a development
           | extension working in FF:
           | 
           | 1. Ctrl-shift-a to open add-ons page
           | 
           | 2. Click the cog, and select "debug add-ons"
           | 
           | 3. Click "load temporary add-on"
           | 
           | 4. Select a file in your extension.
           | 
           | 5. Done.
           | 
           | This worked for me earlier this week.
        
             | user982 wrote:
             | Key word from the grandparent post: _" permanently"_
             | 
             | Key word from the parent post: _" temporary"_
        
               | cdrini wrote:
               | Ah I reckon what you meant was "Oh this approach only
               | temporarily installed the add-on, your parent post was
               | asking about a way to permanently install an add-on."
               | Took me a while to figure out what you meant.
               | 
               | Ah missed that; yep, the add-on will remain installed
               | until the browser is restarted. That is a little
               | annoying!
        
             | jakear wrote:
             | Hm. I tried this with an super simple extension[1] I had
             | lying around and couldn't get any network requests to work.
             | The error thrown in console was a generic "NetworkError",
             | but the network tab shows no relevant entries at all. Not a
             | great developer experience, especially compared to
             | chromium.
             | 
             | https://github.com/JacksonKearl/FeelingBlue/blob/main/exten
             | s...
        
               | cdrini wrote:
               | Odd! Were you trying to fetch a public, CORS-enabled API?
               | That should just work. If you were trying to make a
               | network request for a non-CORS endpoint (eg fetch the
               | google homepage or something), you'll need to add the
               | domain to your permissions section.
               | 
               | Eg:
               | 
               | "permission": [ "storage", "https://google.com" ]
        
             | [deleted]
        
           | 2h wrote:
           | Yep. Firefox is my browser, but their add-on story is
           | garbage.
        
           | tech234a wrote:
           | The signing requirement only applies to the stable and beta
           | versions of Firefox. It can be disabled in about:config in
           | Firefox Developer Edition (which is basically the same as
           | beta), as well as in Nightly, ESR, and Unbranded builds [1].
           | 
           | [1]: https://wiki.mozilla.org/Add-ons/Extension_Signing
        
           | johngalt_ wrote:
           | It is great they require 2FA, it increases everyone security
           | in case a developer account is compromised.
        
             | brycedriesenga wrote:
             | I'd prefer to choose how much risk I want to take when
             | installing extensions. Just give me a warning and let me do
             | what I want.
        
         | [deleted]
        
       | tommywg7 wrote:
       | Made one recently to put Google's trending page in an extension!
       | Loved how quick you can build and release something usable. Check
       | it out
       | 
       | https://chrome.google.com/webstore/detail/trending-google-se...
        
         | moneywoes wrote:
         | Can you elaborate on the scheduling updates part? Does it just
         | make a api request every x hours to google's api?
        
       | conqrr wrote:
       | Chrome Extension Developer experience was the worst. A week of
       | wait of approvals, Management of extension packages isn't great.
       | Rejects on image formats etc. Firefox hasn't yet adopted Manifest
       | V3 which is also a bummer.
       | 
       | After all this, I still managed to put up Selaro which is a
       | workplace links organizer: https://getselaro.com
        
         | tech234a wrote:
         | Manifest V3 support is coming to Firefox on Tuesday with the
         | release of Firefox 109.
        
       | andy_ppp wrote:
       | I was thinking about building a browser extension that allowed me
       | to tag videos on YouTube and using AI figure out if I would like
       | to hate new videos and mark them as such (interesting,
       | exceptional, funny, not interested, spam, time waster etc.).
       | Maybe it could rewrite clickbait headlines too. Eventually it
       | could completely edit all the rubbish out of YouTube videos based
       | on my likes and be a kind of personal assistant to help to avoid
       | mindlessly watching things that aren't good for me...
        
       | 65 wrote:
       | A lot of the most useful software I've made for myself has been
       | browser extensions.
       | 
       | Spend too much time on Hacker News? I made an extension to freeze
       | the front page so it updates once every 6 hours.
       | 
       | Spend too much time on Reddit? I made an extension requiring a
       | password to be input for every page I visit.
       | 
       | Want to extensively filter LinkedIn jobs, and track which jobs
       | you've applied to? I made an extension to apply very specific
       | filtering to LinkedIn job postings, and to track my application
       | status.
       | 
       | I do wish the Chrome extension API wasn't so annoying to use.
       | Each time I make an extension I sort of dread the process since
       | it's not a good developer experience, but I always find the
       | result to be very useful in my day-to-day life.
        
         | beambot wrote:
         | > I do wish the Chrome extension API wasn't so annoying to use.
         | Each time I make an extension I sort of dread the process since
         | it's not a good developer experience, but I always find the
         | result to be very useful in my day-to-day life.
         | 
         | Sounds like the making of a good lifestyle SaaS product.
        
         | flappyeagle wrote:
         | I'd love to see how these things are architected. Do you have
         | them on GitHub? Are there any boilerplates or anything you
         | recommend to get started?
        
         | gernb wrote:
         | > Spend too much time on Hacker News? I made an extension to
         | freeze the front page so it updates once every 6 hours.
         | 
         | Me, I just open a guest account, or a new profile, etc.
         | Meaning, the extension is at most a reminder to try to stop.
         | it's still trivial to bypass
        
         | PartiallyTyped wrote:
         | FWIW, HN has settings to limit how much time you spend here.
        
           | 65 wrote:
           | I do use it for other sites as well, like news sites. You can
           | freeze any site for a specified period of time. It definitely
           | makes me use the sites less frequently.
        
             | shyn3 wrote:
             | I love this idea of making your own. I wanted to create one
             | that types the text I highlight like a type writer. Will
             | have to try it now. Thanks.
        
       | vax425 wrote:
       | I made one too!
       | 
       | HTTPS://HeadlampTest.com
        
       | Animats wrote:
       | No, don't.
       | 
       | They're not that hard to code, but both Google and Mozilla keep
       | making changes and then bitching at you through their app stores
       | to change your thing. I recently dropped Chrome support on an
       | add-on because 90% of the users were on Firefox. Since it blocked
       | some ads, I figured Google would continue to whine, and it wasn't
       | worth the hassle.
        
         | satvikpendem wrote:
         | Interesting, based on browser share I'd have expected 90% to be
         | on _Chrome_ instead. What 's the extension (or rather, why are
         | most on Firefox)?
        
           | Animats wrote:
           | Because Firefox users install more extensions than Chrome
           | users do. Or at least they used to. I don't really care; it's
           | an old project I keep going for existing users.
        
             | boltzmann-brain wrote:
             | what is it?
        
       | HenrikB wrote:
       | It's been many months since I tried, but I think you have to redo
       | that _each time you restart Firefox_ , i.e. contrary to Chrome,
       | you cannot make it persistent.
        
       | AlbertCory wrote:
       | This is a plug for an extension I didn't write, and have no stake
       | in:
       | 
       | https://free.law/recap
       | 
       | it's a browser extension that defeats the Pacer monopoly on
       | (many) legal filings.
       | 
       | If you do have Pacer and download something, it automatically
       | uploads it to a free server. Thus, it becomes free to everyone
       | else. I think some Big Law firms must use it, because a
       | surprisingly large number of docs _are_ available free.
       | 
       | Legalities of this? They seem to be getting away with it.
        
         | cldellow wrote:
         | > Legalities of this? They seem to be getting away with it.
         | 
         | The US government runs PACER itself, they don't contract it to
         | a profit-motivated third-party. [1] As a result, they're pretty
         | lenient. At one point, their website said: "The information
         | gathered from the PACER system is a matter of public record and
         | may be reproduced without permission".
         | 
         | So it's totally legal.
         | 
         | The RECAP people also make it _really_ easy to ingest
         | documents. For example, lawyers can add a RECAP email address
         | as one of their default contact addresses with the court. Then
         | all filings on any case that lawyer is involved in get
         | automatically ingested when they are filed.
         | 
         | [1]: Well, they outsource the administration to a third-party.
         | But it seems more like a "we pay you, you keep the lights on",
         | vs a public-private partnership where the third-party has a
         | profit incentive based on the revenue of the service.
        
           | AlbertCory wrote:
           | Thanks, didn't know all that.
           | 
           | I put in the "legalities" part mainly because I was thinking
           | of a similar extension to defeat Elsevier & other vultures of
           | scientific publication. Those people might be more litigious.
        
             | cldellow wrote:
             | It's good to be wary.
             | 
             | My home province gave a private company a 50+ year monopoly
             | on our land title records. I would _love_ something like
             | RECAP for our land title records...but I suspect it's not
             | possible to do it without violating the usage agreement
             | that gets you the record in the first place.
        
       | Benjammer wrote:
       | If you don't want to actually write the code and deal with the
       | browser webstores, you can also use an "extension builder" tool
       | like https://www.pixiebrix.com/ to call APIs, move data around,
       | and build simple UIs.
        
       | nubinetwork wrote:
       | This sounds great and all, but I've seen so many instances of
       | good extensions giving up when the browsers decide to make your
       | extension unusable... IE Firefox deprecating NPAPI, google trying
       | to force manifest v3, etc etc.
        
       ___________________________________________________________________
       (page generated 2023-01-15 23:00 UTC)