Top Related Projects
A curated list of awesome Web Components resources.
Custom Element + Framework Interoperability Tests.
Modular and customizable Material Design UI components for the web
Quick Overview
The "awesome-web-components" repository is a curated list of resources for Web Components. It provides a comprehensive collection of libraries, tools, articles, and other materials related to Web Components technology. This repository serves as a valuable reference for developers interested in learning about or working with Web Components.
Pros
- Extensive collection of Web Components resources in one place
- Regularly updated with new and relevant content
- Well-organized into categories for easy navigation
- Community-driven, allowing contributions from various developers
Cons
- May be overwhelming for beginners due to the large amount of information
- Some listed resources might become outdated over time
- Lacks in-depth explanations or tutorials for each resource
- Primarily focuses on listing resources rather than providing original content
Code Examples
As this is not a code library but a curated list of resources, there are no specific code examples to provide.
Getting Started
Since this is not a code library, there are no specific getting started instructions. However, to make use of this resource:
- Visit the repository at https://github.com/web-padawan/awesome-web-components
- Browse through the categories to find relevant resources
- Click on the links to explore specific tools, libraries, or articles
- Consider starring the repository or watching it for updates
- If you have a valuable resource to add, you can contribute by creating a pull request
Competitor Comparisons
A curated list of awesome Web Components resources.
Pros of awesome-web-components
- Comprehensive list of Web Components resources
- Well-organized categories for easy navigation
- Regularly updated with new content
Cons of awesome-web-components
- May include outdated or deprecated resources
- Lacks detailed descriptions for some entries
- Limited focus on specific frameworks or libraries
Code Comparison
Not applicable, as both repositories are curated lists of resources and don't contain comparable code snippets.
Summary
The awesome-web-components repository is a valuable resource for developers interested in Web Components. It offers a wide range of curated links to libraries, tools, articles, and other resources related to Web Components technology. The repository's organization makes it easy for users to find relevant information quickly.
However, due to the rapidly evolving nature of web technologies, some listed resources may become outdated over time. Additionally, while the repository covers a broad range of topics, it may not provide in-depth information on specific frameworks or libraries.
Overall, awesome-web-components serves as an excellent starting point for developers looking to explore and learn about Web Components, offering a comprehensive overview of the ecosystem and available resources.
Custom Element + Framework Interoperability Tests.
Pros of custom-elements-everywhere
- Focuses specifically on testing framework compatibility with custom elements
- Provides a comprehensive suite of tests for various web component features
- Offers clear, visual results showing compatibility across frameworks
Cons of custom-elements-everywhere
- Limited to compatibility testing, not a general resource for web components
- May not cover all possible use cases or edge cases in real-world applications
- Less frequently updated compared to awesome-web-components
Code Comparison
custom-elements-everywhere example (test suite):
describe('attributes and properties', () => {
it('will pass data as properties', async () => {
await fixture(
html`<ce-with-properties
.bool="${true}"
.num="${42}"
.str="${'bar'}"
.arr="${['one', 'two']}"
.obj="${{foo: 'bar'}}"
></ce-with-properties>`
);
});
});
awesome-web-components example (resource list):
## Libraries
- [lit-element](https://lit-element.polymer-project.org) - Simple base class for creating fast, lightweight web components with lit-html.
- [haunted](https://github.com/matthewp/haunted) - React's Hooks API implemented for web components.
- [hybrids](https://github.com/hybridsjs/hybrids) - UI library for creating Web Components with simple and functional API.
The code comparison illustrates the different focus of each repository: custom-elements-everywhere provides test suites for compatibility, while awesome-web-components offers a curated list of resources and libraries for web components.
Modular and customizable Material Design UI components for the web
Pros of Material Components Web
- Comprehensive set of pre-built UI components following Material Design guidelines
- Officially maintained by Google, ensuring high-quality and up-to-date components
- Extensive documentation and examples for easy implementation
Cons of Material Components Web
- Limited flexibility for customization outside of Material Design aesthetics
- Larger bundle size due to the comprehensive nature of the library
- Steeper learning curve for developers unfamiliar with Material Design principles
Code Comparison
Material Components Web:
import {MDCRipple} from '@material/ripple';
const buttonRipple = new MDCRipple(document.querySelector('.mdc-button'));
Awesome Web Components (example using LitElement):
import {LitElement, html} from 'lit-element';
class MyButton extends LitElement {
render() {
return html`<button><slot></slot></button>`;
}
}
Material Components Web provides a more opinionated and feature-rich implementation, while Awesome Web Components showcases a variety of lightweight, customizable solutions. The choice between them depends on project requirements, design preferences, and development flexibility needs.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Awesome Web Components
A curated list of awesome Web Components resources.
Note This project was previously named "Web Components the Right Way"
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
- Standards
- Guides
- Articles
- Real World
- Libraries
- Frameworks
- Ecosystem
- Books
- Tutorials
- Insights
- Usage Metrics
- Proposals
- Miscellaneous
- Archive
- Who To Follow
- Maintainers
Introduction
- An Introduction to Web Components
- Intro to Web Components
- The Holy Grail Of Reusable Components: Custom Elements, Shadow DOM, And NPM
- The Motivation For Using Web Components, an Introduction
- The Power of Web Components
- Web Components 101
- Web Components: From the orbital height
- What are browser-native web components?
- 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
- All about HTML Custom Elements
- Custom elements
- Custom Elements v1: Reusable Web Components
- Handling properties in custom element upgrades
- Handy Custom Elements' Patterns
- HTML Living Standard: Custom elements
- MDN - Using Custom Elements
- web-platform-tests
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
- DOM Living Standard: Shadow tree
- MDN - Using Shadow DOM
- Mind the document.activeElement!
- Open vs. Closed Shadow DOM
- Shadow DOM
- Shadow DOM and events
- Shadow DOM in depth
- Shadow DOM slots, composition
- Shadow DOM styling
- Shadow DOM v1: Self-Contained Web Components
- The Rise of Shadow DOM
- Understanding Slot Updates with Web Components
- What is the Shadow DOM?
- Who doesn't love some slots?
- Your Content in Shadow DOM Portals
- web-platform-tests
HTML Templates
<template>
element is used to declare fragments of HTML that can be cloned and inserted in the document by script.
- Crafting Reusable HTML Templates
- HTML Living Standard: The
template
element - HTML templates with vanilla JavaScript
- MDN - <template>: The Content Template element
- MDN - Using templates and slots
- Template element
- Templating in HTML
- The HTML5 template element
- Understanding The Template Element In HTML
- web-platform-tests
CSS Shadow Parts
CSS Shadow Parts allow developers to expose certain elements inside Shadow DOM for styling purposes.
- W3C First Public Working Draft
- CSS Shadow Parts are coming!
- MDN -
::part()
CSS pseudo element - MDN -
part
global attribute - ::part and ::theme, an ::explainer
- web-platform-tests
Guides
Accessibility
- Accessibility for Web Components
- Accessibility with ID Referencing and Shadow DOM
- Dialogs and shadow DOM: can we make it accessible?
- How to Make Accessible Web Components â a Brief Guide
- Managing focus in the shadow DOM
- The future of accessibility for custom elements
- The Guide to Accessible Web Components
- Web Components and the Accessibility Object model (AOM)
- Web Components punch list
- Web components still need to be accessible
Best Practices
- Custom Element Best Practices
- Developing Components: Publishing
- Gold Standard Checklist for Web Components
- Guidelines for creating web platform compatible components
- How to Publish Web Components to NPM
- Open Web Components Recommendations
Codelabs
- Build a Story Web Component with LitElement
- Building Custom Elements with Web Components for the 2020 Elections
- Creating Custom Form Controls with ElementInternals
- From Web Component to Lit Element
- HowTo Components â
<howto-checkbox>
- HowTo Components â
<howto-tabs>
- HowTo Components â
<howto-tooltip>
- Lit: basics
- Lit: intermediate
- Lit for React Developers
- Web Components: basics
Examples
- generic-components - Collection of generic web components with a focus on accessibility, and ease of use.
- howto-components - Collection of web components that implement common web UI patterns.
- Nude UI - Collection of accessible, customizable, ultra-light web components.
- open-wc code examples - Collection of best practices and design patterns for developing web components.
- vanilla-retro-js - Vanilla JS UI component library of HTML deprecated tags.
- web-components-examples - Series of web components examples, related to the MDN web components documentation.
Articles
Architecture
- A deep analysis into isomorphic, autonomous cross-framework usage #MicroFrontends
- Frankenstein Migration: Framework-Agnostic Approach (Part 1)
- Frankenstein Migration: Framework-Agnostic Approach (Part 2)
- Generating Config driven Dynamic Forms using Web Components
- Hiding internal framework methods and properties from web component APIs
- How to deliver Custom Elements
- Making Web Components for Different Contexts
- Supporting both automatic and manual registration of custom elements
- Web Components â the right way
Interoperability
- Advanced Tooling for Web Components
- Custom Elements Everywhere
- Custom Elements That Work Anywhere
- JavaScript frameworks, meet Web Components
- Web Components aren't a framework replacement - they're better than that
- Web Components: Seamlessly interoperable
Limitations
- Beyond the polyfills: how Web Components affect us today?
- Custom elements, shadow DOM and implicit form submission
- Form-associated custom elements
- You might not need shadow DOM
Styling
- Does shadow DOM improve style performance?
- Eschewing Shadow DOM
- How Nordhealth uses Custom Properties in Web Components
- Options for styling web components
- Style scoping versus shadow DOM: which is fastest?
- Styling a Web Component
- Styling in the Shadow DOM With CSS Shadow Parts
- Thinking Through Styling Options for Web Components
- Web Component Pseudo-Classes and Pseudo-Elements are Easier Than You Think
- Web Standards Meet User-Land: Using CSS-in-JS to Style Custom Elements
Real World
Case Studies
- Apple Just Shipped Web Components to Production and You Probably Missed It
- Bringing Order to Web Design Chaos (with Web Components)
- Get moving with Microsoftâs FAST web components
- How Web Components Are Used at GitHub and Salesforce
- How we use Web Components at GitHub
- Implementing a Design Language System with Stencil.js
- ING ⤠Web Components
- ING Open-Sources Lion, Its White-Label Web Component Library â Q&A with Thomas Allmer
- Lessons Learned, making our app with Web Components
- Looking back on five years of web components
- Shipping Web Components in 2020
- The Firefox UI is now built with Web Components
- Using web components to encapsulate CSS and resolve design system conflicts
- Web Components at GitHub - Web Components SF Meetup
- Web Components at Scale at Salesforce: Challenges Encountered, Lessons Learnt
- Web Development At Scale: Composable Applications With Web Components
- web.dev engineering blog #1: How we build the site and use Web Components
Components
<active-table>
- Editable table web component.<api-viewer>
- API documentation and live playground for Web Components.<chess-board>
- Standalone chess board web component.<css-doodle>
- Web component for drawing patterns with CSS.<dark-mode-toggle>
- Custom element that allows to create a dark mode toggle or switch.<deep-chat>
- Web component for chat with AI capabilities.<emoji-picker>
- Lightweight emoji picker, distributed as a web component.<fg-modal>
- Accessible modal dialog web component.<file-viewer>
- Web component built with Svelte to view files.<json-viewer>
- Web component to visualize JSON data in a tree view.<lite-youtube>
- Lite YouTube embed with a focus on visual performance.<midi-player>
- MIDI file player and visualizer web components.<model-viewer>
- Web component for rendering interactive 3D models.<player-x>
- Media player web component.<progressive-image>
- Custom element to progressively enhance image placeholders.<qr-code>
â Web component for rendering customizable, animate-able, SVG-based QR codes.<range-slider>
- Accessible range slider custom element with keyboard support.<rapi-doc>
- Web component for creating documentation from OpenAPI Specification.<shader-doodle>
- Web component for writing and rendering shaders.<theme-switch>
- Animated toggle button to switch between light, dark, and system theme.<trix-editor>
- Rich text editor custom element for everyday writing.<vime-player>
- Customizable, extensible, accessible and framework agnostic media player.<web-vitals>
- Bring web vitals quickly into your page using custom elements.
Component Libraries
- AMP - Web component framework for easily creating user-first websites, stories, ads, emails and more.
- AnywhereUI - Collection of rich web components that includes framework bindings. Created with StencilJS.
- Apollo Elements - Custom elements for using Apollo GraphQL with various web components libraries.
- AXA Pattern Library - AXA CH UI components library built with Web Components.
- Blackstone UI - Web components for creating interfaces by Blackstone Publishing.
- Blaze UI Atoms - Set of web components powered by Blaze CSS.
- Brightspace UI core - Collection of web components for building Brightspace applications.
- Clever components - Collection of Web Components made by Clever Cloud.
- Curvenote - Web components for creating interactive scientific articles.
- DataFormsJS - Standalone Components for SPA routing, displaying data from web services, and more.
- Dile Components - General use Web Components for websites and applications.
- elements-sk - Collection of custom elements for "a la carte" web development.
- github-elements - GitHub's Web Component collection.
- Elix - High-quality, customizable web components for common user interface patterns.
- Furo Webcomponents - Enterprise ready set of web components which work best with Eclipse Furo.
- Fusion Web Components - Ser of web components used by Equinor Fusion.
- Ignite UI Web Components - Complete library of UI components from Infragistics.
- Immersive Custom Elements - Set of web components for embedding immersive (VR & AR) content.
- Joomla UI custom elements - Compilation of Joomla 4 Custom Elements.
- Ketch.UP - Web components library for Sme.UP.
- LDRS - Lightweight, customizable loading animations/spinners.
- Lion Web Components - Set of highly performant, accessible and flexible Web Components.
- LRNWebComponents - ELMS:LN produced web components for any project.
- Lume - Custom elements for defining 2D or 3D scenes rendered with CSS3D or WebGL.
- Medblocks UI - Web Components for rapid development of openEHR and FHIR systems.
- Microsoft Graph Toolkit - Collection of web components for the Microsoft Graph.
- Mutation testing elements - A schema for mutation testing results with the web components to visualize it.
- Nightingale - Data visualisation web components for the life sciences.
- Nuxeo Elements - Components for building web applications with Nuxeo using Web Components.
- One Platform Components - Set of web components for Red Hat One Platform.
- Open Business Application Platform Web Components - Collection of web components designed for business applications.
- Pixano Elements - Re-usable web components dedicated to data annotation tasks.
- Playground Elements - Serverless code experiences with web components.
- Shoelace - A forward-thinking library of web components.
- Smart Web Components - Web components for business applications.
- Stripe Elements - Custom Element Wrapper for Stripe.js v3 Elements.
- TEI Publisher Components - Collection of web components used by TEI Publisher and apps generated by it.
- Titanium Elements - Collection of lightweight web components used by Leavitt Group Enterprises.
- Tradeshift Elements - Reusable Tradeshift UI Components as Web Components.
- TrendChart Elements - Components to generate simple, light and responsive charts.
- Umbraco UI Components - Collection of user interface web components for Umbraco CMS.
- Vaadin components - Evolving set of high-quality web components for building business web applications.
- VSCode Webview Elements - Components for creating VSCode extensions which use the Webview API.
- Warp View - Collection of charting web components for Warp 10.
- Webmarkets web components - Set of Webmarkets' public web components.
- Wired Elements - Set of common UI elements with a hand-drawn, sketchy look.
- Wokwi Elements - Web Components for Arduino and various electronic parts.
- XWeather - Collection of web components implementing portions of the OpenWeatherMap API.
Design Systems
- Astro Space UX Design System - Set of components to build rich space app experiences with established interaction patterns.
- Auro Design System - Alaska Airlines design system to innovate on ideas and collaborate on the future.
- Blueprint UI - Web Component based design system with flexible and lightweight components.
- Bolt Design System - Twig and Web Component-powered UI components, reusable visual styles and tooling.
- Calcite Components - Shared Web Components for Esri's Calcite design framework.
- Carbon Web Components - Carbon Design System variant on top of Web Components.
- Clarity Core Web Components - Suite of web components from the Clarity Design System.
- Crayons - Collection of web components that adheres to the Freshworks Design System.
- FAST Components - Library of Web Components based on the FAST design language.
- Fluent UI Web Components - Library of Web Components that supports Microsoft's Fluent design language.
- Forge Components - Library of Web Components adhering to the Forge Design System.
- GOV.UK Web Components - Set of encapsulated web components consuming the GOV.UK Design System.
- Helix UI - Web Component library for the Helix Design System.
- Liquid - UI component library based on the Liquid Design System.
- Lyne Components - Building blocks of the Lyne Design System are based on Web Components.
- Material Web Components - Material Design implemented as Web Components.
- Momentum UI Web Components - Set of UI components based on Momentum Design.
- Nord - Nordhealthâs design system for products, digital experiences and brand.
- NuML | NUDE Elements - HTML Framework and Design System based on Web Components and runtime CSS generation.
- OutlineJS - Web component based design system starter kit.
- PatternFly Elements - Collection of flexible and lightweight Web Components based on the Unified Design Kit.
- Pharos Design System - JSTOR's design system to create cohesive, supportive, and beautiful experiences.
- Red Hat Design System - Web components for building uniform experiences with the Red Hat brand.
- Siemens iX Web Components - Web Components implementing Siemens iX design system.
- Spectrum Web Components - Adobe Spectrum design language implementation built with Web Components.
- UI5 Web Components - Set of reusable UI elements implementing SAP Fiori Design Guidelines.
- U-M Library Design System - University of Michigan Library Design System.
- Zooplus web components - Set of web components that implement Z+ shop style guide.
Use Cases
- How we chose to build our Design System using StencilJS Web Components
- How searching for a bundle-free React led me to web components
- Reasons Web Components are perfect for a big company
- 5 Reasons Web Components Are Perfect for Design Systems
- Web components: the secret ingredient helping power the web
- Web Components for Enterprise. Part 1: Salesforce, Oracle, SAP
- Web Components for Enterprise. Part 2: Nuxeo, Ionic, Vaadin
- Why I use Web Components - My use cases
- Why we use Web Components by @viljamis
- Why we use Web Components by @maxlynch
Libraries
Class Based
- DNA - Progressive Web Components library.
- element-js - Simple and lightweight base classes for web components with a beautiful API.
- FAST Element - Lightweight library for building performant, memory-efficient, standards-compliant Web Components.
- Forge Core - Building blocks and utilities that are used when building Forge Web Components.
- Joist - Set of small libraries designed to add the bare minimum to web components to make you productive.
- Lit - Simple library for building fast, lightweight web components.
- Lightning Web Components - blazing fast, enterprise-grade Web Components foundation.
- Omi - Next generation web framework in 4kb JavaScript (Web Components + JSX + Proxy + Store + Path Updating).
- Panel - Web Components + Virtual DOM: web standards for powerful UIs.
- slim.js - Fast & Robust Front-End Micro-framework based on modern standards.
- Stencil - Compiler for generating Web Components.
- Tonic - Minimalist, stable, audit friendly component framework.
- WebCell - Web Components engine based on VDOM, JSX, MobX & TypeScript.
Functional
- atomico - Small library for the creation of interfaces based on web components using functions and hooks.
- haunted - React's Hooks API implemented for web components.
- hybrids - UI library for creating Web Components with simple and functional API.
- Solid Element - Library that extends Solid adding Custom Web Components and extensions.
Integrations
- ember-custom-elements - Render Ember and Glimmer components using custom elements.
- preact-custom-element - Generate/register a custom element from a preact component.
- @adobe/react-webcomponent - Automate the wrapping of a React component in a custom element.
- nuxt-custom-elements - Export your project components as custom elements for integration into external pages.
- react-shadow - Utilise Shadow DOM in React with all the benefits of style encapsulation.
- reactify-wc - Use web components with React properties and functions.
- remount - Mount React components to the DOM using custom elements.
- @riotjs/custom-elements - Simple API to create vanilla custom elements with Riot.js.
Benchmarks
- All the Ways to Make a Web Component
- web-components-benchmark - Benchmark Web Components technologies with various examples.
- web-components-todo - The same todo application built in different Web Components libraries for benchmark purpose.
Frameworks
Angular
- Angular Elements Overview
- Building and consuming Angular Elements as Web Components
- How to use Angular ngModel and ngForms with WebComponents
- Using Web Components in Angular
- Web Components With Angular Ivy In 6 Steps
React
- 3 Approaches to Integrate React with Custom Elements
- Building Interoperable Web Components That Even Work With React
- Rendering React Components With Custom Elements
- How to use Web Components in React
- Using Web Components With Next (or Any SSR Framework)
Vue
Svelte
Ecosystem
Meta Frameworks
- AMP - Web component framework to easily create user-first experiences for the web.
- Enhance - Web standards-based HTML framework for building lightweight web applications.
- luna-js - SSR framework that makes working with the WebComponents standard a breeze.
- Rocket - Modern web setup for static sites with a sprinkle of JavaScript.
- Web Components Compiler - Compiler to make server-side rendering of native web components easier.
- WebC - Framework-independent standalone HTML serializer for generating markup for web components.
Starter Kits
- Create Open Web Components - Web component project scaffolding.
- custom-element-boilerplate - Boilerplate for creating a custom element.
- hello-web-components - Simple starter hello world web component written in TypeScript.
- nutmeg - Build, test, and publish vanilla Web Components with a little spice.
Testing Solutions
- capybara-shadowdom - Ruby gem that adds basic support for the Shadow DOM to Capybara.
- Cypress component tests for Lit - How to run component tests for a Lit web component with Cypress.
- cypress-lit - Test your Lit elements and native web components in Cypress with all the modern browsers.
- Developing Components: Testing - Using @web/test-runner for testing web components in a real browser.
- How To Automate Shadow DOM In Selenium WebDriver - Locating Shadow DOM elements using Selenium WebDriver in a Maven project.
- Native Automation support for Shadow DOM - Shadow DOM and open-source testing frameworks.
- Open Web Components: Testing - Opinionated package that combines and configures testing libraries.
- query-selector-shadow-dom - querySelector that can pierce Shadow DOM roots, useful for automated testing.
- shadow-automation-selenium - Shadow DOM automation using Selenium.
- Testing Shadow DOM elements in Selenium - In Selenium 4, there is now a way to access Shadow DOM nodes.
- Test web components with Playwright - So youâve created a native web component or two. How do you test them in popular browsers?
- W3C Webdriver conquering automation of Shadow DOM - Shadow DOM tree and its interaction with the W3C Webdriver.
Tools
- Backlight â With collaboration between developers and designers at heart, Backlight is a very complete coding platform where teams build, document, publish, scale and maintain Design Systems.
- Custom Elements Locator - Chrome extension to find custom elements on a page.
- @storybook/web-components - UI development environment for plain web-component snippets.
- webcomponents.dev - Component IDE for web platform developers.
- web-component-analyzer - CLI that analyzes web components and emits documentation / diagnostics.
- Web Components Codemods - Codemods for Web Components.
Books
- Web Components in Action - Book by Ben Farrell, available at Manning early release program.
- Web Component Essentials - Book by Cory Rylan, early preview edition available at Leanpub.
Tutorials
- Building Web Components with Vanilla JavaScript
- Creating a Custom Element from Scratch
- Creating a Reusable Avatar Web Component
- Creating Web Components with Stencil
- Encapsulating Style and Structure with Shadow DOM
- Getting started with LitElement and TypeScript
- Web Components: from zero to hero
- Deep Dive: Web Components & Dependency Injection â The Experiment
- Handling data with Web Components
- How to use D3js with WebComponents
- Navigation Lifecycle using Vaadin Router, LitElement and TypeScript
- Recreating The Arduino Pushbutton Using SVG And
<lit-element>
- Routing Management with LitElement and TypeScript
- Snake-Eating Game Making with Web Components of Omi and MVP Architecture
- Stencil â Web Components On Steroids
- Using Modern Web Components
- Using Web Components in WordPress is Easier Than You Think
- Web Components 101: Framework Comparison
- Web Components 101: Lit Framework
- Web Components Tools: A Comparison
- Where to begin building Web Components? - The Basics
- Where to begin building Web Components? - Class-based Libraries
Insights
Podcasts
- Code[ish], episode 38: Building with Web Components
- Frontend Happy Hour, episode 62: Web Components - shots of shadow DOM
- Labs Talk - Web Components with Peter Muessig
- Real Talk JavaScript, episode 7: Custom Web Components with Rob Wormald
- Real Talk JavaScript, episode 101: Back to Basics with Native HTML and LitElement
Presentations
- Are Web Components the Betamax of web development? by @lostinbrittany
- Designing Standard Systems by @stefsull and @bferrua
- Frontend Architecture for Scalable Design Systems by @salem_cobalt
- lit-apollo: Data-Driven Components that Use the Platform by @PowersBenny
- Mastering Shadow DOM by @Martine_Dowden
- Modernizing Large Frontends with Web Components by @samjulien
- Shadow DOM: off the beaten track by @serhiikulykov
- Using Web Components to Build a Framework-agnostic UI Library by @brianbouril and @danciupuliga
- Web Components and the AOM by @LeonieWatson
- Web Components and Styles Scoping by @bashmish
- Web Components can do that?! by @vogloblinsky
- Web Components: Introduction and State of the Art by @webcomp_dev
Talks
- Better Apps: Delivering Universal UI Patterns as Web Components by @janmiksovsky
- Custom Web Shadow Elements, or Whatever⦠by @aerotwist
- Styling and Theming Web Components by @justinfagnani
- Web Components at Enterprise Scale by @diervo
Usage Metrics
- Chrome Platform Status:
CustomElementRegistryDefine
- Chrome Platform Status:
ElementAttachShadow
- Chrome Platform Status:
HTMLTemplateElement
Proposals
Form-associated Custom Elements
- Form Participation API Explained - Document by Google Chrome team.
- Form-associated custom elements - Feature in Chrome platform status.
- web-platform-tests
Constructable Stylesheet Objects
- Specification Draft
- web-platform-tests
- Explainer
- Constructable Stylesheets - Feature in Chrome platform status.
Custom State Pseudo Class
Miscellaneous
- bruck - Prototyping system built with web components and the Houdini Paint API.
- Vaadin Directory - Publish, discuss and rate web components
- webcomponents.org - Discuss & share web components.
Archive
Polyfills
Modern browsers supports web components standards without any of the polyfills listed below. The only notable exception is that customized built-in elements are rejected by WebKit (Safari).
Custom Elements polyfills
- @webcomponents/custom-elements - Custom Elements polyfill by Polymer team.
- document-register-element - Custom Elements polyfill by Andrea Giammarchi.
Customized Built-in Elements polyfills
- @corpuscule/custom-builtin-elements - Customized built-in elements polyfill by CorpusculeJS.
- @ungap/custom-elements-builtin - Customized built-in elements polyfill by ungap project.
Shadow DOM shims
- @webcomponents/shadydom - ShadowDOM v1 shim.
- @webcomponents/shadycss - ShadowDOM style encapsulation shim.
- @lwc/synthetic-shadow - Shadow DOM polyfill by LWC.
HTML Templates polyfills
- @webcomponents/template - Minimal polyfill for
<template>
. - @ungap/import-node - An
importNode
polyfill for IE11 by ungap project.
History
The articles below represent a long story of the Web Components specifications on the way towards the standardization. Some of them refer to earlier, so-called "v0" Shadow DOM and Custom Elements specs, and abandoned HTML Imports spec. These materials are here for historical reasons only, they are grouped by years and listed in chronological order.
2019
- A history of the HTML slot element
- Web Components for Cross-Framework Component Libraries
- Web Components in 2019: Part 1
- Web Components in 2019: Part 2
- Web Components in 2019: Part 3
- Web Components in 2019: Part 4
- Developments in Web Components Iâm excited about in 2019
2018
- Styling Accessibility: A Web Components Approach
- Web Components 101: An Introduction to Web Components
- Get started with Vue web components
- 6 Reasons You Should Use Native Web Components
- Web Components in 2018
- Web Components Introduction: Creating Custom HTML Elements in 2018
- Create & Publish Web Components With Vue CLI 3
- Extending Native DOM Elements with Web Components
2017
- Styling is critical to web component reuse, but may prove difficult in practice
- Web Components: The Long Game
- Web Components: Just in the Nick of Time (Polymer Summit 2017)
- Using Web Components in Ionic (Polymer Summit 2017)
- Web Components for VR (Polymer Summit 2017)
- Building UI at Enterprise Scale with Web Components (Polymer Summit 2017)
- Custom Elements Everywhere (Polymer Summit 2017)
- Evolving the Next Generation of Polymer Elements (Polymer Summit 2017)
- Polymer @ YouTube (Polymer Summit 2017)
- Web Components for CMS (Polymer Summit 2017)
- An intro to web components with otters
- The broken promise of Web Components
- Regarding the broken promise of Web Components
- Web Components v1 - the next generation
2016
- Introducing Custom Elements
- The Case for Custom Elements: Part 1
- The Case for Custom Elements: Part 2
- Demythstifying Web Components
- Extensible web components
- Web Component Challenges
- Web Components and progressive enhancement
- Update on standardizing Shadow DOM and Custom Elements
- What's New in Shadow DOM v1 (by examples)
- Why web components are so important
- Understanding Web Components
2015
- Introducing Slot-Based Shadow DOM API
- There is an Element for that
- What happened to Web Components?
- Web Components and their role in the future of web development
- Microsoft Edge and Web Components
- Bringing componentization to the web: An overview of Web Components
- Why Web Components will make the web a better place for our users
- Practical Questions around Web Components
- The state of Web Components
2014
- A No-Nonsense Guide to Web Components, Part 1: The Specs
- A No-Nonsense Guide to Web Components, Part 2: Practical Use
- Web Components + Backbone: A Game-Changing Combination
- Mozilla and Web Components: Update
- Server-less applications powered by Web Components
- Web Components and the Future of CSS
- Easy composition and reuse with Web Components
- Letâs build some apps with Polymer!
- Polymer: State of the Union
- Web Components 101: An Introduction to Fundamental Changes in HTML
- Web Components 201: Designing Web Components for Reuse
- Why Web Components â Does the Web Really Need Another Component?
- âDonât stop thinking about tomorrowâ - AngularJS and Web Components
- Multi-device Apps with Web Components
- As I Walk Through The Valley Of The Shadow Of DOM
- Why Web Components Are Ready For Production
- The State of the Componentised Web
- An Addendum to Why Web Components Aren't Ready for Production Yet
- Why Web Components Aren't Ready for Production... Yet
- Component Interop With React And Custom Elements
- Accessibility of Web Components
- Componentize The Web: Back To The Browser!
- Google I/O 2014 - Polymer and the Web Components revolution
- Google I/O 2014 - Polymer and Web Components change everything you know about Web development
- Google I/O 2014 - Unlock the next era of UI development with Polymer
- Making Polymer Elements Accessible
- Building an Accessible Disclosure Button â using Web Components
- The Road to Web Components
- The Web Components Revolution is Here
- Web Components: A chance to create the future
- Web Component Mashups at 3 a.m.
- Web Components Tools & Libraries
- Web Components Can Do That?!
- Web Components and you â dangers to avoid
- HTML as Custom Elements
- The Web's Declarative, Composable Future
- Using Polymer to Create Web Components
- The Shadow DOM Diaries
- A Detailed Introduction To Custom Elements
2013
- A future called Web Components
- Building Mobile Web Applications With Brick
- Polymer: declarative, encapsulated, and reusable components for the web
- Web Components: Why you're already an expert
- Yo Polymer: a new way of building web apps
- Performance and Custom Elements
- Web Components Revolution
- A Guide to Web Components
- Return of Inspector Web: Web Components a Year Later
- Working with Custom Elements
- Creating Reusable Markup with The HTML Template Element
- Working with Shadow DOM
- Breaking Development: Web Components
- Web Components: A Tectonic Shift for Web Development - Google I/O 2013
- Web Components: Getting Started
- Shadow DOM 101
- Shadow DOM 201
- Shadow DOM 301
- Visualizing shadow DOM concepts
- Web components and the future of web development
- HTML's New Template Tag
2012
- The Basics of the Shadow DOM
- Notes on Web Components + ARIA
- Google I/O 2012 - The Web Platform's Cutting Edge
- Introduction to Web Components
2011
Who To Follow
Polymer
|
Stencil
|
open-wc.org
|
webcomponents.dev
|
Justin Fagnani
|
Viljami Salminen
|
Jan Miksovsky
|
Serhii Kulykov
|
Maintainers
- Created by @mateusortiz in 2014.
- Maintained by @web-padawan since 2018.
Top Related Projects
A curated list of awesome Web Components resources.
Custom Element + Framework Interoperability Tests.
Modular and customizable Material Design UI components for the web
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot