Vue 2 render functions are the escape hatch from templates

Vue templates cover almost everything and become awkward at exactly one point: rendering a different element depending on a prop, which turns into a chain of v-if blocks that duplicate their contents.

// six near-identical v-if branches, or:
Vue.component('heading', {
  props: ['level'],
  render(h) {
    return h('h' + this.level, this.$slots.default);
  }
});

The render function is what the template compiles to anyway, so this is not an escape from the framework, only from the syntax. It is worth reaching for when the markup is genuinely dynamic and worth avoiding otherwise — a render function is harder to scan than a template, and it loses the compile-time optimisations the template compiler applies. Vue 2 shipped in September and this is the part of it most people never touch.