Vue.js vs. React: what happened in 2017
The simple answer is in reading the chart. Look at &quot;I&#x27;ve USED it before, and WOULD use it again&quot;.<p>React isn&#x27;t just popular. It also consistently provides good developer experience. You have to compete not only against React&#x27;s popularity, but also against <i>that</i>.<p>React:<p>- Used it, would use again: 14k<p>- Used it, would <i>not</i> use it again: 1k (7%)<p>Vue:<p>- Used it, would use again: 4.6k<p>- Used it, would <i>not</i> use it again: 454 (9.8%)<p>That ~3% difference in people who tried it, and didn&#x27;t like it could be the difference between make it and break it when coming up against React. &quot;I&#x27;ve heard about it, and I&#x27;m <i>not</i> interested&quot; is another important metric.<p>---<p>Personal take:<p>Things I personally don&#x27;t like in Vue:<p>- String-based programming so prevalent these days.<p>JSX is a thin layer on top of regular Javascript&#x2F;Typescript. Where as Vue is often this:<p><pre><code>    &lt;li v-for=&quot;todo in todos&quot;&gt;
</code></pre>
Really?<p>- It breaks Javascript and how it works:<p><pre><code>    var app5 = new Vue({
      el: &#x27;#app-5&#x27;,
      data: {
        message: &#x27;Hello Vue.js!&#x27;
      },
      methods: {
        reverseMessage: function () {
          this.message = this.message.split(&#x27;&#x27;).reverse().join(&#x27;&#x27;)
        }
      }
    })
</code></pre>
There&#x27;s no chance in hell that `this.message` exists on app5. And yet, there it is. And then data becomes $data and a lot of other weird stuff such as computed properties being also hoisted up to the top-level object etc. etc. etc.