Service Workers
frontendian.co
frontendian.co
For example, I want Messenger to send me notifications if I have the tab open, but I don't want the service worker to maintain a persistent connection and send me notifications with the tab closed.
Unfortunately, I am not able to block service workers. My only option is to block notifications entirely, which doesn't even stop the service worker.
The notifications dropdown should be:
- Always allow
- Allow when open
- Disallow
More broadly, I agree that it is strange you can opt into the Push API without a permission prompt. I wish it weren't the case, but I do think it would be confusing to users to request separate push and notification permissions - most consider them to be synonymous, even if they aren't.
Question, I’d like to avoid doing large downloads or possibly cap the transfer rate to avoid any potential jank. Is there a best practice or is it possible to monitor the current browser interaction to determine how strategically best to pull data with a SW?
Depending on what a user chooses to cache, it’s JSON data (1-10MB) going to a mix of localstorage and indexedDB.
That should allow you to sum up download sizes.
Loading 1-10MB JSON might drain a significant portion of mobile data. It could take a long time, meaning it may need to re-start it a couple of times, due to, say, a flaky 3G connection.
I'm curious on the why - unless this is an announced feature, I don't think this should be an automatic process and should only be done on user demand explicitly.
It’s also configurable to only operate on faster connections/non mobile IP address etc.
The main reason I was asking is if you currently benchmark service worker updates with indexedDB for async/larger updates, they still cause a small amount of jank, (at least on larger requests) even though they may use a different process etc.
There’s a github repo with a benchmark, this link is older but if you clone the current version and update to the lastest packages, the results are still similar.
https://www.google.com/amp/s/nolanlawson.com/2015/09/29/indexeddb-websql-localstorage-what-blocks-the-dom/amp/".. by authoring special-purpose JavaScript which you register with the browser."
Why does this seem like something useful for malware and generally annoying me.
It also breaks my mental model of how the browser works in a way that will be incomprehensible to users.
Instead of my computer is acting funny I need to reboot we will have my browser is acting funny I need to restart it or we can combine the 2.
My browser is acting funny lets power cycle again. Coming soon to a windows PC near you.
If I popped up a dialog box asking to harvest a kidney 30% of users would click yes.
Kinda sucks that something with such promise is predominantly used as just another weapon for tracking.
I would we rather leave http to be a document model, and create something new and better to support"web-based" apps.
about:config
dom.serviceWorkers.enabled;false
Why:They bite. The generic idea may even be reasonable (offline working web app), but every single time I encounter service workers they make things worse.
If you load a React frontend, it'll, by default, deploy a service worker. Good luck trying to load anything non-react from that resource/server.
I never asked for a web app to work in the background once I closed a site. Nobody should be trained to expect websites work in the background - that is not how they are. If there is no tab open, there should be no notification, no nothing. That is how the web works.
What?
> That is how the web works.
The web 'experience' has stopped being about fetching static documents in a request/response fashion long ago. Consumers demand rich apps and interactivity, and it appears they're having it their way.
https://github.com/facebook/create-react-app/issues/2398
> Consumers demand rich apps and interactivity
They really don't. That's an assumption without data.
EDIT: see gov.uk. It works quite well without being fancy.
Equating 'create-react-app' package with React is silly. By that logic, I can wrap $library_of_your_choice in scaffolding and then blame it for the bloat I've chosen to add.
> EDIT: see gov.uk. It works quite well without being fancy.
We're at an impasse, since you countered my 'assumption without data' with your 'one-off anecdotal evidence'
no consumer ever demanded the web to be like an app. this is marketing baloney crap. stop treating humans browsing the web as targets for advertisement and consumerism.
For-profit companies typically build toward what they believe is in-demand and will be well-received by consumers. They perform market analysis to reinforce their intuition. Sometimes they get it right and their stock goes up.
There isn't some elaborate plot on the part of Google, nor are 'they' purposely making something 'no consumer ever demanded.' When they do this, the endeavor fails and we call it a flop.
They never show an actually alternative version. A/B or bandit testing doesn't cover a comparison between, say, a nicely designed, very fast, non-tracking, but less interactive version, or a slow, but full-fledged "app".
There used to be mobile versions accessible from desktop (twitter, facebook, etc), but not any more without faking the user agent. Those are significantly lighter, than desktop versions, but there is no way to actually compare the two for the generic public, and companies don't seem to be brave enough to really dig into these questions.
This is the comparison I miss.
Hence my wording: assumption.
good luck trying to convince google of that. they are shaping the web just the way they want it. push notifications? nobody ever except the marketing apartment thought that was a good idea to add to anything. if we try making everything on the web like mobile apps we're gonna get garbage features like this and false expectations on what the web should be like.
EDIT: I also used Service-Workers in the same project to provide offline functionality :) It worked great, I was suprised how good it worked!
People don't want something until it happens and they see it and say hey that's what I want, unless you are going off the assumption that people are sheeple and can be made to want messaging applications in the browser because they have been told to want it somehow.
Nobody did that, ever. It's simpler and cheaper to ship an in-browser solution, so everyone does that, that's all.
> AIM, ICQ, IRC, and Yahoo Messenger all used local clients.
A webapp with a service worker is a local client. And a lot of people use Whatsapp Web, or Facebook Messenger's web site. I know I do.
If by "don't care" you mean "don't care enough to abandon a platform their friends are on" then I guess I agree. But all you've proven is that network effects matter.
I think you mean that create-react-app is doing this by default, and that it might be a surprise and cause of problems for the developer. Which is also the reason why they're removing that by default from create-react-app v2.
> That is how the web works.
That's not really an argument, in that it also could've been used as an argument against the introduction of inline images, CSS, or anything added to the web after its first publication. It doesn't really matter how the web works today; what's relevant is how we want the web to work.
And SVGOMG is able to load faster thanks to service workers, too.
At FastMail, we’ll be getting round to adding service workers some time soon, and it’ll actually give us a quite fascinating performance boost: even without supporting full offlineness, simply caching the basic data you need can get you to the point where you need literally no requests before you can load the interface, showing meaningful data to the user, and then fetch updated data in the background. I’m confident we’ll be able to get startup time to under two seconds with service workers for code and data loading/caching, and hopeful that we’ll get it down to under a second.
Service workers can be badly implemented, but they also offer the possibility of some quite delightful improvements in websites and web apps.
Be careful what offline actually means when it comes to mail; eg. that 22GB as service worker cache sounds a bit nasty to me, especially because service workers don't tend to differentiate between desktop and mobile.
There is no limit on gmail. For someone who has it for a decade or more, 20GB mail is realistic, since gmail always told you there is no need to delete anything, ever.
As for 16GB phones, those are pretty normal; take a look at moto e5. Please don't tell me a 64GB phone is required for email.
It also doesn't change the initial problem of what and how much should be cached by service workers.
And depending on your needs yes 64gbs for mail might be very necessary.
(a) it should support fully offline and session-agnostic functionality. We’re very unlikely to ever go this way on fastmail.com, because it’s just not going to be useful to almost anyone, and is more complex and easily leads to confusion. Instead, the data will be tied to your session, so that if you log out, or your session is permitted to expire, or you close your account, then the data will all promptly be deleted when you next go online.
(b) it has a way to export it again. Theoretically with JMAP we could actually do that, but even if we did implement it (and I doubt we ever will), it lacks the portability of other formats like mbox or PST.
Taking both of these points together, I say that an email service provider’s app’s sync should not be considered suitable for a backup. For convenient offline access, perhaps, but not for a backup.
I'd wager you encounter more service workers than you think, but you don't notice them when they work correctly. They are designed to be invisible in the majority of cases, so of course you only notice them when something goes wrong.
Yes, wouldn't it be wonderful if we could do this in all major browsers today? sigh