Web Components are custom HTML elements created using a name and a dash, for example, . The custom element name must contain a dash, so it doesn't clash with officially supported elements in the HTML specification. Each custom element must have an ES2015 JavaScript class defined to control it.