The imitation game

Jason sharedsome thoughts on designing progressive web apps.One of the things he’s pondering is how much you should try make your web-based offering look and feel like a native app.

This was prompted by an article byOwen Campbell-Mooreover on Ev’s blog calledDesigning Great UIs for Progressive Web Apps.He begins with this advice:

Start by forgetting everything you know about conventional web design, and instead imagine you’re actually designing a native app.

This makes me squirm. I mean, I’m all for borrowing good ideas from other media—native apps, TV, print—but I don’t think that inspiration should mean imitation. For me, that always results in an interface that sits in a kind of uncanny valley of being almost—but not quite—like the thing it’s imitating.

With that out of the way, most of the recommendations in Owen’s article are sensible ideas about animation, input, and feedback. But then there’s recommendation number eight:Provide an easy way to share content:

PWAs are often shown in a context where the current URL isn’t easily accessible, so it is important to ensure the user can easily share what they’re currently looking at. Implement a share button that allows users to copy the URL to the clipboard, or share it with popular social networks.

See, when a developer has to implement a feature that the browser should be providing, that seems like a bad code smell to me. This is a problem thatOpera is solving(and Google says it is solving, while meanwhilepenalising developers who expose the URL to end users).

Anyway, I think my squeamishness about all the advice to imitate native apps is because it feels like acargo cult.There seems to be an inherent assumption that native is intrinsically “better” than the web, and that the only way that the web can “win” is to match native apps note for note. But that misses out on all the things that only the web can do—instant distribution, low-friction sharing, and the ability to link to any other resource on the web (and be linked to in turn). Turning our beautifully-networked nodes into standalone silos just because that’s the way that native apps have to work feels like the cure that kills the patient.

If anything, my advice for building a progressive web app would be the exact opposite of Owen’s: don’t forget everything you’ve learned about web design. In my opinion, the term “progressive web app” can be read in order of priority:

  1. Progressive—build in a layered way so that anyone can access your content, regardless of what device or browser they’re using, rewarding the more capable browsers with more features.
  2. Web—you’re building for the web. Don’t lose sight of that. URLs matter. Accessibility matters. Performance matters.
  3. App—sure, borrow what works from native apps if it makes sense for your situation.

Jason asks questions about how your progressive web app will behave when it’s added to the home screen.How much do you match the platform?How do you manage going chromeless?And the big one:what do users expect?

Will people expect an experience that maps to native conventions? Or will they be more accepting of deviation because they came to the app via the web and have already seen it before installing it?

These are good questions and I share Jason’s hunch:

My gut says that we can build great experiences without having to make it feel exactly like an iOS or Android app because people will have already experienced the Progressive Web App multiple times in the browser before they are asked to install it.

In all the messaging from Google about progressive web apps, there’s a real feeling that the ability to install to—and launch from—the home screen is a real game changer. I’m not so sure that we should be betting the farm on that feature (the offline possibilities opened up by service workers feel like more of a game-changer to me).

People have been gleefully passing around the statistic that the average number of native apps installed per month is zero. So how exactly will we measure the success of progressive web apps against native apps…when the average number of progressive web apps installed per month is zero?

I like Android’sadd-to-home-screen algorithm(althoughit needs tweaking). It’s a really nice carrot to reward the best websites with. But let’s not carried away. I think that most people arenotgoing to click that “add to home screen” prompt. Let’s face it, we’ve trained people to ignore prompts like that. When someone is trying to find some information or complete a task, a prompt that pops up saying “sign up to our newsletter” or “download our native app” or “add to home screen” is a distraction to be dismissed. The fact that only the third example is initiated by the operating system, rather than the website, is irrelevant to the person using the website.

Getting the “add to home screen” prompt for https://huffduffer.com/ on Android Chrome.

My hunch is that the majority of people will still interact with your progressive web app via a regular web browser view. If, then, only a minority of people are going to experience your site launched from the home screen in a native-like way, I don’t think it makes sense to prioritise that use case.

The great thing about progressive web apps is that they are first and foremost websites. Literallyeveryonewho interacts with your progressive web app is first going to do so the old-fashioned way, by following a link or typing in a URL. Theymaylater add it to their home screen, but that’s just a bonus. I think it’s important to build progressive web apps accordingly—don’t pretend that it’s just like building a native app just because some people will be visiting via the home screen.

I’m worried that developers are going to think that progressive web apps are something that need to built from scratch; that you have to start with a blank slate and build something new in a completely new way. Now, there are some good examples of these kind of one-off progressive web apps—The Guardian’s RioRunis nicely done. But I don’t think that the majority of progressive web apps should fall into that category. There’s nothing to stop you taking an existing website and transforming it step-by-step into a progressive web app:

  1. Switch over to HTTPS if you aren’t already.
  2. Use a service worker, even if it’s just to provide a custom offline page and cache some static assets.
  3. Make a manifest file to point to an icon and specify some colours.

See? Not exactly a paradigm shift in how you approach building for the web…but those deceptively straightforward steps will really turbo-boost your site.

I’m really excited about progressive web apps…but mostly for the “progressive” and “web” parts. Maybe I’ll start calling them progressive web sites. Orprogressive web thangs.

Have you published a response to this?:

Responses

Jason Garber

Jeremy,on how he thinks about building progressive web apps:

In my opinion, the term “progressive web app” can be read in order of priority:

  1. Progressive—build in a layered way so that anyone can access your content, regardless of what device or browser they’re using, rewarding the more capable browsers with more features.
  2. Web—you’re building for the web. Don’t lose sight of that. URLs matter. Accessibility matters. Performance matters.
  3. App—sure, borrow what works from native apps if it makes sense for your situation.

He also links toJason Grigsby’sDesigning Responsive Progressive Web Apps which is another great read.

Visit “Adactio: Journal—The imitation game”

Pelle Wessman

I very much agree with Jeremy here. It smells like cargo culting rather than actual open minded analysis. Let’s be thoughtful in building our PWA:s. That will likely create a focus on the progressiveness rather than the appiness, to the benefit of users.adactio /journal/11130

7 Shares

# Shared by Gabor Lenard on Monday, September 5th, 2016 at 5:06pm

# Shared by Kevin Curry on Thursday, October 3rd, 2019 at 12:07pm

# Shared by Tobie Langel on Thursday, October 3rd, 2019 at 12:53pm

# Shared by vhfmag on Thursday, October 3rd, 2019 at 1:01pm

# Shared by Jason Neel on Thursday, October 3rd, 2019 at 1:21pm

# Shared by Nicolas Hoizey on Thursday, October 3rd, 2019 at 4:10pm

# Shared by Adewale Oshineye on Friday, October 4th, 2019 at 4:46am

25 Likes

# Liked by Marc Drummond on Tuesday, September 6th, 2016 at 1:12am

# Liked by lvdesign on Tuesday, September 6th, 2016 at 6:40pm

# Liked by Zach Leatherman on Thursday, October 3rd, 2019 at 12:24pm

# Liked by Pelle Wessman on Thursday, October 3rd, 2019 at 12:24pm

# Liked by chillfinn on Thursday, October 3rd, 2019 at 12:24pm

# Liked by dietrich on Thursday, October 3rd, 2019 at 12:24pm

# Liked by Kevin Curry on Thursday, October 3rd, 2019 at 12:24pm

# Liked by Chris Lilley on Thursday, October 3rd, 2019 at 12:50pm

# Liked by juude on Thursday, October 3rd, 2019 at 12:50pm

# Liked by Tim Beadle on Thursday, October 3rd, 2019 at 12:50pm

# Liked by John F Croston III on Thursday, October 3rd, 2019 at 12:51pm

# Liked by Sarah Pengelly on Thursday, October 3rd, 2019 at 12:52pm

# Liked by Clearleft on Thursday, October 3rd, 2019 at 1:18pm

# Liked by Tobie Langel on Thursday, October 3rd, 2019 at 1:18pm

# Liked by Nick Sayre on Thursday, October 3rd, 2019 at 1:18pm

# Liked by vhfmag on Thursday, October 3rd, 2019 at 1:18pm

# Liked by Jason Neel on Thursday, October 3rd, 2019 at 1:44pm

# Liked by João Beleza Freire on Thursday, October 3rd, 2019 at 2:13pm

# Liked by Otto Rask on Thursday, October 3rd, 2019 at 2:13pm

# Liked by Holger Bartel on Thursday, October 3rd, 2019 at 2:47pm

# Liked by Stuart Lynn on Thursday, October 3rd, 2019 at 2:47pm

# Liked by Gabriel N on Thursday, October 3rd, 2019 at 4:12pm

# Liked by Ariel Burone 🇦🇷 on Thursday, October 3rd, 2019 at 5:12pm

# Liked by Philip Renich on Thursday, October 3rd, 2019 at 7:49pm

# Liked by Tom Insam on Friday, October 4th, 2019 at 5:19am

Related posts

Browser support

Here’s Clearleft’s approach to browser support. You can use it too (it’s CC-licensed).

Applying the four principles of accessibility

Here’s how I interpret the top-level guidance in the Web Content Accessibility Guidelines.

Speculation rules

A performance boost in Chrome.

Baseline progressive enhancement

If a browser feature can be used as a progressive enhancement, you don’t have to wait for all browsers to support it.

Displaying HTML web components

You might want to use `display: contents`…maybe.

Related links

Reckoning: Part 1 — The Landscape - Infrequently Noted

I want to be a part of a frontend culture that accepts and promotes our responsibilities to others, rather than wallowing in self-centred “DX” puffery. In the hierarchy of priorities, users must come first.

Alex doesn’t pull his punches in this four-part truth-telling:

  1. The Landscape
  2. Object Lesson
  3. Caprock
  4. The Way Out

The React anti-pattern of hugely bloated single-page apps has to stop. And we can stop it.

Success or failure is in your hands, literally. Others in the equation may have authority, but you havepower.

Begin to use that power to make noise. Refuse to go along with plans to build YAJSD (Yet Another JavaScript Disaster). Engineering leaders look to their senior engineers for trusted guidance about what technologies to adopt. When someone inevitably proposes the React rewrite, do not be silent. Do not let the bullshit arguments and nonsense justifications pass unchallenged. Make it clear to engineering leadership that this stuff is expensive and is absolutelynot“standard”.

Tagged with

It’s about time I tried to explain what progressive enhancement actually is - Piccalilli

Progressive enhancement is a design and development principle where we build in layers which automatically turn themselves on based on the browser’s capabilities.

The idea of progressive enhancement is thateveryone gets the perfect experience for them,rather than a pre-determined “perfect” experience from a design and development team.

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, pleasefill in this survey.

Tagged with

The web is mostly links and forms | Go Make Things

In the same vein asthat last link,Chris says what we’re all thinking:

Most of what we build is links from one page to another, andformsubmissions that send data from the browser to the server.

Tagged with

12 Modern CSS One-Line Upgrades | Modern CSS Solutions

I love how straightforward these bits of CSS are—time to rip out some of those old complicated hacks and workarounds!

Tagged with

Previously on this day

12 years ago I wrote Questions, please

What should I ask Brian Aldiss, Lauren Beukes, and Jeff Noon?

16 years ago I wrote pre-dConstruct

Almost there…

18 years ago I wrote d.Construct events

A pre-conference booze-up, a mapping workshop, and a microformats picnic.

20 years ago I wrote Crisis? What crisis?

Hurricane Frances is taking its own sweet time. For a while today it stopped completely off the coast of Florida.

22 years ago I wrote Coudal Partners

Here’s a nice documentary from Coudal looking at the work of designer Andy Mueller.