I would really like to give Safari a chance but I just cannot get over the fact that there's no support for more advanced ad blockers. Sticking with Firefox/Brave for now.
I'm extremely happy with Safari's approach to blockers. I very much appreciate that it is impossible for the extension to receive every URL you are browsing. I've been using AdGuard for Safari (GPL3) and it seems to work perfectly.
I'm shocked you'd choose Brave over this, whose security history and business model is very, very questionable.
I expect that at some point, declarative list ad blockers will stop working as well as they do today.
The companies with an interest in working around them probably temper their efforts, because they are aware it drives people to things like uBlock Origin that have more smarts, live heuristics, etc. Once manifest v3 kills that option off, there won't be any easy place for end users to escalate to. Then, they are free to start being more aggressive. Whatever measures they take would work around all the DNS based and declarative semi-static list based approaches.
It does block Youtube ads but very poorly. Sometimes the ad plays but a refresh immediately removes it, other times it can take multiple refreshes. It's not perfect like it is when i use Firefox or Opera so I stick to Yputube on those and Safari for general browsing.
Sidenote: Also Gmail is insaaaaaaaaaanely slow on Safari and a lot of sites just don't format well or ad blockers completely break the site. Safari is by far the worst browser on Mac for site compatibility and also extension selection but I use it for better battery life when not plugged in.
> "Sidenote: Also Gmail is insaaaaaaaaaanely slow on Safari"
Huh? I haven't seen this. I have 280,000+ messages (> 20 GB) in my Gmail and everything always works pretty much instantly in Gmail on Safari. Never see any slowness unless my internet connection is very bad, and even then Gmail does a decent job of hiding it.
(Don't get me started about Apple Mail on iOS being incredibly slow at loading Gmail messages, however...)
Not being able to block YouTube ads is always used as some kind of gotcha, but for me the trade-off is easily worth it.
Besides, blocking YouTube ads seems a lot scummier than blocking regular ads. Ad least some percentage of that ad revenue goes to the creator of the video you're watching, and not to Google. It's why I'm happy to subscribe to YouTube Premium.
In practice safari blocks all ads I can see, youtube ads might be an exception but it's one of the few services that is 100% worth paying for, considering how crucial they are, how much time most of us spend watching content there, and how fair their premium offering is.
I've noticed YouTube seem to have introduced (or are testing?) some sort of partial countermeasures recently that sneaks occasional ads through. I don't see anything like the quantity of ads I get in the YouTube iOS app, just the occasional one ad every now and then?
Vinegar replaces the YouTube player with the baked in HTML5 video player. It blocks ads, but YT also restricts quality and many advanced features are not supported.
Huge fan of Kagi and Orion, though unfortunately I couldn't live without Firefox's Multi Account Containers. I'd hop back to Orion in a heartbeat if they had something comparable.
(And also it's been three months since I used Orion, and development is fast-paced, so things could have changed a lot since then)
Personally, Right now I basically resorted to using several profiles but it only supports 1 profile per window so I end up having sometimes 3 windows at the same time. I still switch from time to time to Firefox but it has actually helped me sometimes to keep focus (I.e work).
Naturally, Safari Extensions seem to more frequently cost money since Apple's developers have to pay for Mac hardware and developer accounts. But to say that Safari doesn't have good enough extension capability from a technological level doesn't seem to be true anymore.
On my Mac Safari is my default browser due to the battery efficiency and OS integration (e.g., SMS code integration), but I do sometimes use Firefox/Chrome for specific websites where needed, something like 5% of the time.
... what do you mean by "more advanced"? The default/efficient approach with Safari is content blockers (i.e. a precompiled list of url patterns to block in the engine itself), but extensions can also include javascript too.
1Blocker - a well known 'traditional' safari content-blocker - does this for example, to provide ad blocking on sites like YouTube.
I've found that AdBlockers on Safari don't work well at all. I have 1Blocker on my iPad, and not only does it fail to block YouTube and many other ads, it also seems to slow down Safari and induce crashes + memory leaks.
I have to admit I don't use 1Blocker for YouTube ads. I use Vinegar, which isn't strictly speaking an ad blocker - what it does is replace the custom YT player with a native platform player (i.e. regular controls you get with a plain <video> element)...
this has the side-effect of removing all Youtube ads, and you get familiar controls for the video player.
I can't say I've seen any issue with performance or crashes due to 1blocker being active, on phone or Mac (I have on my iPad too but dont use that device any where near as much as the phone/mac)
AdGuard (the full, paid version for MacOS) is the way. I don't use Safari anymore, but I'm still happy enough with it to not install anything else for other browsers. Unfortunately, the iOS version only works as an extension for Safari.
Yes, MacOS never had similar limitations as on iOS. I'm using Firefox which uses its own renderer as a daily on my Mac. There are signs that iOS will (be forced to?) drop that restriction as well in the future. Google started working on a Blink based Chrome for iOS.
I disagree with the Chrome comment, but how about decoupling Mobile Safari upgrades from OS upgrades?
It would be nice for all users to get access to these new APIs via a simple app update. This would allow developers to actually start using them within days/months rather than years.
I think you're arguing semantics. Apple's refusal to push app updates to much older OSes is unrelated to coupling Safari's release with macOS.
Safari team is constantly deploying new features and you can get advance access through Safari Technology Preview. These aren't part of the system but are standalone applications. The simple fact that you can download multiple versions of them on your Mac is the point. New versions don't ship when macOS updates ship. OP is right.
Last time I developed mobile apps that depended on consistent webview functionality, Android went a step farther: Android vendors could replace the webview provider with something custom, and some did (Samsung, at the time, notably and impossible-to-ignore since they're huge). Not only might you not get a particular version of Chrome/Blink providing your webview—you might get any engine. There were basically no guarantees at all.
The result was that the only way to obtain non-crazymaking behavior and bug report loads on Android, if you needed a webview or even just a javascript engine, was to bundle your own thing. IIRC we ended up bundling a JS engine to get around the worst of it, for what we needed—might have been a full browser we bundled, can't recall for sure. We encountered multiple real problems in the wild trying to use the built-in engine(s). On iOS, we both couldn't bundle our own JS or browser engine (by policy) and... had no need to, since that never caused many problems.
It's one of of several reasons that, while Android developent was probably easier even then at a hobbiest level than iOS was, it was a much bigger pain in the ass to support & develop for at any kind of scale. But, that was a while ago—maybe it's gotten better.
Then you have to have two copies of the program, on disk and, at least at times, in memory. And they behave differently, which might be confusing. And all kinds of handoff scenarios and edge cases get potentially-weird.
Meanwhile, how many users would sacrifice any amount of stability or even just disk space to get somewhat-quicker releases of browser features? I'm guessing the percentage may very reasonably be rounded to zero. It's not even close to being urgent enough to be worth any amount of risk or extra resource use, IMO, as someone who conceivably might care about it, and the vast majority of users are even less likely to give a damn than I am.
So: why? Maybe I'm unusual, but it's been a really long time since I saw a new browser feature and was like "holy shit, this is amazing and I don't know how I browsed the web without it!" I can wait a few months for a browser update, it's really not a big deal.
Probably a lot more apps bundle their own shit on macOS, like on Android. Not permitted on iOS—and also less necessary than on other platforms, since the available webview provider is much more predictable and consistent.
[EDIT] But I'm a lot more familiar with mobile dev (Android and iOS both) than macOS development, so I could be wrong about that.
It will be there when DMA kicks in. The sole reason for Safari updates being coupled with OS upgrades is because "it's a system service, so we cannot allow other browser engines!".
It also wouldn't matter much to me if developers could upgrade. What I would want is for users of my app to be able to upgrade when prompted.
Fortunately the cutoff I've chosen for my current project isn't that bad - 15.4. It means some iPhone users won't be able to use it. Eventually I'll feel OK about requiring 16.4. But I second the request for being able to install a new version without upgrading the whole OS.
Sorry I missed this. Yes there is a free trial- right now you get 100 notifications to test while building your integration out. Also a promo on producthunt today for 20% off.
The API also has support for things like custom vibrations, urgency, icons, and action URLs. But- these are minimally supported by Safari Desktop and Safari Mobile today.
I hope Safari iOS adds support for actions and shortcut workflows when clicking a notification.
Nice to see Apple giving some love to web apps. One feature (bug fix?) that I've been wanting for a long time is the ability to autofill from my password manager in Home Screen web apps on my phone. Autofill works in Safari, but once I turn a site into a Home Screen app it no longer appears. But only on my phone, iPad it still works.
I've been waiting on that update to ElementInternals for years now - this was one of the main blockers to really allowing for accessible webcomponent form inputs.
Really excited to see some cool custom form inputs, and for those will inevitably say "use the native form elements, dont make your own!" I agree when that's an option, but often times you do want custom form inputs (i.e. a video uploader form element that allows you to define crops / cuts / etc). This will open up the options for things like that, and will result in some great custom experiences that are also accessible.
I'm a bit surprised no one has brought up the issue with App Library support (or rather, the lack thereof) yet.
When you "install" an PWA, you can only keep it on the Home Screen, while native apps can be removed from Home Screen (not uninstalled) and only shown in the library
> Safari 16.4 adds support for the video portion of Web Codecs API.
Interesting that they still don't support Media Source Extensions on iOS but are adding WebCodecs support. I keep hoping Safari will add MSE, as I'd like to support both live and historical content with one API on all browsers. WebRTC doesn't seem suitable for historical. Chrome and Firefox don't support HLS. Now WebCodecs seems the most likely option, by Firefox adding support. Fingers crossed that will happen... I haven't really played with WebCodecs but it seems nice in concept.
I find the dev tools/Web Inspector in Safari incredibly flakey. Just trying to autocomplete a selector in the CSS styles pane often mangles the string and doesn’t autocomplete properties correctly.
Hope that Web Inspector gets some significant improvements soon
This. Safari overall is incredibly insensitive to developers and web community, and it is not easy to make your generic Chromium website to render on Safari nicely. For me personally it's sad to see them packing dozen new features incompatible with any other browser, much like Microsoft's infamous embrace, extend, and extinguish philosophy. I would love them to work on some stability and consistency with the rest of the web.
Only for web pages that user has manually added to the home screen. Since normal users don't even know what that is, I don't see this as pushing the PWA envelope forward.
This is one of the integral features that prevented a lot of places from even creating PWAs. Now that it no longer exists as a problem, PWA adoption will increase and alongside it education. For example, many places are probably going to show a "add to home screen" banner, with related icons to make it easy for people to find where that setting is. Kind of like how many "normal users" in the past would have been scared about downloading a new browser, but now when you download a new browser it shows you the next steps on how to do so (most of us don't even think about these anymore, but they exist and are important).
A next major step is inclusion into the app store, but until then this is a major win for PWA.
If there is a bug, we will fix it. Bugs can be reported at https://bugs.webkit.org. We would never intentionally prevent web technology from working when a site is added to the Home Screen and opened as a web app.
Also wanted to point out that the user feedback in https://bugs.webkit.org/show_bug.cgi?id=249645 is not the way we should treat browser developers. (Not blaming the parent - I assume this is some other user being..... cranky?)
That is a bunch of features that solve problems I have margin-trim, lh and :user-valid will all allow me to improve code in my projects. Unfortunately they aren't supported anywhere yet (except for :user-valid on Firefox). I would love to see the other browsers roll out support.
Remember you need to interact with it first (e.g. modify the value)—that’s the whole point of :user-valid. (That is: works for me, and this is all I can think of that would make it appear not to work.)
Still no Fullscreen API and no Screen Orientation API(and also orientation in web manifest) on iPhone. Apple surely hate PWA right? Without these, you can't even make a simplest portrait pwa that didn't got rotate by user accidentally.
It's even funnier that they shipped fullscreen api to iPad and intentionally ignore iPhone without a reason.
What is the best way to maintain a session cookie when a web app is added to home screen?
Right now I take people to a secret URL with long generated token so the web app will also have it and be able to correlate the two. Yes I can have the user re-sign-in with credentials, or webauthn, but seems overkill.
Also can Apple add some sort of thing like Chrome has “beforeinstallprompt” to actually show an install promopt?
Apple's philosophy is that it needs to be on the home screen, and that popups prompting users to install the app were a mistake (many people will allow notifications and app installs just to dismiss prompts). Making people do a song and dance should reduce the potential for "your grandparents" accumulating an infinity gauntlet of spam notification PWAs.
Looks like I might finally have a reason to upgrade my iPhone 7!
Web Push is fantastic for developing useful applications without paying the apple tax, which necessarily results in the garbage-tier free apps dominating the App Store today (Want to do anything at all? Watch an ad every minute. Want functionality that's not the absolute bare minimum? Pay $5/month forever.)
I ain’t publishing any utility apps for free if I have to pay. I have made plenty of utility websites I use as Home Screen apps though, all without ads.
I had a free password generator app on the Mac App Store. It wasn't super popular but had like 50-70 daily downloads. I didn't make any money from it. Just made the app because I needed it myself and wanted to learn a bit of macOS dev.
After a couple of years I decided to stop paying $99 a year for hosting a little 5MB app.
Gone. I used to make utilities on iOS but got sick of paying $99 a year for a platform where an update takes a week+ to go through and sometimes will get rejected for... basically no reason at all. All those utilities are gone now.
Paying for the privilege of getting to fill gaps and solve problems on my device operating system that the recipient of those payments who also happens to control said device and operating system refuses to resolve or has even purposefully introduced. Yeah, no thanks.. I'll pass.
That's not at all what I'm saying, you are putting words in my mouth.
"I'm not paying for the privilege of..."
Edit: A continuation of the above but paraphrased from my previous comment: ...being allowed to step over this ridiculous barrier to implement these fixes myself on my own device.
I’m a third world developer.
In the third world, at least in Ghana, iPhones are over represented in the middle class and by association many people have MacBooks.
This means there is a glut of older models in second hand market or passed down to kids, cousins, and family friends.
The problem with the 99 dollars is that it’s payable yearly. Yes someone might sponsor you once and give you enough for a single year but they won’t do it ever year. You have to make enough yourself and that’s a tall order of business if you are a student.
I get that PCs are more common but you can't classify that as a recurring cost. I mean, if your computer is a Mac than there's no cost. It's only if you're using a PC that you have to get a Mac to develop for iOS etc.
But I totally get you, Apple is but one company and they've completely bungled reasonable prices in many countries, for example India.
And with this, finally certain people can stop saying Safari is the new IE6 because it is lagging badly.
Because that title is reserved for a certain behemoth that enjoys the same popularity as IE6 once had and which IMO is probably more dangerous to the free web than IE6 was when EU reacted.
It's not about it lagging behind it's about it requiring more special consideration compared to the other big players.
Like styling scroll bars in FireFox. But more often it feels like Safari is the special needs browser.
Sometimes it's because it lags on features. Sometimes it implements a spec differently. Maybe it's the websocket bug of 2021/2022 that took forever to fix(was it?!) because their weird update cycles.
If you're developing for Chrome first, it's hardly surprising that a browser made by a company which takes a much more conservative approach with user privacy and device efficiency isn't going to just adopt every half-baked API the Chrome team throws out there.
Does Safari lack support for some actual standards? Sure. No browser is "feature complete". The difference is, a good chunk of what people complain about, are draft features, made available in Chrome because Google's whole business model is "put everything in a browser, and track the bajeezus out of it".
It is sad to watch MS (Windows as a whole; they seem to have forgotten they should be an OS) and Google (Chrome in particular*) compete for title of "most widely deployed spyware".
But IE6 was not spyware, it was a browser that was maddening to use, and purposely anti standards. That title, currently, is theirs alone.
* It is really no contest - Chrome is king. But even Google's little things - G-Fonts loads JS to track users on websites, and Android SDK installs an updater that also spawns nameless DLLs that run in the background and regularly send info home, would be impressive for any other spyware app...
If anyone finds themselves wanting to build a static site with cron-interval push notifications using the Web Push API announced here. I wrote a simple service that lets you get notifications on a cron interval without needing to write any backend code / host anything:
Lazy loading iframe is finally supported! That will be a huge perf. improvement! Loading a YT embedded video requires 15 network requests and downloads ~1Mo.
Am excited about the support for the :has() selector for Safari Content Blockers. It will enable a lot of sophisticated blocking of page elements based upon characteristics of the child elements.
For example, in a feed of post where one post has a 'sponsored' text element, the :has() selector could be used to easily target the full sponsored post while leaving organic posts untouched.
There obviously is still a long way to go for Safari to become "good", but I think they are on the right way. For example I have one weird bug than only occurs on an M1 machine. For some reason getComputeStyle() returns wrong values for cx, cy and r of an SVG ellipse/circle. No idea what is going on and what must go wrong internally for this to happen, and I cannot even extract a test case, because the bug is not reproducible outside the app. Just hoping that it will be fixed eventually "by accident".
As much as I hate that no other browser engine is allowed on iOS, browser engine monoculture is toxic, and overtly caustic to the open web as a whole. Safari officially adopting Blink would have wide rippling effects beyond Apple's own ecosystem. It would likely also sound the death knell for Firefox in it's blast radius.
This would surrender web standards as a whole to Google, who in my opinion, cannot be trusted to equitably shepherd this forward; given their propensity to push their own browser heavily, push non-standards forward and so adversely affect their own sites on rival browsers who do not use their extensions to the specifications.
I can't imagine a world where this argument would be correct. Honestly, I'm appalled anyone would seriously consider this.
Chrome is taking over due to inertia and many websites targeting it as the one and only legal implementation of web standards, regardless of the actual spec. "Please use Chrome to continue".
For example, despite Edge woes, the Trident-based version was markedly better looking, and better performing as long as the tabs count didn't get massive. It used native system APIs for input integration, rendering, scroll and memory management, making it much faster and efficient especially on low power devices. It's JS engine had issues, true, but despite that, it was a decent browser outperforming Chrome on many critical aspects of user experience. Safari is in the same vein but even better and without any issues mentioned before. It has power-efficient AdBlocking API, it uses correct HW for rendering content and it is more memory-friendly.
Again, and I can't stress this enough, Chrome and Chromium are developed by a company which main source of revenue is AdTech.
I’ve been building websites for 10+ years, and still prefer Safari as my daily browser. I switched over from using Chrome full-time 5 years ago.
Compared to Chrome it’s anecdotally faster, objectively more power-efficient, and on par with Firefox for privacy.
I don’t know why you think Apple’s uninterested in making a “competitive” browser. It’s been years since Safari didn’t support something I needed it to do, and I’d consider myself a power user.
I've been building websites for 10+ years as well, and I can't tell you how many hours I've wasted on workaround to make something trivial work in Safari that required no work in other browsers. I've also run into some pretty gnarly animation performance issues over the years.
That being said, Apple has clearly upped the focus on the browser in the last two years, and they are shipping a ton more features and fixes in each update, so kudos to them for refocusing as of late.
If you develop for Safari first you will feel the exact opposite: you'll get it working perfect in Safari only to have to frustratingly deal with tons of issues in Chrome.
I think it was objectively true that Safari was lagging 3 years ago, but in the last two years in terms of standards, Safari is equal or better. Safari feels much faster in practice for quite a while.
I'd like to see third party benchmarks. But beyond battery, there's a fluidity to Safari that is simply unmatched by Chrome. I'm talking about stuff like: back/forward, tab open/close, resize window, scroll, quit/reopen. Also a native feel in general that makes it especially nice, like text selection and the various elements.
> Data cleary shows that when the platform is open and fair, Chrome is the preferred browser by consumers.
I think this data is somewhat tainted by how many things have been developed and tested thoroughly against Chrome only, resulting in subpar performance or nonfunctionality in other browsers. Rather than users downloading Chrome because that's what they prefer, I suspect a great many do it because that's the most surefire way to avoid bugs and sluggishness in the many front end codebases that are tuned almost exclusively for Chrome.
It's similar to how Netscape suffered because developers increasingly developed against IE only in the 90s. People want the web to "just work".
Apple should open up and allow other browsers, but they shouldn’t just adopt Chrome themselves. Aside from throwing us back to the days of a browser monopoly, relying completely on a service provided by Google is becoming an increasingly questionable decision.
Of course it isn't. Unless you can come up with a non-random list of things of what constitutes a PWA. Everytime someone screams about Apple not doing something in PWAs, that list is different.
Meanwhile, as I said above, there's an OS that holds about 70% of the world's marketshare that has none of this "crippling" as you put it. And yet, there are literally none of these amazing PWAs there that Apple supposedly cripples on their OS.
Something tells me, the problem doesn't lie with Apple.
> Just because you do not like PWAs does not mean there are not amazing uses of PWAs.
Talk is cheap. And yet in all these discussions no one ever says "ho, look, over there in this amazing OS with no restrictions that has 70% of the world's market there are these amazing PWAs, just look at them!"
It's always complaining about some absolutely random API that absolutely must be there on iOS for the PWA to finally happen (even if it exists on that other OS).
Always in discussions about Safari you will find someone complaining about "Apple crippling PWAs" and coming up with yet another random APIs that they absoluely need to finally make a great PWA.
Always in these discussions I hint that Android is 70% worldwide market share, and has none of the perceived restrictions on PWAs. Surely these amazing PWAs that Apple doesn't allow should exist there. Right? Right?!
And invariably there are crickets.
Even your "example" are literally "we made our site not suck and open faster, this increased conversions, yay! It's all because of PWAs".
Of course it's not. Correlation is not causation. If your page load went from 3s to 0.9s (Washington Post) or is now 4x faster (BMW), it's not really PWA who's responsible for people staying on your website. Oh, you pushed your bloated abomination of a website into offline storage on users' phones and now the site opens faster? Yay (not)!
And then there are egregiously bad takes like "Thanks to PWA Telegram's platform cna be accessed from different devices". Newsflash: Telegram's native apps are available across different platforms
Notwithstanding the issues with your argument, which have already been raised by others in their replies, I wanted to say I'm puzzled to find people still preaching about Chrome when Firefox is just as good these days if not better
It's like people switched from Firefox to Chrome a while back and never came back to see how great it is
> Chrome is the preferred browser by consumers. Apple is stifling competition and harming their consumers on iPad and iOS by not allowing competition. Apple knows when they open the gates, Chrome will take over the iPhone and iPad and Safari will fizzle out.
Correct. Chrome has already won. No contest. Undisputed. [0][1][2]
The moment Apple opens up the competition to other browsers, Chrome dominance will essentially be further entrenched. The digital markets act will just guarantee this further.
Google might as well make Chromium a independent standard organization maintaining a standard browser engine.
Every time a non-chromium browser pushes updates it's good news. That being said, if you care about open standards, privacy and a fair market, you should just delete whatever you have and install Firefox right now.
> That being said, if you care about open standards, privacy and a fair market, you should just delete whatever you have and install Firefox right now.
I wonder if you realize that these days Firefox is more often than not on Safari's side when it comes to all the things you've listed.
Here comes the web push notification spam avalanche going onto iOS.
The SaaS grifters will metastasize, multiply and deliver their snake oil as they did to Android now onto iOS users only to degrade the platform further.
(1) For this to work at all, users will need to have added the app to their Home Screen.
(2) Because they "work exactly like notifications from other apps", you can easily control when they're able to interrupt you, and also easily mute abusers.
- leading on the Interop 2022 dashboard results [1]
- posting the best Speedometer score on the Mac [1]
- changing their pace of innovation and releases to deliver newer API features in a quicker manner
[1] https://www.magiclasso.co/insights/triumph-of-safari/