Airhorner Custom Element

Paul Kinlan

I made the <air-horner> custom element to learn more about the web component ecosystem and how to deploy them at scale. I don't expect this to be used by anyone, but it helped me set a direction for my team in how we try and support and plan for a web component future.

I learn't a couple of significant things:

  • We don't know how to deploy these at scale yet.
  • With HTML Imports going away, at the time of writing we don't have a good way of including templates that are anything but strings in JavaScript. It looks like lit-html might be a good path.
  • There wasn't a lot of guidance on the web about attributes vs properties.
  • Deploying multiple assets with one element is hard - where do my audio files go?
  • Theming is still a pain.
  • I really like slots. I love the idea of reprojection.

If you are really interested, you can see it below.

<script src="/javascripts/air-horner.js"></script>
air-horner {
    display: block;
    height: 300px;


I lead the Chrome Developer Relations team at Google.

We want people to have the best experience possible on the web without having to install a native app or produce content in a walled garden.

Our team tries to make it easier for developers to build on the web by supporting every Chrome release, creating great content to support developers on, contributing to MDN, helping to improve browser compatibility, and some of the best developer tools like Lighthouse, Workbox, Squoosh to name just a few.

I love to learn about what you are building, and how I can help with Chrome or Web development in general, so if you want to chat with me directly, please feel free to book a consultation.

I'm trialing a newsletter, you can subscribe below (thank you!)