Regressive Web Apps

There were plenty of talks about building for the web at this year’s Google I/O event. That makes a nice change from previous years when the web barely got a look in and you’d be forgiven for thinking that Google I/O was an event for Android app developers.

This year’s event showed just how big Google is, and how it doesn’t have one party line when it comes to the web and native. At the same time as there were talks on Service Workers and performance for the web, there was also an unveiling of Android Instant Apps—a full-frontal assault on the web. If you thought it was annoying when websites door-slammed you with intrusive prompts to install their app, just wait until they don’t need to ask you anymore.

Peter has looked a bit closer at Android Instant Apps and I think he’s as puzzled as I am. Either they are sandboxed to have similar permission models to the web (in which case, why not just use the web?) or they allow more access to native APIs in which case they’re a security nightmare waiting to happen. I’m guessing it’s probably the former.

Meanwhile, a different part of Google is fighting the web’s corner. The buzzword du jour is Progressive Web Apps, originally defined by Alex as:

  • Responsive
  • Connectivity independent
  • App-like-interactions
  • Fresh
  • Safe
  • Discoverable
  • Re-engageable
  • Installable
  • Linkable

A lot of those points are shared by good native apps, but the first and last points in that list are key features of the web: being responsive and linkable.

Alas many of the current examples of so-called Progressive Web Apps are anything but. Flipkart and The Washington Post have made Progressive Web Apps that are getting lots of good press from Google, but are mobile-only.

Looking at most of the examples of Progressive Web Apps, there’s an even more worrying trend than the return to m-dot subdomains. It looks like most of them are concentrating so hard on the “app” part that they’re forgetting about the “web” bit. That means they’re assuming that modern JavaScript is available everywhere.

Alex pointed to shop.polymer-project.org as an example of a Progressive Web App that is responsive as well as being performant and resilient to network failures. It also requires JavaScript (specifically the Polymer polyfill for web components) to render some text and images in a browser. If you’re using the “wrong” browser—like, say, Opera Mini—you get nothing. That’s not progressive. That’s the opposite of progressive. The end result may feel very “app-like” if you’re using an approved browser, but throwing the users of other web browsers under the bus is the very antithesis of what makes the web great. What does it profit a website to gain app-like features if it loses its soul?

I’m getting very concerned that the success criterion for Progressive Web Apps is changing from “best practices on the web” to “feels like native.” That certainly seems to be how many of the current crop of Progressive Web Apps are approaching the architecture of their sites. I think that’s why the app-shell model is the one that so many people are settling on.

Personally, I’m not a fan of the app-shell model. I feel that it prioritises exactly the wrong stuff—the interface is rendered quickly while the content has to wait. It feels weirdly like a hangover from Appcache. I also notice it being used as a get-out-of-jail-free card, much like the ol’ “Single Page App” descriptor; “Ah, I can’t do progressive enhancement because I’m building an app shell/SPA, you see.”

But whatever. That’s just, like, my opinion, man. Other people can build their app-shelled SPAs and meanwhile I’m free to build websites that work everywhere, and still get to use all the great technologies that power Progressive Web Apps. That’s one of the reasons why I’ve been quite excited about them—all the technologies and methodologies they promote match perfectly with my progressive enhancement approach: responsive design, Service Workers, good performance, and all that good stuff.

I hope we’ll see more examples of Progressive Web Apps that don’t require JavaScript to render content, and don’t throw away responsiveness in favour of a return to device-specific silos. But I’m not holding my breath. People seem to be so caught up in the attempt to get native-like functionality that they’re willing to give up the very things that make the web great.

For example, I’ve seen people use a meta viewport declaration to disable pinch-zooming on their sites. As justification they point to the fact that you can’t pinch-zoom in most native apps, therefore this web-based app should also prohibit that action. The inability to pinch-zoom in native apps is a bug. By also removing that functionality from web products, people are reproducing unnecessary bugs. It feels like a cargo-cult approach to building for the web: slavishly copy whatever native is doing …because everyone knows that native apps are superior to websites, right?

Here’s another example of the cargo-cult imitation of native. In your manifest JSON file, you can declare a display property. You can set it to browser, standalone, or fullscreen. If you set it to standalone or fullscreen then, when the site is launched from the home screen, it won’t display the address bar. If you set the display property to browser, the address bar will be visible on launch. Now, personally I like to expose those kind of seams:

The idea of “seamlessness” as a desirable trait in what we design is one that bothers me. Technology has seams. By hiding those seams, we may think we are helping the end user, but we are also making a conscience choice to deceive them (or at least restrict what they can do).

Other people disagree. They think it makes more sense to hide the URL. They have a genuine concern that users will be confused by launching a website from the home screen in a browser (presumably because the user’s particular form of amnesia caused them to forget how that icon ended up on their home screen in the first place).

Fair enough. We’ll agree to differ. They can set their display property how they want, and I can set my display property how I want. It’s a big web after all. There’s no one right or wrong way to do this. That’s why there are multiple options for the values.

Or, at least, that was the situation until recently…

Remember when I wrote about how Chrome on Android will show an “add to home screen” prompt if your Progressive Web App fulfils a few criteria?

  • It is served over HTTPS,
  • it has a manifest JSON file,
  • it has a Service Worker, and
  • the user visits it a few times.

Well, those goalposts have moved. There is now a new criterion:

  • Your manifest file must not contain a display value of browser.

Chrome developers have decided that displaying URLs is not “best practice”. It was filed as a bug.

A bug.

Displaying URLs.

A bug.

I’m somewhat flabbergasted by this. The killer feature of the web—URLs—are being treated as something undesirable because they aren’t part of native apps. That’s not a failure of the web; that’s a failure of native apps.

Now, don’t get me wrong. I’m not saying that everyone should be setting their display property to browser. That would be far too prescriptive. I’m saying that it should be a choice. It should depend on the website. It should depend on the expectations of the users of that particular website. To declare that all users of all websites will be confused by seeing a URL is so presumptuous and arrogant that it beggars belief.

I wouldn’t even have noticed this change of policy if it weren’t for the newly-released Lighthouse tool for testing Progressive Web Apps. The Session gets a good score but under “Best Practices” there was a red mark against the site for having display: browser. Turns out that’s the official party line from Chrome.

Just to clarify: you can have a site that has literally no HTML or turns away entire classes of devices, yet officially follows “best practices” and gets rewarded with an “add to home screen” prompt. But if you have a blazingly fast responsive site that works offline, you get nothing simply because you don’t want to hide URLs from your users:

I want people to be able to copy URLs. I want people to be able to hack URLs. I’m not ashamed of my URLs …I’m downright proud.

Stuart argues that this is a paternal decision:

The app manifest declares properties of the app, but the display property isn’t about the app; it’s about how the app’s developer wants it to be shown. Do they want to proudly declare that this app is on the web and of the web? Then they’ll add the URL bar. Do they want to conceal that this is actually a web app in order to look more like “native” apps? Then they’ll hide the URL bar.

I think there’s something to that, but digging deeper, developers and designers don’t make decisions like that in isolation. They’re generally thinking about what’s best for users. So, yes, absolutely, different apps will have different display properties, but that shouldn’t be down to the belief system of the developer; it should be down to the needs of the users …the specific needs of the specific users of that specific app. For the Chrome team to come down on one side or the other and arbitrarily declare that one decision is “correct” for every single Progressive Web App that is ever going to be built …that’s a political decision. It kinda feels like an abuse of power to me. Withholding the “add to home screen” prompt like that has a whiff of blackmail about it.

The other factors that contribute to the “add to home screen” prompt are pretty uncontroversial:

  • Sites should be served over a secure connection: that’s pretty hard to argue with.
  • Sites should be resilient to network outages: I don’t think anyone is going to say that’s a bad idea.
  • Sites should provide some metadata in manifest file: okay, sure, it’s certainly not harmful.
  • Sites should obscure their URL …whoa! That feels like a very, very different requirement, one that imposes one particular opinion onto everyone who wants to participate.

This isn’t the first time that Chrome developers have made a move against the address bar. It’s starting to grind me down.

Up until now I’ve been a big fan of Progressive Web Apps. I understood them to be combining the best of the web (responsiveness, linkability) with the best of native (installable, connectivity independent). Now I see that balance shifting towards the native end of the scale at the expense of the web’s best features. I’d love to see that balance restored with a little less emphasis on the “Apps” and a little more emphasis on the “Web.” Now that would be progressive.

Have you published a response to this? :

Responses

danq.me

[this post has been partially damaged during a server failure on Sunday 11th July 2004, and it has been possible…

# Friday, April 30th, 2004 at 12:00pm

Webrocker

[…] Looking at most of the examples of Progressive Web Apps, there’s an even more worrying trend than the return to m-dot subdomains. It looks like most of them are concentrating so hard on the “app” part that they’re forgetting about the “web” bit. That means they’re assuming that modern JavaScript is available everywhere.adactio.com

I’m again with Jeremy Keith here. I’m team web. Links and Urls (and being responsive) are the web’s superpower. Don’t cripple that by trying to emulate ‘native’.

(and I want to add a second like for the usage of the word ‘flabbergasted’)

# Posted by Webrocker on Wednesday, May 25th, 2016 at 6:48am

potch

Progressive Web Apps is a Google brand and only they get to decide what it means and how it’s rewarded. adactio.com/journal/10708

# Posted by potch on Wednesday, May 25th, 2016 at 7:03pm

Webrocker

Ha! It! Really! Works!

I have to admit I was a bit sceptical of the outcome after I tweaked and added things and bits of my website at the Indiewebcamp in Nuremberg, setting up a service worker and offline caching things, adding a manifest file … while in theory I understand what all of this was supposed to do, I felt a bit dumb for not completly grasping how to control the stuff.

So as so often when learning new tricks on the web, it started with copy/pasting a working solution and trying to adapt this to my ideas.

But the one (visible) ‘ahaa!’ outcome — getting the Chrome browser to display the ‘add to home screen’ prompt — it hasn’t happened yet. Even during my tests at the Open Device Lab Frankfurt, nothing happened. There is this thing; the Chrome browser kind of decides*) if you as a visitor have interacted and shown enough interest in the web site before it’ll show this prompt. Apparently my one-time visits during the tests were not enough.

Until now.

So yes, technically I now have my web site as a “progressive web app”: In case you have visited some of my contents while being online, you then can browse and read the stuff while being offline. Other than that, I haven’t dug deeper, so there’s currently no storage of user input or interaction for use when being online again — but all this is possible, though maybe not really useful for my website. I highly recomment Jake Archibald’s talk on this year’s Google I/O event, if you are interested in this PWA stuff. (*)But also take good note of Jeremy Keith’s article.)

For the moment I am excited that I got this to work, just for the sake of getting it to work. :-)

# Posted by Webrocker on Thursday, May 26th, 2016 at 9:19am

Cheng

即使是 Google 也在开放的 Web 和封闭 App 的天平上偏向着封闭。或许我们所熟知的开放 Web 真的只是昙花一现?// Regressive Web Apps adactio.com/journal/10708

# Posted by Cheng on Tuesday, June 7th, 2016 at 3:44am

danq.me

On the first day of Indie Web Camp Berlin, I led a session on going offline with service workers. This…

# Sunday, November 11th, 2018 at 11:41pm

danq.me

On the first day of Indie Web Camp Berlin, I led a session on going offline with service workers. This…

# Sunday, November 11th, 2018 at 11:41pm

danq.me

On the first day of Indie Web Camp Berlin, I led a session on going offline with service workers. This…

# Sunday, November 11th, 2018 at 11:41pm

danq.me

On the first day of Indie Web Camp Berlin, I led a session on going offline with service workers. This…

# Sunday, November 11th, 2018 at 11:41pm

zeldmanproduction.wpcomstaging.com

12 LESSONS from An Event Apart San Francisco – ? 6: We work with technology every day. And every day it seems like there’s more and more technology to understand: graphic design tools, build tools, frameworks and libraries, not to mention new HTML, CSS, and JavaScript features landing in browsers. How should we best choose which technologies to invest our time in? When we decide to weigh up the technology choices that confront us, what are the best criteria for doing that?

Jeremy Keith was the seventh speaker at An Event Apart San Francisco this month. His presentation, Evaluating Technology, set out to help us evaluate tools and technologies in a way that best benefits the people who use the websites we design and develop. We looked at some of the hottest new web technologies, like service workers and web components, and dug deep beneath the hype to find out whether they will really change life on the web for the better.

Days of future past

Its easy to be overwhelmed by all the change happening in web design and development. Things make more sense when we apply an appropriate perspective. Although his presentation often dealt with “bleeding-edge” technologies (i.e. technologies that are still being figured out and just beginning to be supported in some browsers and devices), Jeremy’s framing perspective was that of the history of computer science—a field, pioneered by women, that evolved rationally.

Extracting the unchanging design principles that gave rise to the advances in computer science, Jeremy showed how the web evolved from these same principles, and how the seemingly dizzying barrage of changes taking place in web design and development today could be understood through these principles as well—providing a healthy means to decide which technologies benefit human beings, and which may be discarded or at least de-prioritized by busy designer/developers working to stay ahead of the curve.

Resistance to change

“Humans are allergic to change,” computer science pioneer Grace Hopper famously said. Jeremy showed how that very fear of change manifested itself in the changes human beings accept: we have 60 seconds in a minute and 24 hours in a day because of counting systems first developed five thousand years ago. Likewise, we have widespread acceptance of HTML in large part because its creator, Tim Berners-Lee, based it on a subset of elements familiar from an already accepted markup language, SGML.

How well does it fail?

In our evaluating process, Jeremy argued, we should not only concern ourselves with how well a technology works, but also how well it fails. When XHTML 2.0 pages contained an error, the browser was instructed not to skip that error but to shut down completely. Thus, XHTML 2.0 was impractical and did not catch on. In contrast, when an HTML page contains an error or new element, the browser skips what it does not understand and renders the page. This allows us to add new elements to HTML over time, with no fear that browsers will choke on what they don’t understand. This fact alone helps account for the extraordinary success of HTML over the past 25 years.

Likewise, service workers, a powerful new technology that extends our work even when devices are offline, fails well, because it is progressively enhanced by design. If a device or browser does not support service workers, the content still renders.

Jeremy argued that pages built on fragile technologies—technologies which are powerful when they work, but which fail poorly—are a dangerous platform for web content. Frameworks that require JavaScript, for example, offer developers extraordinary power, but at a price: the failure of even a small script can result in no content at all. Service workers technology also offers tremendous power, but it fails well, so is safe to use in the creation of responsive sites and web applications.

On progressive web apps

Likewise, progressive web apps, when designed responsively and with progressive enhancement, are a tremendously exciting web development. But when they are designed the wrong way, they fail poorly, making them a step backward for the web.

Jeremy used the example of The Washington Post’s Progressive Web App, which has been much touted by Google, who are a driving force behind the movement for progressive web apps. A true progressive web app works for everyone. But The Washington Post’s progressive web app demands that you open it in your phone. This kind of retrograde door-slam is like the days when we told people they must use Flash, or must use a certain browser or platform, to view our work. This makes it the antithesis of progressive.

Dancing about architecture

There was much, much more to Jeremy’s talk—one of the shortest hours I’ve ever lived through, as 100 years of wisdom was applied to a dizzying array of technologies. Summarizing it here is like trying to describe the birth of your child in five words or less. Fortunately, you can see Jeremy give this presentation for yourself at several upcoming An Event Apart conference shows in 2017.

The next AEA event, An Event Apart St. Louis, takes place January 30-February 1, 2017. Tomorrow I’ll be back with more takeaways from another AEA San Francisco 2016 speaker.

Also published in Medium.

Like Loading…

# Monday, February 12th, 2024 at 9:50pm

77 Shares

# Shared by Scott Jehl on Wednesday, May 25th, 2016 at 12:05am

# Shared by MAW on Wednesday, May 25th, 2016 at 12:08am

# Shared by Drew McChesney on Wednesday, May 25th, 2016 at 12:23am

# Shared by Benedict Steele on Wednesday, May 25th, 2016 at 12:29am

# Shared by Eskside Design on Wednesday, May 25th, 2016 at 1:12am

# Shared by Rob Cherny on Wednesday, May 25th, 2016 at 1:12am

# Shared by Drew Bolles on Wednesday, May 25th, 2016 at 1:42am

# Shared by Peter Rushforth on Wednesday, May 25th, 2016 at 1:48am

# Shared by Akshay Ranganath on Wednesday, May 25th, 2016 at 1:51am

# Shared by Chris Wright on Wednesday, May 25th, 2016 at 3:02am

# Shared by pixel9 on Wednesday, May 25th, 2016 at 5:06am

# Shared by maybemonad on Wednesday, May 25th, 2016 at 7:02am

# Shared by Andy Howell on Wednesday, May 25th, 2016 at 7:16am

# Shared by Sergi Meseguer on Wednesday, May 25th, 2016 at 8:02am

# Shared by Francesco Di Gravina on Wednesday, May 25th, 2016 at 8:20am

# Shared by bibo on Wednesday, May 25th, 2016 at 8:27am

# Shared by Razvan Caliman on Wednesday, May 25th, 2016 at 8:33am

# Shared by Rhys Evans on Wednesday, May 25th, 2016 at 8:36am

# Shared by Orde Saunders on Wednesday, May 25th, 2016 at 8:50am

# Shared by Thomas Digby on Wednesday, May 25th, 2016 at 9:24am

# Shared by David O'Brien on Wednesday, May 25th, 2016 at 9:24am

# Shared by Lennie on Wednesday, May 25th, 2016 at 9:51am

# Shared by Saulius Kerusauskas on Wednesday, May 25th, 2016 at 10:02am

# Shared by Pier Paolo Ramon on Wednesday, May 25th, 2016 at 10:20am

# Shared by chris van wiemeersch on Wednesday, May 25th, 2016 at 10:22am

# Shared by Rowan Manning on Wednesday, May 25th, 2016 at 10:42am

# Shared by Olivier Ligot on Wednesday, May 25th, 2016 at 11:09am

# Shared by José Luis Bolos on Wednesday, May 25th, 2016 at 11:18am

# Shared by Tom Dale on Wednesday, May 25th, 2016 at 11:28am

# Shared by John Brett on Wednesday, May 25th, 2016 at 11:29am

# Shared by Sébastien Deleuze on Wednesday, May 25th, 2016 at 11:30am

# Shared by Glynn Phillips on Wednesday, May 25th, 2016 at 11:33am

# Shared by Piet on Wednesday, May 25th, 2016 at 11:34am

# Shared by Alex Ferrando on Wednesday, May 25th, 2016 at 11:39am

# Shared by tom brandt on Wednesday, May 25th, 2016 at 11:40am

# Shared by Ad Taylor on Wednesday, May 25th, 2016 at 11:41am

# Shared by Kamalakannan on Wednesday, May 25th, 2016 at 11:44am

# Shared by Fabian Mettler on Wednesday, May 25th, 2016 at 11:45am

# Shared by Andrew Smith on Wednesday, May 25th, 2016 at 11:45am

# Shared by Mike Parsons on Wednesday, May 25th, 2016 at 11:46am

# Shared by Bryan Chaiklin on Wednesday, May 25th, 2016 at 11:48am

# Shared by Francis Onwumere on Wednesday, May 25th, 2016 at 11:50am

# Shared by Alex Kott on Wednesday, May 25th, 2016 at 11:50am

# Shared by Ire Aderinokun on Wednesday, May 25th, 2016 at 11:53am

# Shared by Studio Zero on Wednesday, May 25th, 2016 at 11:54am

# Shared by Ryan Connolly on Wednesday, May 25th, 2016 at 12:03pm

# Shared by Venkatesh on Wednesday, May 25th, 2016 at 12:04pm

# Shared by Eric Bailey on Wednesday, May 25th, 2016 at 12:23pm

# Shared by Nolan Lawson on Wednesday, May 25th, 2016 at 12:23pm

# Shared by Philippe Duval on Wednesday, May 25th, 2016 at 12:27pm

# Shared by Baldur Bjarnason on Wednesday, May 25th, 2016 at 12:31pm

# Shared by Andrey Okonetchnikov on Wednesday, May 25th, 2016 at 12:33pm

# Shared by Tobie Langel on Wednesday, May 25th, 2016 at 12:37pm

# Shared by XanderDumaine on Wednesday, May 25th, 2016 at 12:55pm

# Shared by Friedemann Altrock on Wednesday, May 25th, 2016 at 1:22pm

# Shared by Kashyap on Wednesday, May 25th, 2016 at 1:25pm

# Shared by Johann Sonntagbauer on Wednesday, May 25th, 2016 at 2:01pm

# Shared by Joni Korpi on Wednesday, May 25th, 2016 at 2:42pm

# Shared by Mathias on Wednesday, May 25th, 2016 at 2:43pm

# Shared by Olivier Audard on Wednesday, May 25th, 2016 at 3:17pm

# Shared by kateλyn perry on Wednesday, May 25th, 2016 at 3:34pm

# Shared by Ben Kelly on Wednesday, May 25th, 2016 at 4:52pm

# Shared by James Burke on Wednesday, May 25th, 2016 at 5:08pm

# Shared by Anne van Kesteren on Wednesday, May 25th, 2016 at 5:23pm

# Shared by Chris Taylor on Wednesday, May 25th, 2016 at 5:29pm

# Shared by Casper Thomsen on Wednesday, May 25th, 2016 at 5:38pm

# Shared by Mark Boyd on Wednesday, May 25th, 2016 at 6:05pm

# Shared by Jake Sandlund on Wednesday, May 25th, 2016 at 6:32pm

# Shared by Antti Koivisto on Wednesday, May 25th, 2016 at 7:34pm

# Shared by Andrey Savchenko on Wednesday, May 25th, 2016 at 9:02pm

# Shared by Jukka Niiranen on Wednesday, May 25th, 2016 at 9:25pm

# Shared by Dennis Gaebel on Thursday, May 26th, 2016 at 2:05am

# Shared by Alistair Duggin on Thursday, May 26th, 2016 at 8:57am

# Shared by kogut benoit on Thursday, May 26th, 2016 at 10:30am

# Shared by Thomas gratier on Saturday, June 11th, 2016 at 6:59pm

# Shared by Antonio Santiago on Saturday, June 11th, 2016 at 7:34pm

# Shared by Ray McBride on Monday, October 24th, 2016 at 1:10pm

94 Likes

# Liked by jalbertbowdenii on Tuesday, May 24th, 2016 at 11:58pm

# Liked by Joe Watkins on Wednesday, May 25th, 2016 at 12:31am

# Liked by Jakub Jo on Wednesday, May 25th, 2016 at 12:32am

# Liked by Alex Mahan on Wednesday, May 25th, 2016 at 12:32am

# Liked by Sean Curtis on Wednesday, May 25th, 2016 at 12:32am

# Liked by Ruadhán on Wednesday, May 25th, 2016 at 12:32am

# Liked by Devon Rathie-Wright on Wednesday, May 25th, 2016 at 12:32am

# Liked by erwin mombay on Wednesday, May 25th, 2016 at 12:33am

# Liked by DMXReady on Wednesday, May 25th, 2016 at 12:57am

# Liked by Jörg Hambuch on Wednesday, May 25th, 2016 at 12:57am

# Liked by Curtis Jurgensen on Wednesday, May 25th, 2016 at 1:31am

# Liked by Drew Bolles on Wednesday, May 25th, 2016 at 1:56am

# Liked by Alen Abdula on Wednesday, May 25th, 2016 at 1:56am

# Liked by Peter Rushforth on Wednesday, May 25th, 2016 at 1:56am

# Liked by Hugh Isaacs II on Wednesday, May 25th, 2016 at 1:57am

# Liked by Corina Rudel on Wednesday, May 25th, 2016 at 2:28am

# Liked by Jan Skovgaard on Wednesday, May 25th, 2016 at 5:40am

# Liked by Kartik Prabhu on Wednesday, May 25th, 2016 at 6:26am

# Liked by dirk döring on Wednesday, May 25th, 2016 at 6:42am

# Liked by Tinker Tom on Wednesday, May 25th, 2016 at 7:43am

# Liked by Andy Howell on Wednesday, May 25th, 2016 at 7:43am

# Liked by geertmelotte on Wednesday, May 25th, 2016 at 8:14am

# Liked by Sergi Meseguer on Wednesday, May 25th, 2016 at 8:14am

# Liked by Razvan Caliman on Wednesday, May 25th, 2016 at 8:44am

# Liked by Brunus on Wednesday, May 25th, 2016 at 9:10am

# Liked by Ricardo Gladwell on Wednesday, May 25th, 2016 at 9:10am

# Liked by adgad on Wednesday, May 25th, 2016 at 9:11am

# Liked by Vincent De Oliveira on Wednesday, May 25th, 2016 at 9:11am

# Liked by Thorvald Neumann on Wednesday, May 25th, 2016 at 9:40am

# Liked by mumoss on Wednesday, May 25th, 2016 at 9:40am

# Liked by David O'Brien on Wednesday, May 25th, 2016 at 9:40am

# Liked by Oliver Joseph Ash on Wednesday, May 25th, 2016 at 9:41am

# Liked by Douglas on Wednesday, May 25th, 2016 at 10:07am

# Liked by randstein on Wednesday, May 25th, 2016 at 10:32am

# Liked by Pier Paolo Ramon on Wednesday, May 25th, 2016 at 10:32am

# Liked by Beyoncé Owles on Wednesday, May 25th, 2016 at 11:28am

# Liked by Studio Zero on Wednesday, May 25th, 2016 at 11:58am

# Liked by Jon Moss on Wednesday, May 25th, 2016 at 11:58am

# Liked by Steven Held on Wednesday, May 25th, 2016 at 11:58am

# Liked by John Brett on Wednesday, May 25th, 2016 at 11:58am

# Liked by Adnan Topal on Wednesday, May 25th, 2016 at 11:58am

# Liked by Bryan Chaiklin on Wednesday, May 25th, 2016 at 11:59am

# Liked by jleedev on Wednesday, May 25th, 2016 at 11:59am

# Liked by Chris on Wednesday, May 25th, 2016 at 11:59am

# Liked by Glynn Phillips on Wednesday, May 25th, 2016 at 11:59am

# Liked by Gustavo Leon on Wednesday, May 25th, 2016 at 11:59am

# Liked by Andrew Smith on Wednesday, May 25th, 2016 at 12:00pm

# Liked by tbassetto on Wednesday, May 25th, 2016 at 12:34pm

# Liked by Hassan Abdel-Rahman on Wednesday, May 25th, 2016 at 12:35pm

# Liked by Baldur Bjarnason on Wednesday, May 25th, 2016 at 12:35pm

# Liked by Andrey Okonetchnikov on Wednesday, May 25th, 2016 at 1:00pm

# Liked by mar on Wednesday, May 25th, 2016 at 1:00pm

# Liked by Kristof Neirynck on Wednesday, May 25th, 2016 at 1:00pm

# Liked by kevin on Wednesday, May 25th, 2016 at 1:01pm

# Liked by Fabian Kern on Wednesday, May 25th, 2016 at 1:26pm

# Liked by Kashyap on Wednesday, May 25th, 2016 at 1:26pm

# Liked by Friedemann Altrock on Wednesday, May 25th, 2016 at 1:26pm

# Liked by Kamila Mielczarek on Wednesday, May 25th, 2016 at 1:26pm

# Liked by Tikhon Belousko on Wednesday, May 25th, 2016 at 2:50pm

# Liked by Rémi on Wednesday, May 25th, 2016 at 2:51pm

# Liked by Mizan :) on Wednesday, May 25th, 2016 at 2:51pm

# Liked by Joni Korpi on Wednesday, May 25th, 2016 at 2:52pm

# Liked by Fatih Altınok on Wednesday, May 25th, 2016 at 3:51pm

# Liked by Anton Heryanto on Wednesday, May 25th, 2016 at 3:51pm

# Liked by SA on Wednesday, May 25th, 2016 at 3:51pm

# Liked by Jason Davis on Wednesday, May 25th, 2016 at 3:51pm

# Liked by Ronalson Filho on Wednesday, May 25th, 2016 at 4:59pm

# Liked by Ben Kelly on Wednesday, May 25th, 2016 at 4:59pm

# Liked by Sam Weinig on Wednesday, May 25th, 2016 at 4:59pm

# Liked by Nicolas Eeckeloo on Wednesday, May 25th, 2016 at 5:19pm

# Liked by Josh Peek on Wednesday, May 25th, 2016 at 5:19pm

# Liked by Aske Kammer on Wednesday, May 25th, 2016 at 5:51pm

# Liked by Thomas Yung on Wednesday, May 25th, 2016 at 5:51pm

# Liked by Thomas Broyer on Wednesday, May 25th, 2016 at 5:53pm

# Liked by Fabian on Wednesday, May 25th, 2016 at 6:18pm

# Liked by Julien - revolunet on Wednesday, May 25th, 2016 at 7:49pm

# Liked by cstanhope on Wednesday, May 25th, 2016 at 7:50pm

# Liked by L. David Baron on Wednesday, May 25th, 2016 at 9:20pm

# Liked by Kyle Barrow on Wednesday, May 25th, 2016 at 9:20pm

# Liked by Gustaf on Wednesday, May 25th, 2016 at 10:55pm

# Liked by Mathieu Petitdant on Wednesday, May 25th, 2016 at 11:48pm

# Liked by Dennis Gaebel on Thursday, May 26th, 2016 at 2:22am

# Liked by Meechie Hoe on Thursday, May 26th, 2016 at 2:50am

# Liked by yong woo jeon(mixed) on Thursday, May 26th, 2016 at 2:50am

# Liked by Anil Valke on Thursday, May 26th, 2016 at 8:13am

# Liked by Alistair Duggin on Thursday, May 26th, 2016 at 9:11am

# Liked by Beau Davis on Thursday, May 26th, 2016 at 3:15pm

# Liked by Brecht Savelkoul 夏德明 on Thursday, May 26th, 2016 at 5:30pm

# Liked by Gabor Lenard on Friday, May 27th, 2016 at 9:25pm

# Liked by Marty DeGarmo on Saturday, May 28th, 2016 at 1:34am

# Liked by sisidovski on Saturday, May 28th, 2016 at 6:07am

# Liked by Simon Knox on Monday, May 30th, 2016 at 3:07pm

# Liked by Denis Elistratov on Thursday, June 2nd, 2016 at 9:23am

# Liked by Joyce White on Sunday, July 10th, 2016 at 4:30am

Related posts

Push

Mobile Safari finally ships the feature we’ve all been waiting for …but hardly anyone is going to get to use it.

A bug with progressive web apps on iOS

Opening an external link in a web view appears to trigger a reload of the parent page without credentials.

Safari 15

What’s coming in the next version of Safari …and what isn’t.

Offline itineraries with service workers

Turbo-boosting travel sites into progressive web apps.

Backdoor Service Workers

The tragedy of the iframe commons.

Related links

Home Screen Advantage - Infrequently Noted

This is exactly what it looks like: a single-fingered salute to the web and web developers.

Read Alex’s thorough explanation of the current situation and then sign this open letter.

Cupertino’s not just trying to vandalise PWAs and critical re-engagement features for Safari; it’s working to prevent any browser from ever offering them on iOS. If Apple succeeds in the next two weeks, it will cement a future in which the mobile web will never be permitted to grow beyond marketing pages for native apps.

Also, remember this and don’t fall for it:

Apple apparently hopes it can convince users to blame regulators for its own choices.

Tagged with

Manton Reece - Apple is twisting the truth

When it benefits Apple, they take the DMA requirements much further than intended. When it doesn’t benefit them, they lean back on the “integrity” of iOS and barely comply at all.

Tagged with

Apple on course to break all Web Apps in EU within 20 days - Open Web Advocacy

I don’t like to assume the worst and assign vindictitive motives to people, but what Apple is doing here is hard to read as anything other than petulant and nasty …and really, really bad for users.

If you’ve ever made a progressive web app, please fill in this survey.

Tagged with

People do use Add to Home Screen – Firefox UX

Oh no! My claim has been refuted by a rigourous scientific study of …checks notes… ten people.

Be right back: just need to chat with eleven people.

Tagged with

Web Push on iOS requires installing the web app - Webventures

Instead of doing what the competing browsers are doing (and learning from years of experience of handling Web Push), Apple decided to reinvent a wheel here. What they’ve turned up with looks a lot more like a square.

Tagged with

Previously on this day

9 years ago I wrote 100 words 063

Day sixty three.

13 years ago I wrote Topically hot

Am I hot topic or not? I want your suggestions for this year’s @media.

13 years ago I wrote The good new days

Everything new is old again.

17 years ago I wrote South Parking

In which I spend a day in the epicentre of geekdom.

18 years ago I wrote That syncing feeling

I’ve been getting my emails, contacts and calendars in order.

21 years ago I wrote Cameras are kryptonite to Starbucks

I had no idea when this picture was taken that I was opening myself up to a potential tirade from a Starbucks manager. Lawrence Lessig has the story: