What you see mixed in with JSX is view logic, not business logic. I see the same thing in the Aurelia examples<p><pre><code>    &lt;h1&gt;${router.title}&lt;&#x2F;h1&gt;
    &lt;ul class=&quot;nav navbar-nav&quot;&gt;
      &lt;li repeat.for=&quot;row of router.navigation&quot; class=&quot;${row.isActive ? &#x27;active&#x27; : &#x27;&#x27;}&quot;&gt;
        &lt;a href.bind=&quot;row.href&quot;&gt;${row.title}&lt;&#x2F;a&gt;
      &lt;&#x2F;li&gt;
    &lt;&#x2F;ul&gt;
</code></pre>
Which is almost identical in JSX:<p><pre><code>    &lt;h1&gt;{router.title}&lt;&#x2F;h1&gt;
    &lt;ul className=&quot;nav navbar-nav&quot;&gt;
      {router.navigation.map(row =&gt; (
        &lt;li className={row.isActive ? &#x27;active&#x27; : &#x27;&#x27;}&gt;
          &lt;a href={row.href}&gt;{row.title}&lt;&#x2F;a&gt;
        &lt;&#x2F;li&gt;
      ))}
    &lt;&#x2F;ul&gt;
</code></pre>
For loops and map functions aren&#x27;t necessarily business logic, but they are view logic (and you&#x27;ll see them in any sort of tempting or view system). React actually makes it very bad to include any substantial business logic into your templates  as the render function is called many many times potentially whenever your data changes, so you want to include very minimal stuff in there.<p>&gt; You&#x27;ll also need to worry about how you run BDD tests for specifications and scenarios. How can this be achieved in React as you write test suites for user stories and non-UI acceptance tests? How will this impact your continuous delivery&#x2F;integration systems as well? You&#x27;ll have to rewrite all your test suites into Jest, right?<p>Exactly the same! At the end of the day, React is just Javascript. You still have your models in their own classes or functions, with your own API helper methods. How you write that doesn&#x27;t change - no need for Jest. We&#x27;re testing our entire app - including templates&#x2F;views - using Mocha (and we&#x27;re about to run tests in Karma in real browsers pretty soon).