Check out my talk from the Progressive Web App Summit early this year.
“Upgrades” are part of the custom element spec. Essentially, you can SSR a component (<x-foo>), style it, etc. This is great for fast first render. Then, sometime later, the JS comes down and defines the tag (window.customElement.define(‘x-foo’)), gives it its API and functionality. Also check out codelabs.developers.google.com, which does this.