We are seeing Web Components at scale. Google deploys AMP with custom elements at speed, and we recently shared how YouTube has a brand new experience that uses Web Components via Polymer. Other partners at the Polymer Summit also shared their experiences and the benefits they are seeing. I really enjoyed a typically fun Aussie go at the problem.
Browser adoption has enabled the developer community to consider the fact that it may make sense to look at how the Web platform now has the ability to define components natively. Web frameworks have created their own component models, and popular ones naturally create (or port) a series of core widgets, but do we really have to keep doing this? Is there room, at least starting from the leaf, for high quality components that we can share?
The frameworks themselves are also able to afford another look.
So, it’s time for us to kick up the usage and experimentation with what is possible with Web Components.
I recently talked about how we need to prioritize performance and think like games programmers. One of the areas of Web Components that has long excited me is the loose coupling of the markup to the implementation.
What if we had multiple implementations that were served differently based on requirements? If someone is coming to you with Save-Data turned on via a 2G connection and a low end device, maybe you send back a bare bones implementation and only replace it later? Collin Miller renders a different implementation when the element is in edit mode vs. view mode in the CMS at The Onion.
Paul also hinted about the possibility of multiple implementations of various tags. Currently, we specify standard tags in the land of HTML. It’s pretty monolithic, and the implementations are done by the browsers. These implementations aren’t always beloved so what if we had another space to experiment with tags that could get various implementations? What if web developers (both from the lands of frameworkia and userexperiencia) could participate in the discussion of semantics vs. function, joining browsers and standardistas?
It is really hard to do this in a way that actually allows for implementations that actually work well together, especially when you live in a world of nested semantics, but I am hopeful, and I can’t wait to see some try.