I'm not sure how it forces less logic in the render. Looking at the Svelte docs you can do this:
```
{#if invokeFunction()}
<p>This function returned a truthy value!</p>
{/if}
```
And with React do this:
```
{ invokeFunction() && <p>This function returned a truthy value</p> }
```
and the result would be the same, a conditionally rendered string. I totally agree in the normalizing/formalizing how templates are build and the more verbose syntax in the Svelete example does make it super obvious. The in-line React example is obvious to me...but maybe that's because I've been writing js for so long.
Where I feel the cognitive overhead pain in looping. Svelete's docs say:
```
{#each collection as { vars }, i}
<p key={i}> {vars} </p>
{#/each}
```
For some reason, when I see this it rubs me the wrong way. I understand it...but my instinct is to just map over the collection like I would in a plain-old Node.js project.
```
{ collection.map((vars, i) => <p key={i}> {vars} </p> }
```
I guess that saving a handful of keystrokes in exchange for super clearly expressing the intent may be a good tradeoff, even if my inclination is towards more terse code.