June 07, 2016
From nczonline.net, with love.

Progressive Web Apps

Hi everyone,

Unless you've been offline for several months, you've probably heard of Progressive Web Apps (PWAs). Google I/O had multiple presentations on the topic and Google's small army of evangelists and Chrome developers have been hyping it for months on end. In their minds, PWAs are the way that the web finally competes on an even ground with native (mobile) apps through the use of service workers, app manifests, and more. The end result: an "installable" web application that looks more or less like a native app.

Of course, not everyone is happy with how PWAs are evolving. There are still some rough edges, such as the hiding of URLs from end users and heuristically showing install banners for PWAs. And some are concerned that moving closer to native could move us away from what makes the web great. However, we've been informed that everything is still in the early stages and incremental improvements are coming.

I know many of the folks working on the PWA infrastructure for Chrome, and have a great deal of respect for them. I do think, however, that the lack of communication around their intentions and longer-term plans, coupled with intense marketing, have led to a lot of confusion amongst developers. We're quickly getting back to the point where people are creating web applications that only work correctly in Chrome, and only with a bunch of JavaScript during load. That's not "progressive."

Don't get me wrong, there's a lot to like about PWAs. It's nice that we can actually create web applications that can compete with native apps on graphics, performance, and user experience. However, I'd urge you to remember the word "progressive," which means that you start with something that works for everybody and then layer on additional functionality so developers can take advantage of new technologies available in some browsers.

"Works best in Chrome" is fine to say, but you never want to say "Works only in Chrome." There are plenty of people using other browsers out there, so don't forget to test cross-browser and keep the web progressive.



Be well.

-N
JavaScript WeeklyHelp Support This Newsletter
Did you enjoy the newsletter? Leave a tip or become a patron.

Recommended Links

State of the Gap (article)
Several years ago, PhoneGap was introduced as a way to write web applications that worked like native apps. Fast forward to this year, and the gap between what native and web can do has shrunk dramatically. In this overview of what has changed since PhoneGap was first released, and how some prophetic words on release day have seemed to come true.

Mythbusting HTTPS (video, 43 mins)
Still not moving to HTTPS because it's too slow? Or because it's complicated to set up? In this excellent talk, you'll learn about the myths associated with HTTPS and whether or not they are true. This is a fantastic talk full of more HTTPS information, explained simply, than I've ever seen before. Even if you think you're familiar with HTTPS, I highly recommend this video.

Autofill: What web devs should know, but don't (article)
Ever wonder why some credit card forms will autofill but others won't? Did you know iOS Safari has the ability to scan a credit card to fill in a form? This article digs into the mysterious workings of browser autofill, specifically looking at how we fill in credit card information. With little documentation out there, this article digs through with trial-and-error methodology to figure out how the mysterious autofill feature works.

Recommended Book

If you're a longtime reader of this newsletter, you've heard me say how important people skills are to software engineers. What Every Body is Saying takes this to an interesting extreme, teaching you how to better read body language to figure out what is going on with somebody. Written by a former FBI counterintelligence officer, you'll learn how people's body's react in different situations and why it's impossible to tell if someone is lying just be looking at them. However, it is possible to tell a whole host of other things about someone. Does it mean anything if a person crosses their legs while sitting? What if they turn towards or away from you? Every little bit of insight into how people physically relate to one another can help your people skills tremendously.

Recently on NCZOnline

ES6 module loading: More complicated than you think
One of the most long-awaited features of ECMAScript 6 is the formal definition of modules as part of the language. For years, JavaScript developers have struggled with organizing their code and needing to decide between alternate ad-hoc module formats like RequireJS, AMD, and CommonJS. Formally defining modules as part of JavaScript will eliminate a lot...

Mimicking npm script in Node.js
I'm a big fan of npm scripts[1] and have been using them in all of my projects instead of a standalone build system. The feature I like the most from npm scripts is the ability to run command line executables that are installed in your project's node_modules/.bin directory. That allows you to, for example, install...

Reflections on ESLint's success
It's hard for me to believe, but I first conceived and created ESLint[1] in June 2013 and first announced it's availability in July 2013[2]. As frequent readers might recall, the primary goal of ESLint was to create a linter with rules that could be loaded at runtime. I had seen some problems in our JavaScript...

Feedback

Love this newsletter? Hate it? Have suggestions for how to make it better? When you subscribe to the newsletter, you can just reply to send in feedback.

Ready to subscribe?

Join over 2,000 others and subscribe to get the newsletter delivered to your inbox every other Tuesday. 
If you enjoy this newsletter and would like to support my work (including the newsletter, my blog, my books, and ESLint), please consider becoming a patron. I provide a lot of free content and your support allows me to spend more time doing so, and there are great rewards for patrons.
Copyright © 2016 Nicholas C. Zakas, All rights reserved.


unsubscribe from this list    update subscription preferences