I needed to convert a
URL object to a plain object yesterday. You might have used it before. It's pretty handy for working with URLs!
It's been three years since I broke ground on Shoelace 2.0. Between then and now, the project has amassed over 300 million monthly hits on jsDelivr and, as of today, it is jsDelivr's 73rd most popular project.
Installing Shoelace in a React App
Although Shoelace is a web component library, it ships React wrappers that lets you use the library idiomatically in React. This video shows you how to install Shoelace in a brand new Create React App.
Why You Should Prefix Custom Events
Similar to how every custom element must contain a dash, I like to pretend that every custom event must also contain a dash. This removes all ambiguity between native events and custom events.
Custom Event Names and the Bubbling Problem
The topic of custom element event names comes up every now and then, especially from Shoelace users who get confused when events of the same name are emitted from different components.
The Future of Shoelace
It's been more than two years since the beta release of Shoelace 2.0, which was the first version of the project to ship Web Components. What started off as a fun side project has quickly grown to become one of the most recognized Web Component libraries in the world. As of today, Shoelace receives more than 100 million monthly CDN hits on jsDelivr, and that number continues to grow.
A Web Component Story
Gather 'round, it's story time.
Not Everything Can Be Feature Detected
Buttons and Cursors
There's a post from 2016 entitled Buttons shouldn't have a hand cursor that's been making its way around social media this week. While the author is correct in his statement that operating system buttons don't have hand cursors, the pattern has become ubiquitous and somewhat expected on the Web.
My Stance on AI-generated Code
I recently added this to Shoelace's contribution guidelines, which sums up my position on AI-generated code.
Feeds available in Atom & JSON
Explore the archive for additional posts or press / to search.