My favorite feature of ES6+ is Custom HTML Elements. Custom Elements allow us to extend HTML for React-Like components without the need for preprocessors or compilers. There are fewer things "out of the box" for these components, but that means they can be lighter and more readable than react.
You can use these components as you would any other html elements. Each component needs a dash in its name. So
is not valid, but
A basic element
Here is a basic element that gets an attribute called title on load and sets its internal HTML to it.
I use this pattern a lot for components that might take a while to load. This component introduces the connectedCallback function. The connectedCallback function runs when the component is attached to the DOM. It runs after the constructor. In this example I use connectedCallback to run an asynchronous function called init.