Browser extensibility is, in fact, a spectrum. There's multiple different ways to customize the standard browser experience. In the past year, we've even seen people, many different forks of the Chromium browser for things like security or embedding AI capabilities directly into the browser. Then you have the standard kind of custom extension experience that most people are familiar with. You go to the Chrome Web Store, you get an extension, it does something. And then you have a category of extensions that, in fact, enable people to customize in different ways. And so one that some people may be familiar with is user scripts like Grease Monkey or Tamper Monkey that allow you to run JavaScript in the context of a web page. And then Pixie Bricks is a different kind that you can think of it like user scripts, but more low code or no code to enable a broader audience to be able to customize. Each of these comes with different tradeoffs. Again, the things on the right side of the screen are generally more lightweight, more agile, but then those comes with tradeoffs of less control, less affordances, and more kind of restrictions in terms of what these can do versus, for example, creating a custom extension or building your entire browser yourself.
As we've started applying kind of AI coding tools like Cloud, like Cursor to the problem of browser extensions, we found there was three main gaps or mismatches in terms of how those tools treat software development lifecycle. The first is that browser extensions are actually distributed systems, even though at first glance they might look like applications. The second is because of the web store structure and how they're distributed, they actually have slower iteration loops than many of these tools that are more focused on web applications. And third and finally, in many cases, you want extensions to be able to work in the context of host sites. Those host sites have changes or might be outwardly hostile to your extension. And so, these things are surmountable, you just have to think through how to best handle them and how to best apply AI coding tools. But for people who aren't familiar how browser extensions work under the hood, I like to describe them as a distributed system in a box. You can think of a browser, it has multiple different tabs, each tab has multiple different frames. And so, your browser extension is injecting context onto each of those. But then you also have surface areas like the side panel and pages, as well as then things that are working behind the scenes. So, storage, the service worker, off screen document, a lot of different pieces that are talking to each other. And so, you run into the usual suspects and distributed systems problems. Everything is async, you're doing message passing with serialized payloads. And so, again, you run into those common problems with distributed systems.
But in some ways, it's worse than a normal distributed system. Some of these components have very complex lifecycle. You have things like tab pre-rendering, backward forward cache, or worker recycling. And so, it's just a different animal in terms of even normal distributed systems. And so, on this, we'll talk through kind of the four best practices that we believe. The first one is really how do you choose the right base foundation, right? So, I don't believe that most people should have to worry about the things that I showed on the last slide.
Comments