Hi,
I'm checking again on using Vue in production for a client. The upstream Vue version deliberately fails mounting on the body element (el === document.body || el === document.documentElement && fail or something like that).
Yes, Vue 2.0 does replace the element it is mounted on, but there is nothing DOM uncompliant in replacing the body, even while this will often fail due to browsers trying to close runaway tags, or 3rd party code doing the same.
I insist on re-enabling mounting on the body element as a very useful thing. When trying to do SEO friendly SSR on our previous projects with vue 1.x, we were very pleased how well it worked with routing. On client-side, routed body element worked like magic to automate things like event listener attachment, setting ARIA attributes according to page content, lang or text direction properties, or changing contextmenu attribute when it was still a thing.
I tried to remove the check and use vue 2 on our past projects, and so far, nothing breaks. The few 3rd party scripts that rewrite the body as a string have to be removed and rewritten for use with an SPA anyways.