Progressive themes was a hot topic at WordCamp Europe 2018. During the event I had the opportunity to set up a panel with four experts who are working to integrate progressive web development practices more deeply in WordPress core, plugins, and themes. These practices make it possible for a website (or app) to work offline, load quickly, deliver content on unreliable networks, and use device-specific features to provide a better experience for the user. The PWA (progressive web app) created for WordCamp Europe is a good example of this in action.
Thierry Muller, Alberto Medina, Weston Ruter, and Morten Rand-Hendriksen joined me for an interview, exploring the future of WordPress themes in the era of progressive web development. (see video below)
“At the most abstract level, it’s all about user experience,” Medina said. “How do we maximize the pleasure that our users get when they use our websites? And delightfulness in this context means things like performance, speed, having content that isn’t blocked. If you think about themes built according to those principles, then we are basically seeking an awesome user experience in WordPress.”
It’s not yet clear what this will look like for the WordPress theme landscape, as current solutions are somewhat fragmented. WordPress contributors are working to standardize progressive technologies in core so the ecosystem can collaborate better together.
“There are many progressive themes being built these days,” Medina said. “One of the problems that is happening is that there is a lot of fragmentation. There’s a lot of plugins that are using service workers but in their own ways. What we want is to say, ‘This is the best way to do things,’ this is a uniform API to do it, and then enable progressive theme developers to take advantage of the core functionality.”
Currently, the prospect of setting up a WordPress site that uses progressive web technologies would be a daunting task for regular users, even if they are implementing existing solutions.
“There’s also a user aspect of it, because the people for whom we design WordPress, plugins, and themes, are the people who actually publish their own content onto the web,” Rand-Hendriksen said. “There’s a really valid question in how much should they need to know about how the web works to be able to publish some content. When they spin up a WordPress site, should we impose on them to know that they need to add all these optimization plugins and do all this other stuff just to make the site work properly? How much of that can be offloaded onto the theme itself, or plugins, or even WordPress core?”
The members of the panel are working together to on various projects and core contributions that will standardize the use of progressive enhancement technologies in WordPress.
“The goal is to have a common API for service workers so that plugins and themes can each install their own logic, just like they can enqueue their own scripts today,” Ruter said. “Also to be able to enqueue their own service workers and then core can manage the combination of them, as well as having a common app manifest that plugins and themes can collaborate on and have a single output into the page.”
This is how Rand-Hendriksen’s WP Rig starter theme project came about – to help developers take advantage of these best practices in the meantime, without having to figure out how to put all the pieces together.
“WP Rig gives you the platform to build a progressive theme that uses all the latest performance and WordPress best practices, in a convenient package, and over time it will evolve with these new progressive technologies,” Rand-Hendriksen said.
We also discussed AMP and Gutenberg compatibility, core support for web app manifests, and how the commercial theme industry will react to these new technologies. Check out the full interview in the video below.
For the feature plugin where work is being done to standardize the WordPress approach to PWAs—integrating with the Service Worker API, creating the Web App Manifest, and improving support for HTTPS—see the project on GitHub: https://github.com/xwp/pwa-wp