Skip to main content
View on YouTube to comment and like!

over 2 years ago Syntax Podcast

Chrome Extensions and Ad Blockers VS Google with Oliver Dunk

Oliver Dunk

Oliver Dunk Guest

Wes Bos

Wes Bos Host

Scott Tolinski

Scott Tolinski Host

Topic 0 44:10

Path to ad blocker developer happiness

Guest 1

just just makes it a little easier.

Scott Tolinski

Yeah. Any getting started guides you'd recommend?

Guest 1

there's so much I could talk about. We could just do a whole episode where I just go through things that I love it. I feel are underrated, and I want more people to know about. Give us as many as you can then. Yeah. We'll we'll take them. I I I think the the one that I had in mind, was the Defunctland YouTube channel. I don't know if 5 of you have come across that. I love it. Defunctland.

Scott Tolinski

Yeah, Wes. I've seen a ton of these. They're great.

Guest 1

but also, like, very high quality documentaries that,

Wes Bos

What, And you can't necessarily talk about those either. Like, we we had, for us on from socket dot dev, which does something similar for NPM. It scans every single NPM package in existence,

Guest 1

Trying to read. Like, I I find, like, Hacker News, So we're we're getting close to the m v two deprecation now. That starts in June, hopefully.

Wes Bos

And they have a really good one as well. Oh, I Sanity. Gonna watch more of these.

Guest 1

just always blow me away. What what is that? Lemmino? Lemmino. It's l e m m I n o.

Wes Bos

laptop and keyboard do you use? I sat down at my desk around 9 o'clock, and I I got a message from our editor, Sanity.

Wes Bos

Oh, that's cool.

Guest 1

As we mentioned, it's it's super easy. It's technologies that you may already know if you're listening to this podcast. So, maybe half, if not more, of the the work that I've done over the last couple of years. So it's something that I'm, like, thinking about day in, day out, and I'm really trying to do the right thing.

Wes Bos

when I was when I was telling you about the

Wes Bos

Wow. Oh, man. For some reason, I always thought Safari you can

Guest 1

rather than web extensions.

Wes Bos

we just got people screenshotting us a black screen, and there was nothing you'd be able to

Guest 1

on one of the big streaming services.

Guest 1

They have support for manifest version 3. They're they're full steam ahead. It's it's super exciting.

Guest 1

They have support for both service workers and limited event pages, which is something that Firefox has.

Guest 1

But, yeah, Safari are full on the the Webexxion APIs.

Guest 1

most of the time,

Wes Bos

this is why, and you have to allow,

Wes Bos

theme park that, like, all these people died at because it was super unsafe.

Guest 1

But, yeah, I have a profile where if I want to access a site that is is particularly Yeah. The hope is to try and make as many APIs as possible work in service workers.

Wes Bos

one. And what about a code editor? What are you using?

Guest 1

that sort of prove that doing things in manifest version 3 is possible.

Guest 1

Oh, I feel like this is a depressing note to end on.

Wes Bos

and that was really frustrating. So I just went on a tear, and I found a few people who sent me them. Like, what extensions are you running? And I just installed all of them, and I finally found one that that caused it to happen.

Guest 1

if for all of its flaws JS a is a great place to just get a general feel for what's going on and,

Scott Tolinski

Wes. Just web stuff. Yeah. I know it would be a little bit Wes. Yeah. Yeah.

Wes Bos

to I wanted to more about Action Park, which is this, like, the interesting stuff around with the one one password app and and how all that works. And I know

Guest 1

I I really like that. If I'm doing Java, which I don't do much anymore, but occasionally, IntelliJ.

Scott Tolinski

I I wish I was these people. I'm I'm very jealous of what they're able to make. There's some serious talent out there. Yeah. I I've seen the Vercel Wes. I've seen the search for DB Cooper. Yeah. I've seen some of these. I don't I don't subscribe to this, though. I should, click subscribe.

Scott Tolinski

Oh, man. These are good. These look good.

Guest 1

covered in ads or, like, JS it is getting in my way, then I can switch to that profile.

Guest 1

That's the main one that jumps to mind. And then, like, Lemono is another example of of that sort

Guest 1

And that's like if you've used the TypeScript playground before, it's the same idea. It's just Previously, service workers We've now started transitioning to service workers. So if you've used service workers on the web, it's very similar.

Wes Bos

Is hold on. Is Safari

Wes Bos

Oh, sick pic. Do you have any any more? for Chrome extensions similar

Guest 1

Yeah. I think, first of all, just go build an extension.

Guest 1

on mobile as well? Because they have it in the mobile. On Bos Safari. Damn. You do have to install an app, so the the extensions come bundled with an app. Yeah. But, yeah, full extension support, which is, yeah, also really

Guest 1

can we try and make that happen as little as possible? and it's using all 300,000 of those global rules and its own 30,000 rule limit as well.

Wes Bos

We live in a broken world, Oliver.

Guest 1

they they really managed to We we need to do some final checks just to make sure we're happy with the rest of the way the API is working and there isn't anything we've missed.

Guest 1

And there are some tutorials there, and they really try and take you through the basics of, like, what is the fewest number of files you can create to make something that will load in your browser.

Scott Tolinski

dark ride.

Guest 1

On, like, coding in general? to to mind.

Wes Bos

breaking it will randomly

Wes Bos

privacy Badger on this specific site or at least for this specific domain name so I can do my embed. So it's it's a constant cat and mouse game with these types of things, and you're often

Guest 1

Understand the reasons for the move and And they're very much unchanged. Like, you can still have content scripts in manifest version 3. You can still access the the full DOM of the page.

Wes Bos

course player, for some reason, people that use privacy badger, drawing to a canvas Oh, yeah. Yeah. You just or I even wonder if

Guest 1

Yeah. If you if you just sort of have some time, you could easily, like, kill a weekend just watching those videos.

Wes Bos

I've got, like, like, 7 mechanical keyboards, and I just can't do it.

Guest 1

But they're they're slowly moving, and, like, they're part of the community group that we have.

Guest 1

of a very different subject matter, a limitation that there was in manifest version 3 and trying to provide a new API for it. So Oh. One of the changes we made was that And so all of those tools can be used with extensions as well.

Guest 1

Yeah. So they do, like, documentaries content filtering extensions have released which is really exciting.

Guest 1

And like I mentioned, we work with them very closely. So

Guest 1

That's good.

Guest 1

It has all of the typings already loaded, so it hopefully Oh, cool. Removes a lot of the Node setup and choice and

Scott Tolinski

Yeah. That would help me out a whole bunch. Play dot web dash extensions dot dev?

Scott Tolinski

Nice. Cool. Yeah. These are some sick pics. What about shameless plugs? Anything you wanna plug for us?

Wes Bos

Let's move into the last section here we have is Sick Picks and Shameless Plugs. Did you come prepared with either of those? Mhmm. I did. Yes. What do you got for us? So Sick Picks, Oh, I I had sick pick

Wes Bos

Wild. Awesome. Well, thank you so much for all your time. This was this was really good and enlightening. I I kinda wanna build a couple more Chrome extensions myself now instead of just making them like, all that you need is some company to come along and buy it. You see a lot of people buying chrome extensions, you know, and you Scott to think, oh, what are they what are they doing with that?

Guest 1

But they're just, like, so well produced. You you think, I'll put this on, and I'll maybe watch 10 minutes of it. And then we are also much more part of the story of how new capabilities

Guest 1

on, often, Disney or just generally, like, pop culture and entertainment.

Wes Bos

Just just keep going back to the

Wes Bos

Overlap. Extensions on Safari. Previously

Scott Tolinski

Yeah. I'm gonna have to open source mine too. So Oh, okay. Oh, yeah.

Guest 1

And he makes all his own music as well, which is even more impressive. Like, I

Wes Bos

normie, Safari extension. It Wes, like, it was thinking that the name of the component, because it had the word that we could find because the ad blockers were also blocking our century. So we had no insights into what was going on,

Scott Tolinski

Totally. My favorite is the the bizarre Garfield

Guest 1

like, what the interesting things Yarn, and, like, said sort of we're not talking about extensions, but, like, that is an extension behind the scenes. Yeah. And end user scripts is another big part of the manifest v free transition.

Guest 1

Usually, just BS code.

Wes Bos

did their own thing with extension, which is why you never had very many good

Wes Bos

Yep.

Scott Tolinski

Okay. What do you do to to stay up to date on stuff?

Guest 1

are starting to figure out that, actually, it's it's not quite as bad as it seemed.

Guest 1

I think, generally, the sentiment is changing a little bit and Mhmm.

Wes Bos

cool. I I spent, like like, $15 on ad blockers at at some point, the payload needs to match. And What's the what's the word? HTTP only. HTTP only cookies? 1 password

Wes Bos

Okay.

Wes Bos

And do you know I know you're you're not from Apple, but do you know if that's

Wes Bos

they could have, like, an opt in instead of an opt out. Because I often have to go to websites and and turn it off just because it's it's breaking something. Or or even on my own So are you Yeah. Can you tell us, like, what are some of the nefarious things people are doing with rogue Chrome extensions? And he's like, hey. The I'm trying to grab the

Guest 1

good things as well. Yeah. I think this is another example of the sort of thing that comes up time and time again, which is because there are people that are doing the wrong thing, it affects the people that are doing the right thing. And the goal is always just

Guest 1

have some some different options. So they had Yeah. Extensions

Guest 1

to to make content that feels like it could be on TV or on Netflix or it's a very nuanced process that, blocking shipping that API in Chrome. That bug has now been fixed.

Guest 1

And already, like, there have been blog posts and development builds that different

Wes Bos

at the time, Vimeo didn't have a way to catch those errors, so there was just no way. So I had to write some code that would, like, test if I something was blocked. And then if that was the case, I put a big banner up and say, hey. If you're having issues, not loading a specific route because of the name of it. And open source, then you're also telling the bad guys partially matched?

Wes Bos

horrible and and whatnot. Obviously, that's that because,

Topic 1 36:05

Debugging large-scale extensions

Scott Tolinski

What what's the best way to debug an extension learning a lot here. Thank you so much, Oliver. It's been Yeah. No problem. Super informative.

Guest 1

So the the the first piece is that,

Guest 1

page, which is where you manage extensions, Yes. So Safari has support for manifest version 3.

Wes Bos

Node password Scott, and it it'll it'll prompt you to put in your password or or face ID or whatever.

Wes Bos

the URL Bos, and that's something that I look for every single time that one of these things pop up. So that's kinda why I thought it was.

Guest 1

Yeah. So there's there's 2 pieces. And, actually, this is nice because I think it draws on both my Node password knowledge and my Google knowledge. Exactly. Yeah.

Wes Bos

Alright. Found it. I got it. Oh, Scott, I found it too. It's always the race for Scott and I. Before you did. For the show not yet. Yeah.

Guest 1

extensions work pretty well with dev tools. So, I hope so. And I I think we're starting to see that.

Guest 1

like I I like I said, they are based on the same technology as web pages.

Guest 1

as part of that, we did a video together where we talked about various ways to debug extensions.

Wes Bos

Why is that? There's gotta be some limitation there.

Wes Bos

Oh, that's great.

Wes Bos

on on Firefox, you just push the little

Wes Bos

the notifications API in Chrome as well. There's a reason why it slightly overlaps

Scott Tolinski

if you have I'm I'm sure 1 password has a crazy amount of users. You know?

Guest 1

And once you enable that, you see a lot more debug information.

Wes Bos

Cool. JS there anything we hadn't touched upon with the Chrome extensions So immediately, I I fixed it right away, went in, and I went into our century. And that was the only thing sitting in our century. We try to we try to keep our century nice and clean. There's there's no actual issues. If something's in there, we we convert it to a a GitHub issue, and then we go and fix the bug. But it was hilarious that

Guest 1

But that is really one that I want to ship. And, And then also on the chrome colon / extensions

Wes Bos

then, like, you know, that's the same thing with,

Guest 1

yeah, I I know the 1Password team has really wanted that Node. So I assume if we ship it, they'll be straight on to to using it. Oh, awesome. That's that's good. I often wondered about that because I thought in my head it was I'm really hoping we can get it shipped soon. It was something that actually, when I was at 1 Password, for this very reason, I I really wanted,

Scott Tolinski

Is it on Google's channel or is it on your personal channel?

Guest 1

I don't know what you'd have to Google to find it, but sort of how to debug extensions.

Guest 1

It's on the Google for developers channel.

Wes Bos

So I use Firefox and Chrome. And Wes you want to autofill a while ago, or may maybe I watched a full blown action park documentary, and then I went to YouTube

Wes Bos

in anything that is outside of the web page. So the URL bar and up in Chrome is I trust that.

Guest 1

So that API would allow a developer to say,

Scott Tolinski

It's a cool name.

Guest 1

on the console tab just below,

Guest 1

Nice. Cool. I actually did a video on this. So if anyone is interested Oh, really?

Guest 1

action Scott open pop up, which all browsers have generally agreed on. But it's shipping in Firefox and it isn't shipping in Chrome.

Guest 1

One thing that I did hear so I I listened to both of the episodes where you spoke about manifest version 3.

Guest 1

Cool. It's, specifically around, like, WASM and Rust and all kinds of neat stuff there. Yeah. I think it's a a really good demonstration of all all of the different things you can do with extensions, like you mentioned, WebAssembly to bring in other

Guest 1

there's a developer mode toggle.

Guest 1

there's a drop down where you can select the context that you're looking at. And so,

Guest 1

or anything before we hit the other session? Summary. We've spoken about it a lot.

Guest 1

You can open dev tools. And in there, you can there's actually

Guest 1

there was a bug that was,

Guest 1

Yeah.

Wes Bos

And if somebody puts a button in the browser, anybody can put a browser that looks like the 1 password button. And if it if it tries to, like, mimic a pop up and tries to actually get your password,

Guest 1

Yeah. The line of death concept, I think it's called. Is that what it's called? Okay. I think so. Wow. I I could be wrong, but I'm pretty sure.

Guest 1

So, just in the same way, you can debug a web page.

Guest 1

at this point, I'd like you to open the pop up,

Guest 1

Yeah. So, I mean,

Guest 1

by default, that's just like the top level page. But if you have any content scripts injected by extensions, you'll see those as well.

Wes Bos

there is an inherent trust Wow.

Guest 1

ESLint on our team has a series called Dev Tools Tips. And And, yeah, give it a try. It's fun to build something.

Topic 2 33:35

Extension development tooling

Wes Bos

Oh, an extension can reload block I had done that with this app we're using right now, Riverside, where

Guest 1

moving into an extension should be really easy. Then you can start to build on top of that. So, Nice.

Wes Bos

Oh, wow. I got a a question. And you might be Yeah. Instead of like, I don't wanna do the whole

Wes Bos

Oh, this is a v a v plug in.

Guest 1

and

Guest 1

a a a URL that you know isn't actually gonna be used, like, I I would say, like, And something else that I didn't mention is there's, different rule sets types that you can have. So,

Guest 1

reload my extensions,

Guest 1

to add all of the things that you might want. So the hot reloading, like you say, where

Guest 1

And so you can sort of slowly build up. There is some tooling available that does a lot of this out of the box for you. So CRXJS I'm just thinking through the the use case you you went through again. So it's like, you're looking at your CRM, But they're, like, really high quality documentaries.

Guest 1

much smoother now. I'm still doing that. I I didn't know. I I've seen some really clever workarounds for that as well.

Guest 1

Yeah. There's v, and I think it does have support for at least 1 of her bundler as well from memory.

Guest 1

if you've made a website, hopefully, you're familiar with those, There's a combination of, like, automated review and manual review. So some things can be caught just by,

Wes Bos

Yeah. Oh, that that was good. Because that that was my biggest pain point JS you had to go to the weird button in Chrome and and press reload and

Guest 1

Like, extensions are HTML, CSS, and JavaScript.

Wes Bos

the only person on Earth that can answer this for me given that you worked at 1 password and, Vimeo requests or video ESLint because of the way they use cookies or something. So I had to write a whole bunch of code that the other extensions, Talk about Sentry.

Guest 1

and then you can have an extension which is listening for that URL to be opened in a tab and reloads itself when it sees that.

Guest 1

when you change a file, it will automatically reload your extension.

Wes Bos

it would show you who's paying for Twitter Blue.

Guest 1

or or anything like that. But then you want to start including libraries or When you get into TypeScript, there are types libraries that can give you all of the typings for the different extension APIs.

Guest 1

is one of them.

Wes Bos

I I made a Chrome extension called Who Blue,

Guest 1

So If you're doing something that you do actually want to be in the service worker and in the background behind the scenes thing that we want to look at at a network request isn't available, then we want to have the resources available to look at that.

Wes Bos

and it would being able to do it on the server,

Wes Bos

work on Chrome extensions.

Guest 1

you can have, at the very end of your build process, just opening a URL, maybe they have 1 on, like, the origins of the Disney Channel theme.

Guest 1

So, like, one Node that I quite like is We attended and sponsored the ad filtering developer summit, which is a summit that happens to talk with all of these extension developers. So, yeah, we we really are trying to work with them.

Guest 1

yeah, again, it's very similar to web development.

Topic 3 43:02

Expanding declarative net request capabilities

Guest 1

Okay. I think I have heard of some developers who have done some really interesting things with

Guest 1

One of the things that we're really aware of is that,

Guest 1

using the observational capabilities in the web request API.

Guest 1

And then once they start to get some signs that maybe this is a request we should block, they then create a declarative net request rule to block it. But definitely expanding the API is something that we're open to.

Guest 1

Yeah. It's a really interesting question.

Guest 1

So right now, you don't have access to the body into targeted net request.

Scott Tolinski

ad blocker developers happy?

Scott Tolinski

Nice. Interesting. Do you think there is a path forward that makes

Guest 1

this specific Wes. So I don't have any specific examples

Guest 1

like, now more of the API is declarative and you have to like, we have to expose capabilities for you to be able to do certain things. Mhmm. That does mean that layout of Gmail changes, you don't have to worry about, is my extension gonna inject in the right place? Is it gonna be styled correctly? Oh, that's nice. No. I I was not aware and you can just pick, like,

Guest 1

get added to content filtering extensions.

Guest 1

So we're we're trying to bear that in mind. And And that seems super exciting.

Topic 4 40:34

Remaining non-blocking web request API uses

Wes Bos

that gets sent over. Right? Because

Wes Bos

somehow fingerprint that payload to say or or even have, like, a vector search of known

Wes Bos

payload tracking payloads

Guest 1

for example, red redesigning some of the permissions venues to make it clearer.

Wes Bos

the doesn't hit any of the the blocking one. Like, we renamed it to, like, elephant or something silly like that, Or you intentionally

Guest 1

if we're getting rid of the web request blocking API for all of these reasons, why can we still have access to the web request API? And so

Wes Bos

like, you can like, let's say there's a a ping out to an external server for with some tracking information in it, and it didn't get caught because, like, Scott, like, we try and do on syntax website is we rename the endpoint so it doesn't hit any of

Guest 1

For the remaining usage oh, go ahead. No. No. Go ahead, please. I was gonna say, for for the remaining usage, we are making other changes to, like, address the fact that it is still available. So, the condition for some other reason. And so you're, like, you're reading an email that happens to have him eaten the subject, and your light comes on. Yeah. Oh, that's hilarious.

Wes Bos

and say how is this a 98%

Guest 1

trying to move those developers to declarative net Wes was a good way to and then just trying to build things occasionally. It's not always easy to find time, but Yeah. Like, building little extensions like that one I mentioned is a a good chance to have an opportunity to play.

Guest 1

we can see some very clear ways to provide a better API for these use cases.

Wes Bos

stop something

Guest 1

But the the blocking version felt like the really easy one where And then something that I built, the web extension playground, if you Google that, you should be able to find it.

Wes Bos

from from going through there. I'm always curious about

Wes Bos

I often wonder if you could just, like,

Wes Bos

Cool. So that you'd still do have

Wes Bos

access to the web request API. It's just not blocking, which means you can't probably a couple of years since I've done one myself, except Wes, like, the Twitter blue came out.

Wes Bos

which I'm sure lots of people do it as well. But I always thought, like, okay. But, like, Node step further would be, like, looking at the payload

Wes Bos

And if so, then then block it. Is that ever something that would be considered? And on Chrome, it says go to the URL bar and click it. And I said, no, I'm not I'm not going to reach for my mouse.

Guest 1

remove a big chunk of the web request usage.

Topic 5 11:04

Google not trying to kill ad blockers

Scott Tolinski

reasons. But I I guess we were kind of ignorant to maybe even, like, the the scope of the changes in the v three and but we got a a comment from

Scott Tolinski

the reason that we were off is that

Guest 1

and I was there with Andre from AdGuard, and he was in attendance. So we had lots of great chats.

Scott Tolinski

Google is not supporting the web request blocking API Wes Firefox is keeping that even with manifest V3. Yep. Is that for purely performance reasons? Or, like, what is the reason for that?

Guest 1

it it really is like, they're some of the most popular extensions that are available, and Yeah. We do want to support them.

Scott Tolinski

somebody who's basically saying

Scott Tolinski

Yeah. Yeah. It's funny. When we talked about this, we were like, well, it's it's for privacy,

Guest 1

Yeah. The the simple answer is no. And I I realized for some people, that may take more convincing than others. But it has been really nice the whole time I've been at Google. I haven't seen anything to suggest that that's the case. And, actually, lots of things to the opposite. Like, it's a community that we work really closely with. We had a WebExtensions community group meetup in San Diego a couple of weeks ago,

Topic 6 18:21

Difficult balance reviewing extensions

Guest 1

people point out a bug or point out an issue.

Wes Bos

Grease Monkey

Wes Bos

then the ad block blocker, it rolls out the fix to that. And then YouTube's ad block blocker blocker blocker rolls out something new, you Node, and it's a it's a constant back and forth. And there's not any, like, there's no moral discussion here of whether you should be doing that or not. But people are saying, I want to be able to have

Wes Bos

YouTube

Wes Bos

because Yeah. Like,

Scott Tolinski

Yeah. So I guess in that same vein, like,

Guest 1

Google's listening and, like, working too. We're we're really trying. The good turns. Yeah. It has been, like,

Wes Bos

open lists. So is there any way to do that?

Wes Bos

often it needs to, it can redownload the list of new blockers

Guest 1

have enough allowance that were very much related to web pages and handling network requests.

Wes Bos

I do want to run code on the page or I want to be able to modify the dom in some way. So moving the code out of the the background page or or from the DOM into a service worker where there there is no concept of the DOM,

Guest 1

So that should be a nice way to But there was a picture in picture extension Wes, Yeah. Exactly. You're spot on. Okay. And

Wes Bos

rolls out a new fix to the ad block,

Guest 1

Yeah. So there's the dynamic rule sets that I I mentioned previously. So extensions do actually have an API where there are some slightly reduced limits, but they can

Wes Bos

then

Guest 1

and allow them to get an update out. Oh, yeah. Hopefully, within within minutes.

Scott Tolinski

That makes sense. It does seem like despite what, like, YouTube comments or TikTok comments would led you to believe, it does seem like

Guest 1

we we definitely see it all.

Guest 1

in the time we expect extensions to go without being updated,

Wes Bos

that's a whole week where I'm without

Guest 1

So it depends exactly what you're doing. If you do, like, specifically want to modify the page, then the way you do that in extensions is called content scripts. And so they're TypeScript that get injected into the page and run.

Guest 1

they can continue to update the rules that way.

Guest 1

even if extensions still do have to go through the Chrome Wes Store, skip that whole review aspect

Guest 1

And, like, we've looked at the data to try and make sure those limits

Wes Bos

piece of criticism that I I hear is, okay, well, there's a review process. I have to give you a list of whatever. And if it takes a week to get my my update approved,

Guest 1

Yeah. I mean,

Guest 1

And, yeah, obviously, all the other places as well, Twitter, Hacker News.

Wes Bos

how does that work with with this new v three?

Wes Bos

however however

Guest 1

dynamically add rules that weren't there when they initially submitted the extension.

Scott Tolinski

do you all, like, just do you see the the vitriol and the comments that people have? And, like, I I guess, how does that how does that, you know, affect your work and how how it makes you feel as a developer, I guess?

Wes Bos

is and I I personally write in quite a bit these myself whether it's for, Arcboost or, And we like that for the guests because the guest doesn't come in before we're ready for them, but I don't like it for Scott. So I wrote a it's not a Chrome extension. It was just a a Grease Monkey script called Let Scott in. And it just every, of of all of the the tracking?

Guest 1

Mhmm. I I try and monitor all of those. I was, you know, part of those discussions before I joined Google, and now I want to make sure, like, that they're not forgotten and they do get passed along. Yeah.

Guest 1

extension changes that only change declarative net request rules to fully bypass the Web Store review.

Topic 7 12:25

Performance issues with blocking web request API

Guest 1

So the reason for getting rid of the blocking variant of the web request API is is sort of twofold.

Wes Bos

Yeah. You I I I'm I don't know how much you're allowed to talk about that, but I always love to hear the stories of, like

Wes Bos

being like, hey. We can no longer

Guest 1

you have the extension that's running in 1 process Which I think is a really good Wes, and it's a a fair point that's been brought up. The reason we wanted to get rid of the blocking version was for all of the reasons I mentioned.

Guest 1

And It's like a an amusement park ride that it's like an old Garfield one that's totally broken down. I think I remember seeing that with all of the, like, sort of neon paint that shines in the the light. It it's just bizarre. The whole thing is weird.

Guest 1

1 is the performance angle. So

Guest 1

Yeah. Of course, we do it as quickly as we can. But as you start making more and more requests, that starts to add up and that starts to be slower.

Wes Bos

track what people are doing on Snapchat.

Wes Bos

Mhmm. Fix that. Yeah.

Wes Bos

that I'm I don't I don't specifically Node. But, like, I see my friends who are not technical being like, install the Honey extension,

Guest 1

And every time a request happens, And that explicitly gives you the permission to do that in a in a certain way.

Guest 1

Extensions were basically acting as like a network proxy that had access to all of your requests. And,

Wes Bos

it's gonna save you all kinds of money. Like, somebody's paying there, and they're probably, Awesome. Let's talk about the manifest v three stuff. Can you give us a quick rundown of, like, what does that even mean? So somebody listening right now, primarily web developers, may be interested in making a Chrome Chrome extension. What what's the big upgrade from like, first of all, what is the manifest? And second of all, what was the big jump from, what, 2 to 3? Another big use case of Chrome extensions like, what are the bad guys doing? Because that that I'm sure that's a huge part of it as well of, like like, even that, like, Honey Chrome extension like, harvesting

Guest 1

So that was one reason that changing approaches made sense. And then the other is just privacy and security like you mentioned.

Guest 1

like, for the the good guys, the the extensions that most of us will use, that makes sense. But we also saw a really significant amount of abuse where extensions were requesting access to the network Wes on all of your sites

Wes Bos

your data. And even yesterday, I saw this, an old email from Mark Zuckerberg

Guest 1

another thing to know about Chrome is it has a multiprocess architecture.

Guest 1

maybe this is an API that's worked up to this point, but it's something we need to start reconsidering.

Guest 1

if if you look at sort of the whole history of Chrome, performance has always been a big selling point and something that's really important to everyone.

Guest 1

So the way the web request blocking API had to work was performance is 1. I mean, the the more rules you have, of course, the longer it takes to evaluate those. Yeah. Also from a review perspective,

Guest 1

And for 1 request, that is pretty insignificant.

Cookie theft by malicious extensions

Wes Bos

Yeah. The the cookie theft is you had another one. If if somebody can access your cookies

Guest 1

are looking into these things. So you Node definitely find that.

Wes Bos

so somebody

Wes Bos

if you make those things

Wes Bos

I yeah. It should be able to. So it through through the web request API, it has access to the headers. Oh, yeah. You're right. So it can read then. Yeah. Yeah. It can read anything. It's like a it's a a very privileged spot to to put a Chrome extension in, which is why I'm always, like, a little bit

Wes Bos

Man. And another That was just kind of a fun little code along that we did, but I never did submit it. Yeah. So the really nice thing is that the basics are super simple.

Guest 1

Yeah. No. There's there's a hard balance. Definitely,

Guest 1

it's a really tricky one. Oh, I see.

Guest 1

why something was turned away in review, there's also somebody nefarious that's trying to ask the same question and learn information from it. So I find I can generally like, on the websites I go to, I can put up with the ads that are there. Yeah. Sometimes on certain types of sites, it gets a little bit infuriating.

Wes Bos

So, like, maybe another question about the the security side of things JS, like,

Wes Bos

what you're looking for. Right? It's probably tricky.

Wes Bos

submits a Chrome extension to the Chrome Web Store, Do you run an ad blocker yourself?

Guest 1

Yeah. So that that's sort of a a huge topic. There's there's a whole team that deals with review on the Chrome Web Store and and making sure that extensions are safe.

Guest 1

con consumes a whole team's day to day, and I'm sure they'll they'll always have work.

Guest 1

And then, of course, there are various signals that we can get once an extension is released to make sure that it continues acting in the right way. And

Wes Bos

ones? Is there someone looking through 330,000

Wes Bos

Chrome is reviewing

Guest 1

like,

Guest 1

if something is published and then we spot that something's amiss, we can also take action then. So there's there's lots of different stages where things happen, and just search like, the getting started guides. You should be able to find them pretty easily.

Guest 1

I think cookie theft is is one example that, is sort of a problem across the web, and the extensions have been part of that in the past.

Wes Bos

can a Chrome extension access non

Wes Bos

and it has a whole bunch of signals to say somebody's trying to do something funky here, Oh, no. Well, let's let's talk about some exciting stuff.

Wes Bos

lists of block rules to figure out nothing's going wrong?

Wes Bos

JavaScript?

Topic 9 00:00

Transcript

Wes Bos

Big fan of that.

Scott Tolinski

the controversy around ad blockers,

Guest 1

helping other people migrate and trying to improve the platform to sort of tooling that can look through the code and spot things that look amiss. Other times, it is somebody actually sitting there and and reading through the code and trying to understand what's going on.

Guest 1

Yeah. Thank you so much for having me. As you mentioned, I work on the Chrome DevRel team specifically on extensions.

Scott Tolinski

and more. Oliver, welcome to the show. Can you give us a little bit of a background on who you are and what you do?

Scott Tolinski

Well, today,

Wes Bos

really, really, that's, like, the Node extension. I think maybe the very 1st extension I install on any new Oh, nice. So nice. Yeah. Yeah. That's that's interesting stuff. We had talked we had Anna Publitz on, and we talked to her about, passkeys as well as a lot of nervous to install 1 because this is like, yeah, it's that was being blocked by some and then raises up a right red flag and and sends it over to a human. So

Wes Bos

that's probably a different show, but there 1 password does some really cool stuff, via JavaScript and just send those over, can and and it it essentially does that JS it it recreates the entire document so you can do things like Vercel selector and besides Scott name. And then if it is, I I send a click event to it, and it lets him in.

Scott Tolinski

joining us is Oliver Dunk, who is a developer relations engineer at Google. And we're gonna be talking all about the future of extensions on Chrome, the changes,

Scott Tolinski

wasn't a big deal.

Guest 1

languages, hooking into different browser APIs to use different things like passkeys in different ways. Yeah. It's an it's a nice showcase of all of the different capabilities you have.

Scott Tolinski

People really felt like Google was intentionally trying to break their ad blockers with these changes.

Guest 1

Before that, I was an extension developer I have a MacBook Pro, and then I just have the Magic Keyboard, which I know is a really unexciting keyboard. And I should probably get some fancier mechanical gaming keyboard. But Yeah. Yeah. It's it's just I see you have 1 as well.

Scott Tolinski

Welcome to Syntax. We got some major pushback for saying that the manifest v three four Chrome extensions

Guest 1

working at 1 Password, which is a password management extension. Oh, okay. Lots of experience working on extensions using Sass or all these different things. And so then you can bring in some sort of bundling tool.

Guest 1

and actually going through some of this manifest version 3 transition myself and then solely been transitioning into this role at Google, you find yourself glued to a chair. And I just have so much respect for, like, it's a a new format making online videos, but, that wasn't there when the extension was reviewed, So that was a a move that we made for performance among other reasons. But that does require some work from developers to migrate because the APIs that are available in service workers

Topic 10 25:12

Browser APIs coming to Node.js

Wes Bos

I that's why I love the web so much JS being able to to tweak it

Guest 1

Yep. And then occasionally, you'd have a tab that matches And that's a a plug in that basically tries and so then you can avoid having that click.

Wes Bos

Is that type of thing doable, and and which APIs would you use to do that type of thing?

Guest 1

Yeah. So you

Guest 1

and have it in picture in picture, and that was really cool.

Guest 1

extensions couldn't load remotely hosted content.

Scott Tolinski

just right across the board is is really exciting. I have a interesting question that is, less technical and more just personal. Do you have a a favorite Chrome extension? Is there any, like, extensions that you use that you really like given your, expertise?

Guest 1

Yeah. As far as I know, it's a path that's never been, like, super seriously gone Node, but it's definitely, like, a discussion we've had.

Wes Bos

the live reload and and whatnot. Have you ever thought about doing something like that? specific blocking of it. So because the way that it works now is it's going to go off to some server and every adopting the v three manifest as well?

Wes Bos

or Stylish or something like that or Yarn Bos Wes it's like, I just

Guest 1

We're in a place now where, And similarly, in the sources tab, you can switch to content scripts and look at the individual scripts.

Scott Tolinski

I I did something like that. I forget what I used,

Guest 1

big new ideas, You you start off. You're just writing those files by hand. You're not doing any sort of minification And, actually, there's a really nice community there. Like, we get some really genuinely good feedback, and we've we've made changes based on that. Sometimes It's tricky because we have constraints on our side as well. So Mhmm. We can't always give everyone everything they want, but Node was changing the way the background context works. So extensions are somewhat unique because they're running in your browser. But unlike a website where it's always open in a specific tab and so that tab is where your code runs,

Wes Bos

Or if I'm let's say I'm in my my email ESLint. I'm on Gmail Scott, and I wanna write a Chrome extension that puts a a sidebar name it something that is a known good API,

Guest 1

It is interesting. Like, you mentioned Greasemonkey There are also, like, some great write ups if you go looking for them. Mhmm. There's a a really great security community around Chrome and extensions as well that,

Guest 1

different paradigm compared to what we're used to.

Guest 1

And it basically, I have a spotlight that, like, I use for meetings just to make sure I'm well lit.

Wes Bos

just wanna run, like, a little bit of code on this website JavaScript.

Wes Bos

here I am taking a Chrome Chrome extension tutorial and and manifest and

Guest 1

But it does mean that we've kind of all converged on what we think this should look like. Mhmm. And, like, maybe we don't have as sort of, The other one that jumps to mind is one that I built.

Guest 1

there was an extension that would allow you to take a YouTube video or take some other media join a meeting and I see the light come on, and I'm like, I built that. That's the thing that I use.

Wes Bos

in my email. You know? I'm I'm I'm viewing my email or or my courses, and I wanna say, alright. I'm looking at an email from somebody. I wanna load in what their purchases in the sidebar because then I get a bit of context for for who they are.

Wes Bos

to Greasemonkey

Wes Bos

I think partially because they see Deno and Bun, JS

Guest 1

which is available now.

Guest 1

So or so there's a little bit of nuance there. You can load sort of config and that sort of thing. That's fine.

Guest 1

Some of the things that are happening, like Bos, like you mentioned Mhmm. I think are really interesting. Like, it's a very that can be the case if, for example, Chrome could connect, but Firefox couldn't for some reason. The other piece is that there is an API

Wes Bos

implementing them as standards, and and there's now a browser standard version of that.

Wes Bos

I

Wes Bos

that says,

Guest 1

Or, like, data from an API.

Guest 1

and

Guest 1

it was actually a Google extension. So not not something I worked on, but, maybe, like, But but it is tricky just because, like you say, you you have to be careful with what you share. And pnpm every good person that has a genuine question about

Wes Bos

also, it's just it's nice to not have to do, oh, event event emitters in in Node and custom event in JavaScript. No. It's just custom event across the board. It's all web standards.

Guest 1

that are, like, as radical.

Guest 1

and you want to do anything And that's the version of the platform. It dictates the different APIs that are available to you, some different behavior potentially.

Guest 1

And so I I find things like that super interesting.

Scott Tolinski

but similar, anytime my webcam turned on, my lights would turn on via Node assistant or something like that. And I I I sometimes would forget about it, and I would just open up my and then the lights would come on. You're just like, oh, okay. Cool. Yeah.

Guest 1

then you want to be able to run it. So and then the browser that's making all of these network requests ESLint another process.

Wes Bos

make those things that you want. And maybe that's, like, the follow-up question I have for you is, like, have you guys ever thought about doing something

Wes Bos

I don't know, every 5 seconds or so, it checks if there's a button

Guest 1

Yeah. This is I've been asked this question before, and it's always an interesting one. I think the the Node extension that I used to be really excited about and give us my answer to this,

Wes Bos

So, yeah, like, all of those things and you just Wes all TikToks. Yeah. Yeah. And it's just extensions doing something. Yeah. So it's totally free, and it's just gonna try

Guest 1

But we don't want you evaluating code that you get from a remote source because that's open to a lot of abuse. Maybe the code that you're evaluating changes after we've reviewed the extension.

Guest 1

So Wes have a new user scripts API,

Wes Bos

Oh, okay. Yeah. Because I'm I'm thinking about,

Guest 1

But it just makes me smile every time I it would be nice to have something from the community.

Wes Bos

pulls all their purchases, and puts them into, like, the sidebar of the Gmail so that I have a bit more context for who that person is that I'm emailing.

Guest 1

we added another new API, the user scripts API.

Wes Bos

so that when I'm viewing an email from somebody, it it goes off to my CRM's API, Yeah. Yeah. That. And, and Node was was kinda first with the, the async local storage API,

Wes Bos

which

Wes Bos

let's say I have, like, a CRM, and I wanna be able to have an ex a Chrome extension for my CRM

Guest 1

before picture in picture was widely available, Okay. We've also been working on allowing And I think in the second one, something that came up Wes, Yeah. Yeah. I don't know the context, but I saw on Twitter over the weekend or x, I should say, What site does this extension have access to and and our user to limit that if they want to?

Guest 1

Yeah. Maybe it gets sold and then linked somewhere else. Yeah. In in many ways, that's exactly how TypeScript scripts managers work. Like, some code is provided And now the remaining usage, we can look at a lot more closely, and it's hopefully at least less common to use that API.

Wes Bos

I have to push the button to let Scott in.

Guest 1

like, most of the major browsers are implementing the same extension API,

Topic 11 03:18

Manifest v3 changes for Chrome extensions

Guest 1

are slightly different to the ones that are available in just an average web page.

Guest 1

And that allowed your extension to sort of be a proxy in between all network requests. So a request comes in. Your extension makes a decision for do I want to block this or redirect it, and then the request continues.

Guest 1

a context that's running in the background that we can spin up when it has some work to do and then spin down when the work is complete.

Guest 1

And then the other big change, as you mentioned, is, And that has some benefits but also has some trade offs. And I think that's where a lot of the discussion has been.

Guest 1

And that used to be set to 2, and now it's set to 3.

Guest 1

So previously, the way that worked is there was just a sort of invisible, what we called the background page.

Guest 1

having a new API, which we called declarative net request where you specify rules ahead of time. So you have a sort of JSON format where you can say, if a request matches these conditions, then please block it or redirect it.

Guest 1

and extensions have the manifest version.

Guest 1

how extensions interact with network requests.

Guest 1

And so previously, extensions were on manifest version 2, and now they're on manifest version 3.

Guest 1

changing how some of the content filtering extensions work or more specifically,

Guest 1

So previously, we had an API called web Wes, and there was a blocking variant.

Guest 1

It's essentially,

Guest 1

Yes. I think quick is the tricky word there, but I'll I'll do my best. Oh, well, you get time. We we got an hour here. Goody. So Chrome extensions are very similar to other platforms that you may have built on. So Android, for example, has the target SDK Vercel, If you haven't seen any, I'd suggest their Disney Fastpass Node JS worth starting with, or somewhere where you can build an extension.

Guest 1

And the reason we call it the manifest version is because every extension has a file at the top level of the project called manifest.json.

Guest 1

And there were some issues with that. So we moved towards

Guest 1

There were a couple of big changes there. I think the 2 most notable ones, open a DOM based context that you can run some code in, and then you can close it when you're done. And so then you still have sort of this escape hatch or it can reload itself? Right now, you can only reload your own extension, but we have definitely had discussions around adding an API to be able to reload other extensions for this specific reason.

Topic 12 07:48

Very large rule lists for ad blockers

Guest 1

And, hopefully, for the vast majority of users, the number of rules that are needed to take the functionality they had in manifest v 2 and migrate it, that that number should be below the limits that we have.

Guest 1

And there's a few reasons why there were limits at all. So, if we hear from lots of developers, like, this specific condition or

Guest 1

But then we don't want one extension to be greedy and use all of those rules. So we also say, irrespective of that limit, an extension may want to do something in the background, but it's not associated with any tab.

Guest 1

So There's there's various places like you mentioned, YouTube comments. We have a developer mailing list, which is really great.

Guest 1

there's it's quite a complicated syntax that we've been building out over time as we've had requests for for different things.

Wes Bos

Okay. Okay. And, like, how do you know what that is? Like, how many possible things can you you add in there? Yeah. Yeah. It has roll up. That's cool.

Guest 1

or, like, that are just dynamically changed from what you submitted to the store. So there are also additional limits where you can and then acting as a proxy and doing something more nefarious. So Mhmm. There there were sort of these 2 pointers that Yeah. I think this is an interesting one where, like, we're the extensions team, but extensions are built on top of the web. So Yeah. There's also, like, a whole team responsible for service workers.

Guest 1

what I was just discussing there was static rule sets, which is what we expect the vast majority of rules to be. And that means when somebody uploads their content filtering extension to the Chrome Web Store, they bundle in all of the rules at that point. But there are also use cases where you need rules that only apply for, like, this specific session the the conversation has always been, like, they're generally very supportive of bringing new APIs to service workers.

Wes Bos

Okay. Okay. That makes sense. And

Guest 1

rules.

Guest 1

Yes. But as I mentioned, like, there's a trade off between we want the limit to be reasonable, but we want it to be reasonable for everybody. So we want to make sure our blockers have a high enough limit as well. And, actually, that community has been really good at when we've asked sharing data.

Guest 1

there are ways that you can abuse rules. So we want to make sure we're checking over the rules. But the more rules you have, the the harder it is to look over them.

Guest 1

that that's broken down a little bit. We have a global limit that says across all of your extensions, you can use up to 300,000 rules.

Guest 1

So the best case scenario, which is probably the likely scenario for most users, is they have one extension that's making really heavy use of this API, I don't. Node? Okay. I do. I do. I have an ad blocker in a profile. So, So the the Node on the, like, Chrome for developers site is is really good.

Guest 1

so we want some sort of incentive to make sure that the list is kept pruned.

Guest 1

And, also, like, we don't want the list to grow unbounded, And I have an extension that looks to see when I join Google Meet, and when I do, turns the light on. And it's, like, super simple. It's just like watching for the tab title to change and then doing a fetch request to the API.

Guest 1

representing all of the rules that you might want a user to have could be quite hard.

Guest 1

any specific extension has 30,000 of its own rules as its own separate limit.

Wes Bos

are those rules

Guest 1

And I think we're in a place now where we've increased the limits quite significantly.

Scott Tolinski

add rules dynamically that you don't have to bundle when you're shipping to the Chrome Web Store. So I I think it might be good just to get this question out of the way. Just a a is Google trying to kill ad blockers? I think that's, like, something you just see people say all the time.

Guest 1

Yeah. Some of those lists are are really big, and I think that was one of the things that came up a lot that in our 1st version of manifest Wes free, the limits were quite restrictive. And so You can inspect the various context for extensions, and that opens, like, a special dev tools instance that's for the background page or for the service worker for your extension.

Guest 1

So for example, a filter on the URL or the query parameters, I I think one of the things that developers say a lot is that they they feel like they sort of don't feel like they have too close of a communication channel with that review team, and that's something that we're trying to to make better.

Wes Bos

like like, what does a rule look like? Is it a is it a regex? Can they be

Guest 1

Yeah. So there's there's different conditions you can have. You can have regular expressions.

Topic 13 21:50

Using service workers for extensions

Guest 1

And that's basically an API that allows you to And that is, again, to do with addressing to the process that the extension's running in. And the extension has to make a decision, and then it has to send a response back.

Guest 1

So, like, we've made some changes to how web push works.

Wes Bos

a lot of the DOM APIs move to the service worker because like I use a package called Linked DOM or Linked DOM

Guest 1

at the moment, we have something called off screen documents.

Guest 1

for if you need access to those APIs. Long term, that doesn't feel like a great solution, so it's definitely Node password's extension has the ability to connect to the desktop app. And Yep. Based on whether or not you're connected to the desktop app, it can have different behavior. So it sounds like that probably isn't the case in your situation, but Yeah. So it's it's complicated. It gets a little bit nuanced. I think the the easiest number that's true in most cases is 330,000

Guest 1

intended as like a temporary stopgap.

Guest 1

that you need access to the DOM, it has to send that request across I joined about a year and a half ago, so in January of last year.

Guest 1

There's, like, a whole list of APIs that we've already made work in service workers, and we're we're trying to do that more. Nice. Awesome. I I'm always curious about that if we will start to see

Topic 14 23:04

Bringing DOM APIs to service workers

Guest 1

So you're thinking, like, Node. JS as well? somebody prototyping with, like, local storage and session storage being available in Node. Js.

Wes Bos

create a whole dom on the server? And, of course, we can do it with extensions and whatnot, but I would love if those APIs just worked absolutely everywhere. And we seem to be trending in that way, that direction.

Wes Bos

is really laggy on the, if you're doing some really complex stuff. So wouldn't it be nice to throw that into a service worker? And I just checked it. It looks like it's there. So do you think we'll we'll see more DOM APIs and service workers? I I think so. Like, Node

Wes Bos

is Node is really starting like, they added add event listener. Right? Yep.

Guest 1

Mhmm. And so that's like a conversation that needs to keep happening. And, like, clipboard, like you say, is a a really compelling case that I think we need to talk more about. But, yeah, I'm I'm super excited. I hope we get more APIs.

Guest 1

So in that context, there just wasn't a really strong justification to bring APIs to service workers.

Guest 1

In the conversations I've had, the We've recently launched a port for Wes USB, web HID, web GPU, and service workers.

Guest 1

Like, we need to work with them.

Wes Bos

inner HTML, and then you can sort of play around with it. And JS yeah. Canvas off screen canvas is available in because that's a huge thing JS

Guest 1

But now we have extensions moving to service workers and other use cases for service workers.

Wes Bos

Yeah. They've been they've been adding a lot of the, like, browser APIs.

Guest 1

I think there's a a general shift towards let's make more things work.

Wes Bos

Me too. Even just, like, the server all of those the error we were having earlier with the ad blocker it's built by some dev out there, but

Wes Bos

like, wouldn't it be cool if you could do a canvas on the server, or wouldn't it be cool if you could

Topic 15 31:56

Building CRM extension for Gmail

Wes Bos

and maybe they wanna bundle their code? What what does the stack look like for or the tooling around building our Chrome extension these days? It's been

Wes Bos

stack.

Guest 1

Actually, last year, we launched the side panel API,

Wes Bos

Cool.

Wes Bos

Let's talk about the the actual development

Guest 1

like, document Scott create element div, and then filled that div with all of your content, and then added that somewhere to the DOM.

Guest 1

And so I don't know if you're familiar with the side panel in Chrome. There's like a little icon in the top right. But you can open that and you can have extensions display there. So that's quite a nice way of having an actual separate bit of UI where you can render some content and Mhmm. It's not impacted. Like, if the

Guest 1

you would have as if you were a developer on the page,

Guest 1

Yeah. So you can definitely do that. Like, that's a case of fetching remote data, so that's completely fine. Mhmm. You need a content script because you want some amount of access to the DOM. Yeah. And then previously, you would have used that content script as well to inject some UI. So

Wes Bos

Like, what does that look like for somebody who wants to use TypeScript

Guest 1

a page within your extension bundle that gets loaded as a side panel.

Wes Bos

and have the thing live reload and make it exactly how how you want it because Yeah. You can have full control over the websites. Not full control, but if something bugs you about a website,

Wes Bos

of that. Oh, that's really nice. Big fan of that.

Guest 1

which is the API designed specifically for this use case. So that allows you to specify Mhmm. Some of those concerns apply to the general web request API. Some of them don't.

Topic 16 06:01

Declarative net request API for content filtering

Wes Bos

the other day. What what was it? Plausible analytics? No. It wasn't even plausible. Like, that was that's a legit use case. We we did have a issue with plausible Wes,

Wes Bos

component on the page

Wes Bos

on close match to this vector database

Wes Bos

decide if you would like to do that, it's it's statically analyzable, meaning it's just a straight up JSON file. Is that right?

Wes Bos

some random word in it, it was blocking it. So I went down the rabbit hole being like, what is it? What is in the specific component's name that is is blocking it? And I downloaded the list of possible blocks, and it's 1,000 and 1,000 and 1,000. And, like, I understood that ad blockers were, like, just lists of things to actual block and selectors and and JavaScript files. But I didn't realize that it was such a cat and mouse game of literally thousands and thousands of regexes that are in there. So I don't know. That's not necessarily a question for you. I just was thought I I had mentioned to the audience of

Wes Bos

we don't want people to block it. So we're trying to, like, proxy it and and rename it. But I had a, like, a legitimate instead of being able to

Wes Bos

Oh, okay. Okay. So previously,

Wes Bos

run some code at request time that will either say yes or no.

Wes Bos

that these ad blockers in general, I know this this is big for for absolutely everything. Like, there's lots of really good use cases for this as well, but obviously, ad blockers is one of them. It's pretty wild, the the size of the lists for these types of thing. Like so we were having, an issue

Wes Bos

Yeah. And the new API is

Wes Bos

how wild the the world of ad blocking is.

Topic 17 02:03

Sentry error monitoring

Wes Bos

brought to you by Sentry, and,

Wes Bos

And if you don't got a Randy, then you you're gonna need the Sentry to to find the bugs on your your site. So check it on out century.ioforward/syntax.

Wes Bos

Open Graph image, and it's it's not running. Usually, I can just click this link and and download it. And I thought, oh, that's weird. So I took a look at it and go, oh, shoot. I had I had broken something when I

Wes Bos

We are to sidestep Google's review process and and have Careers Monkey TypeScript. So thanks a lot.

Wes Bos

had upgraded some some stuff in there, and I didn't think to check it.

Wes Bos

we would like you to try it out. So I'm gonna tell you a, a a bit of a funny story the other day is

Wes Bos

the only one thing in there Sanity had Scott, the one bug on our entire website. Randy had caught us. I was like, that's a good The only bug. I was like, well, you need Sentry if you either need a Randy or you need you need Sentry.

Share

Empowering developers for over 286197175099 milliseconds!