# Awesome Web Components [![Awesome](https://awesome.re/badge.svg)](https://awesome.re) A curated list of awesome Web Components resources. > **Note** > This project was previously named "Web Components the Right Way" [Web Components](https://developer.mozilla.org/en-US/docs/Web/Web_Components) — a suite of different technologies allowing you to create reusable custom elements — with their functionality encapsulated away from the rest of your code — and utilize them in your web apps. ## Contents - [Introduction](#introduction) - [Standards](#standards) - [Custom Elements](#custom-elements) - [Shadow DOM](#shadow-dom) - [HTML Templates](#html-templates) - [CSS Shadow Parts](#css-shadow-parts) - [Guides](#guides) - [Accessibility](#accessibility) - [Best Practices](#best-practices) - [Codelabs](#codelabs) - [Examples](#examples) - [Articles](#articles) - [Architecture](#architecture) - [Interoperability](#interoperability) - [Limitations](#limitations) - [Styling](#styling) - [Real World](#real-world) - [Case Studies](#case-studies) - [Components](#components) - [Component Libraries](#component-libraries) - [Design Systems](#design-systems) - [Use Cases](#use-cases) - [Libraries](#libraries) - [Class Based](#class-based) - [Functional](#functional) - [Integrations](#integrations) - [Benchmarks](#benchmarks) - [Frameworks](#frameworks) - [Angular](#angular) - [React](#react) - [Vue](#vue) - [Svelte](#svelte) - [Ecosystem](#ecosystem) - [Meta Frameworks](#meta-frameworks) - [Starter Kits](#starter-kits) - [Testing Solutions](#testing-solutions) - [Tools](#tools) - [Books](#books) - [Tutorials](#tutorials) - [Insights](#insights) - [Podcasts](#podcasts) - [Presentations](#presentations) - [Talks](#talks) - [Usage Metrics](#usage-metrics) - [Proposals](#proposals) - [Form-associated Custom Elements](#form-associated-custom-elements) - [Constructable Stylesheet Objects](#constructable-stylesheet-objects) - [Custom State Pseudo Class](#custom-state-pseudo-class) - [Miscellaneous](#miscellaneous) - [Archive](#archive) - [Polyfills](#polyfills) - [History](#history) - [Who To Follow](#who-to-follow) - [Maintainers](#maintainers) ## Introduction - [An Introduction to Web Components](https://css-tricks.com/an-introduction-to-web-components/) - [Intro to Web Components](https://developer.salesforce.com/blogs/2020/01/intro-to-web-components.html) - [The Holy Grail Of Reusable Components: Custom Elements, Shadow DOM, And NPM](https://www.smashingmagazine.com/2018/07/reusable-components-custom-elements-shadow-dom-npm/) - [The Motivation For Using Web Components, an Introduction](https://www.thinktecture.com/web-components/introduction-and-motivation/) - [The Power of Web Components](https://hacks.mozilla.org/2018/11/the-power-of-web-components/) - [Web Components 101](https://nhswd.com/blog/web-components-101-what-are-web-components/) - [Web Components: From the orbital height](https://javascript.info/webcomponents-intro) - [What are browser-native web components?](https://gomakethings.com/what-are-browser-native-web-components/) - [Why Web Components?](https://www.fast.design/docs/resources/why-web-components/) ## Standards ### Custom Elements Custom Elements provide a way for authors to build their own fully-featured DOM elements. - [A Guide to Custom Elements for React Developers](https://css-tricks.com/a-guide-to-custom-elements-for-react-developers/) - [All about HTML Custom Elements](https://github.com/shawnbot/custom-elements) - [Custom elements](https://javascript.info/custom-elements) - [Custom Elements v1: Reusable Web Components](https://web.dev/custom-elements-v1/) - [Handling properties in custom element upgrades](https://nolanlawson.com/2021/08/03/handling-properties-in-custom-element-upgrades/) - [Handy Custom Elements' Patterns](https://gist.github.com/WebReflection/ec9f6687842aa385477c4afca625bbf4) - [HTML Living Standard: Custom elements](https://html.spec.whatwg.org/multipage/custom-elements.html) - [MDN - Using Custom Elements](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements) - [web-platform-tests](https://github.com/web-platform-tests/wpt/tree/master/custom-elements) ### Shadow DOM Shadow DOM describes a method of combining multiple DOM trees into one hierarchy and how these trees interact with each other within a document, thus enabling better composition of the DOM. - [A complete guide on shadow DOM and event propagation](https://pm.dartus.fr/blog/a-complete-guide-on-shadow-dom-and-event-propagation/) - [DOM Living Standard: Shadow tree](https://dom.spec.whatwg.org/#shadow-trees) - [MDN - Using Shadow DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM) - [Mind the document.activeElement!](https://dev.to/open-wc/mind-the-document-activeelement-2o9a) - [Open vs. Closed Shadow DOM](https://blog.revillweb.com/open-vs-closed-shadow-dom-9f3d7427d1af) - [Shadow DOM](https://javascript.info/shadow-dom) - [Shadow DOM and events](https://javascript.info/shadow-dom-events) - [Shadow DOM in depth](https://github.com/praveenpuglia/shadow-dom-in-depth) - [Shadow DOM slots, composition](https://javascript.info/slots-composition) - [Shadow DOM styling](https://javascript.info/shadow-dom-style) - [Shadow DOM v1: Self-Contained Web Components](https://web.dev/shadowdom-v1/) - [The Rise of Shadow DOM](https://medium.com/front-end-hacking/the-rise-of-shadow-dom-84aa1f731e82) - [Understanding Slot Updates with Web Components](https://coryrylan.com/blog/understanding-slot-updates-with-web-components) - [What is the Shadow DOM?](https://bitsofco.de/what-is-the-shadow-dom/) - [Who doesn't love some slots?](https://dev.to/westbrook/who-doesnt-love-some-s-3de0) - [Your Content in Shadow DOM Portals](https://dev.to/westbrook/your-content-in-shadow-dom-portals-3cdb) - [web-platform-tests](https://github.com/web-platform-tests/wpt/tree/master/shadow-dom) ### HTML Templates `