Confused by Blaze templates instances

I’m building a Meteor app and I’m sort of using the ToDo app as a reference. I’m confused/stuck on two issues:

Why does Meteor treat <body> and <template> differently? I can’t find any information in the documentation (Meteor or Blaze) about this. Currently, my app’s entry point is a <body> tag but the ToDo app doesn’t even have one; it uses <template name="App_body">. And what’s more, when I switch my <body> to <template name="App_body">, Meteor renders nothing. There’s not even any errors to clue me into what is happening.

I need to change the state of the DOM for a tab’d layout. Using the ToDo app as a reference, I see this handy piece of code:
instance.state.set('menuOpen', !instance.state.get('menuOpen'));
However, that doesn’t work for me at all; there’s no function on instance.state called .set. And again, I can’t find anything in the documentation regarding this.

I’m basically stuck until I figure this out.

Update - I’ve been digging deeper into the documentation and I see that the Blaze docs haven’t been updated since 2017, and they show a totally different (and equally broken) way of manipulating the DOM.

I’m going to switch to React. It looks like Blaze isn’t updated anymore and the documentation is in a strange state with broken examples all over the place.