works offline
has more permissions
can use udp
separate alt-tab, tray display
is not throttled because it's in the background (on desktop)
unaffected by browser settings
unaffected by clear cookies
unaffected by extensions
less confusion over who handles keybindsYou don't use a task bar on your computer? You would never want to be able to alt-tab to a programming IDE or music player?
You can't imagine why someone would want to be have a programming IDE like Atom that didn't need to pop up a dialog box literally every time you wanted to save a file to disk?
You can't imagine why someone would want an IDE like Atom to automatically read from their local Git config and hook into native commands for functionality like file grepping? Or why someone would want to be able to use native volume controls to separately control volume in a music player and their overall browser?
You've never wanted to start a long-running process in an application and then alt-tab to a separate program while it completes without that process getting throttled?
You can't imagine why someone would want to clear all local data from normal websites in their browser without also clearing all of the local data stored in every web app that they're using? When you want to clear some old files on your computer or empty your trash, do you prefer to just `rm -rf` your home directory?
I can see how they would be an advantage to some, but a detriment to others. I don't find any of these things to be enough of an advantage to outweigh the advantages of having it in browser.
> You don't use a task bar on your computer?
Nope.
> You would never want to be able to alt-tab to a programming IDE or music player?
Having these in browser means 1 less window to keep on the desktop taking up space so I don't need to alt-tab as much. I can see both my IDE and my browser at the same time.
> [ .. Atom, more interactive app section ...]
I don't use Atom or VSCode (electron-based editors) so this isn't an issue for me. But I can totally see wanting these to be as native as possible, so using them that way makes sense. So I'll 100% concede the point for code editors.
For data I use Firefox containers to keep that things compartmentalized sufficiently so there to no need to worry about polluting local data stores.
There is a new filesystem api: https://web.dev/file-system-access/
Electron still provides more freedom but I would argue many of the existing electron apps don't need it.
Some of the things we're still missing:
- the ability to easily share data between domains without opening yourself up to massive security risks.
- the ability to share data with native apps.
- the ability to move data between browsers without syncing it to an online account.
- the ability for normal users to inspect offline data.
- the ability to trust that browsers like Safari won't just arbitrarily delete your data one day.[0]
- the ability to trust that browser upgrades won't ever corrupt the data you have stored.[1]
- the ability to share large amounts of data without worrying about storage limits (this matters a lot if you're making an editor like Atom or Visual Studio).
Typically, what I see with offline apps is that they'll use offline storage, but they don't trust it. They use it when possible as a progressive enhancement, but then they have to sync that data to a server someplace if it's something that users actually care about. And that matches my experiences as a web developer as well. I can't imagine building something like a password manager or text editor in-browser that was only storing data locally, I wouldn't trust that.
It's also not just a technological problem, it's a problem of UX. If I tried to make a purely offline web app, I'd be getting angry customer calls in a week asking where their data went just from them clearing browser history and not realizing that it deleted all their data as well. There isn't a user-friendly, user-controlled way to indicate that storage for one website should be permanent, and users aren't really trained to think that way about the web anyway -- their instinct is to think of it as transient.
----
[0]: https://ar.al/2020/03/25/apple-just-killed-offline-web-apps-...
[1]: https://www.androidpolice.com/2019/12/17/google-fixes-chrome...
What are you even talking about? Any unprivileged process can open a udp socket.
> Why do you need web apps wrapped in their own window, though? Just open a browser.