Vue isn't strictly monolithic and is intended for the view layer, much like React. It can be sandwiched with Vuex, a Redux-like state library, for unidirectional data flow. By default, it uses a MobX-like approach to data binding (AFAIK MobX is influenced by Vue's default approach to binding, which is getter/setter based), and a pub/sub model for cross-component communication (not sure whether this has been retained in v2.x). It's seldom that we see React without either Redux or MobX, so making these tools/methodologies first-party makes sense. Vue's drawcard, for me at least, is its tiny size. Last year, I built out a rather large app using Vue < 1.0, and found that the whole thing came in under the gzipped size of React alone (with no additional tools like Redux or React Router).