Web Apps on macOS Sonoma 14 Beta
blog.tomayac.com
blog.tomayac.com
Please, for the sake of all decency, no! We do NOT need new ways for web sites to badger users.
(Sorry to focus on this one thing. This was a great and informative article, with 99% good ideas. I just had a visceral reaction to the idea of yet more ways for sites to harass me as a user.)
It does offer a much better user experience than "go search out these obscure menu methods".
Safari might do well offering a "don't badger me" option that just shuts all page based prompts and requests.
https://developer.apple.com/documentation/webkit/promoting_a...
> Smart App Banners vastly improve users’ browsing experience compared to other promotional methods. In iOS, Smart App Banners provide a consistent look and feel that users come to recognize. They trust that tapping the banner will take them to the App Store and not a third-party advertisement. They appreciate unobtrusive banners at the top of a webpage, instead of a full screen that interrupts their experience with the web content. And with a large and prominent Close button, a banner is easy to dismiss. When the user returns to the webpage, the banner doesn’t reappear.
Note that "Add to Dock" installable web apps already do have a Smart App Banner on the new macOS 14 Sonoma, but only when you already have the web app installed. (It's exactly like the Smart App Banner for native apps, but, for web apps, it only works with the "Open" button, not with the "Install" button.)
But it does signal an important aspect about the current iteration: the share icon hides way too many choices that don't make any real sense for being under the share icon. This is something Apple should absolutely work on ASAP because it's becoming a bloated list. Seriously, why is find under the share icon? How absurd this has gone on for THIS long.
1. Go to Settings
2. Open Websites tab
3. Select General -> Notifications
4. Untick "Allow websites to ask for permission to send notifications"
No more notification popups!
I kind of wish there was a "Block and notify" option though, like there is with pop-up windows. One reason is that sometimes you might actually want to enable them, but it seems like there's no indication of the attempt at all.
But even for crappy websites, it would also be nice to know that they tried because it's one of the things that help to weed them out more easily.
https://blog.mozilla.org/futurereleases/2019/11/04/restricti...
The strategy with those is to accept the prompt in the page and then deny it at the browser level, but that's not something many people would know.
I was actually against web push notifications as a feature precisely because I knew it'd just create a thousand push notification pop-ups on the web.
And behold.
Some of my favorite details from the article:
> Different from iOS/iPadOS, credentials in cookies are copied over, so if you were logged in when running in the tab, you're logged in when you launch the app. No other storage means apart from cookies are copied.
> Same-origin (or in-scope if a manifest exists) links are handled in-app, cross-origin (or out-of-scope if a manifest exists) links open in the default browser. A notable exception are OAuth flow links, which are handled in-app based on a heuristic.
> Web apps run in the context of a separate process called `Web App.app`. Separating Safari and Web App allows both to run independently. You can open a Web app without opening Safari, you can close Safari without all web apps closing.
Buuutt... FileSystem API is not supported yet. Nor is drag-and-drop or LaunchHandler (open a specific file type with the web app). If we had those features, we could get back to storing and editing files on disk, using web apps, which would be a huge improvement for local-first apps.
This is a big thing that's dampened my desktop usage of PWAs with Chrome and other Cloniums - it's highly irritating for Chrome itself to fire up when I launch an installed PWA. Not a problem if Chrome is your main browser I suppose, but that's not an assumption that should be made. Glad Apple took this route on this.
Drag-and-drop as in, not handled any better than current web apps?
As for the other two, I hope they never are. My hope is that this feature is for process isolation for things that may be open all of the time anyway and not have native alternatives: project management tools, social sites, media sites.
I don't want developers to build web apps in place of native and point to "Web Apps". I know I'm fighting an uphill battle, but 10 years later, Electron apps still suck. I'm not interested in making it easier for developers to build crappy desktop apps.
See: https://www.nytimes.com/2022/07/08/business/korea-internet-e... as an example of something that should never have been implemented but is forced on a populace and becomes an anchor to an entire society.
You're free to do what you want but I don't want to be stuck with the consequences.
We’ve gone from having highly polished native Mac applications to a suite of crappy electron apps.
Electron apps like Discord, Slack, etc. don't seem to gain any benefit from being wrapped in Electron anymore. Have one codebase, one app, that works everywhere and can now even be "installed" with Safari.
Electron still has a lot going for it if you need access to system APIs or you want it to be cross platform.
Actually that might be a security nightmare
https://help.figma.com/hc/en-us/articles/360039956894-Access...
We keep having this idea since MSHTML and XUL,and thankfully it eventually goes out of fashion.
I already have a browser, an OS Web widgets, no need to package a browser with the application other than laziness.
Everyone shipping Electron is yet another ChromeOS advocate.
I agree that I'd rather just have a system WebView for things like this, but putting aside that the landscape for those is effectively just Blink/V8 or WebKit/JavaScriptCore at this point, it's still perfectly valid to just want a single engine that behaves consistently across environments -- particularly given Safari's history of being slow to adopt Web standards even when they don't fall into the whole argument of capability.
Even Tauri, which currently relies on system WebViews, has started collaborating with the Servo team[0], at which point you're cycling right back to shipping a browser stack for writing desktop apps in JavaScript. (And for that part, I'll take the further development of alternative browser engines as a net gain tbh. See also: Wolvic.)
[0] https://twitter.com/TauriApps/status/1505618001126731781
And they used to complain about IE hegemony, what goes around comes around.
Alternatively, do what I have been doing since 1990, middleware for business logic with native UI integration.
The four preceding years don't count, as I was using only Timex 2068 as my single computer.
Can't say the same for the Electron generation.
when i reference things from the 90s, it is far from my being stuck there. it is because i have the living memory of the pain from that time, and can see it being repeated by the people that have no living memory of that time. i lived that pain once, i don't need to relive it because someone else hasn't and is too stubborn to look at the history and not repeat it.
floppy disk? what's that? why would I ever click that?
If you open https://squoosh.app on a phone (or in browser dev tools emulating a phone), you will see what I think is a great example of use of an install prompt that I personally would be totally ok with.
screenshot – https://i.imgur.com/NALZpz8.png
or on any browser supporting Web Apps (like recent versions of Chrome/Chromium)
Meanwhile there's long been special affordances to make it easy to go to an App Store page. The purpose of a system is what it does…
If so, they can use that to help/annoy their users/casual visitors by showing an “install me as a web app” banner.
Yes. Yes it does.
This is why “native” apps that use the operating system’s default WebView for the corresponding platform run seamlessly compared to apps packaged with Electron.
Safari is has much better performance than any other web browser on macOS, and this change will allow users to access those benefits.
Typical marketing BS. Browsers are probably very close to performance. Chrome said last year they are actually the fastest browser on M1/2. On Speedometer 2.0 (apple developed benchmark) with M2 Air Chrome currently has the highest score of 491.
https://blog.chromium.org/2023/06/how-chrome-achieved-high-s...
To me, proof is in the pudding: Chrome feels large and bloated when I use it. Safari feels snappy.
I know it is an early developer beta, and I haven't even begun to debug it, but Slack running in this method does not perform well. My sent messages frequently show and then get stuck in the grey "sending" text indefinitely after they appear as sent on other devices, and I often don't receive messages in the web app until I force a refresh.
Also using Safari is great if your app is Mac-only, but the whole point of Electron is to support Mac and Windows and Linux. And not have to worry about browser quirks and Safari versions and backfills and whatnot.
Because it duplicates the overhead of an entire browser (and Chromium at that) rather than the overhead of a single webpage in an already-open browser?
Seamlessness is a UX concept, not a memory/resources concept.
In most cases, the decision will finally always revolve around the system hooks – how many does the Electron app have, and whether are you able to live without them.
Any sort of document-based app benefits tremendously from tabs, and thus it would be unfortunate to have to lose that feature when making it a Web App. I for example often need a couple Google Docs open at once. I would very much like to have Google Docs as a separate item in my Dock though. However, I don't want to be forced to have each individual Google Document in a separate window like it's Mac OS 9 just because it's a "Web App".
Or for example Airtable. I have a few Airtables that I basically always have open. I currently have them "pinned" just because if not they become impossible to find in the sea of other windows and tabs in my browser. I would love to command-tab to Airtable and bring these up, but not have them in an overlapping mess of windows.
Another great example is social media "Web Apps" (like Elk for Mastodon), which basically get "stacks" for free by leveraging tabs. Instead of the Elk team having to develop an "internal tabbing" feature, I can just have a tab for each hashtag I am following. But this does not mean that I want all these tabs mixed in with random other unrelated websites.
Literally any app (vs. "page") that uses multiple windows that you would personally prefer to group into tabs is a good candidate. Tabs are a window organizational tool, they have no inherent "webness" to them aside from that being the first place they originated. macOS's AppKit framework has built-in support for automatically making document-based apps support tabs with zero additional programming. I assure you this feature wasn't added in to allow anyone to write a web browser. In fact, I think the opposite of your assertion is true: the more like an "app" the thing you're turning into a Web App is, the more likely it is to use multiple windows, and thus the more it can benefit from tabs. I agree that if you are for some strange reason turning a blog into a Web App, then tabs don't make any sense, but it also doesn't make sense to turn it into a Web App.
I agree that it would be much nicer to have this at the system level.
"A web application (or web app) is application software that is accessed using a web browser. Web applications are delivered on the World Wide Web to users with an active network connection."
It works in Firefox, not sure why Wikipedia has that wrong.
Like when I use Google Docs, I've usually got several open as separate tabs in my browser. If I wanted Docs as a webapp, it wouldn't have the tabs functionality anymore, which would make it immediately useless. In the way that every IDE or Photoshop now use tabs inside the app.
We're at this place now where I actually wish tabs weren't handled by applications but rather by the OS, together with windows. Let me create a window that has three Chrome tabs, a Safari tab, a Terminal tab, and a Preview tab. Another window with a Word (installed) doc tab, an image in Photoshop tab, and several Finder tabs.
The fact that web apps can't be tabbed is almost this weird step backwards.
Under the Window menu there are options to Show Previous Tab, Show Next Tab, and Move Tab to New Window, but they’re all greyed out.
Chicken and egg
But this means I'll never use YouTube in Web App.app, and just sounds like it's going to be annoying using my password manager (though to be fair, Safari alone makes it a pain to use my password manager)
For example, one main use would be YouTube. Right now I use a separate Firefox profile on my second monitor so I can run uBlock Origin and Sponsorblock.
It isn't solely about blocking advertisements. I use content blockers extensively to get rid of annoyances, popup banners, intrusive elements of websites like Reddit's incessant prompting to buy "coins" (whatever the heck those are) or join their social media push a la moment. I can't comfortably use the web without this functionality.
These all require a service worker, so that’s the destination of your pack and, conveniently, a cache for downloaded assets.
You’ll have some cross browser issues but save on footprint.
I'm not sure this argument holds water given the shockingly old versions of Electron that vendors ship (WhatsApp is using 13.6.9, Slack 24.2.0, Skype 19.0.9, Discord 22.3.2...)
Separately, is Safari actually slow to adopt new web technologies, or do they wait for standardisation and not simply accept the latest half-baked api of the week that Google builds for Chromium, uses across their websites, and then proclaims a New Web Standard?
A review comparing the bleeding edge versions of Chrome, Edge, Safari, and Firefox on caniuse.com shows that Safari is doing quite well: https://caniuse.com/?compare=chrome+117,edge+114,safari+TP,f...
Many of the areas of "no" for Safari are also "no" for Firefox, suggesting Chrome/Chromium features without a consensus amongst browser vendors, and many don't make any sense for desktop apps (e.g. Vibration/Gyro/Accelerometer APIs).
The GP made a fairly broad statement about web technology support which is what I was responding to - I know they've lagged behind on Push Notifications but what I'm arguing is that I think the narrative of "Safari is slow to adopt new web tech" is more a perception driven by Chromium constantly pushing new features into their browser (and them being regarded as 'web tech' rather than 'chrome tech' simply by nature of their position in the market) than Safari actually lagging behind standards implementation generally.
P.S. On Web Push, I don't think anybody whose older relatives use Android and get regular advert-laden push notifications (from sites they didn't realise they were accepting push notifications from, and often aren't sure how to stop them) would disagree that Google's attitude on Web Push was foolhardy, and Apple taking a more thought out approach is welcome (although I agree that it should have happened faster)
Cautious.
Chrome often adds features that are used to track you or have a negative impact on performance and battery life.
I think I'll stick with my current approach unless they decide to enable extension support.
For session authentication a http secure cookie has long been the best practice for anyway, which is now marginally underlined even more so.
Also Safari’s IndexedDB implementation has always been a little shaky I wouldn’t want to deal with it if I was implementing this feature!
I just finished working on a tiny ChatGPT wrapper in Electron just to mimic this feature. I'm very excited to be able to do that easily with GSuite and basically every other website I use daily.
What is the additional privacy risk from IndexedDB and localstorage?
I would have thought apps that store everything locally, that don't require any backend at all are great for privacy, but what do I know, I don't have billions to spend on privacy branding.
When iOS was brand new, they were talking up web apps because they needed the content. When the platform got established, Apple could tighten the screws and drive developers towards native apps by not supporting the latest web features.
Now that they have an upstart platform again, they’re once more interested in PWAs, WebXR and so forth — until the day comes that visionOS is established enough.
Of course this was always Microsoft’s playbook too, as we saw most egregiously with Internet Explorer 6 not receiving any updates after MS concluded they had won.
Of course it does.
But that has nothing to do with the cynical conspiratorial manipulation you then go on to describe.
Edit: Wait - I realize flutter desktop apps on macOS won't have to use Flutter web at all.
If so, good bye electron.
.
└── Contents
├── Info.plist
├── Resources
│ └── ApplicationIcon.icns
└── _CodeSignature
├── CodeDirectory
├── CodeRequirements
├── CodeResources
└── CodeSignature
Looks like all the necessary information is saved inside the Info.plist.