# Comparison with Vue/React OWL, React and Vue have the same main feature: they allow developers to build declarative user interfaces. To do that, all these frameworks uses a virtual dom. However, there are still obviously many differences. In this page, we try to highlight some of these differences. Obviously, some effort was done to be fair. However, if you disagree with some of the points discussed, feel free to open an issue/submit a PR to correct this text. ## Content - [Size](#size) - [Class Based](#class-based) - [Tooling/Build Step](#toolingbuild-step) - [Templating](#templating) - [Asynchronous rendering](#asynchronous-rendering) - [Reactiveness](#reactiveness) - [State Management](#state-management) ## Size OWL is intended to be small and to work at a slightly lower level of abstraction than React and Vue. Also, jQuery is not the same kind of framework, but it is interesting to compare. | Framework | Size (minified, gzipped) | | ------------------------ | ------------------------ | | OWL | 16kb | | Vue + VueX | 30kb | | React + ReactDOM + Redux | 40kb | | jQuery | 30kb | ## Class Based Both React and Vue moved away from defining components with classes. They prefer a more functional approach, in particular, with the new `hooks` mechanisms. This has some advantages and disadvantages. But the end result is that React and Vue both offers multiple different ways of defining new components. In contrast, Owl has only one mechanism: class-based components. We believe that Owl components are fast enough for all our usecases, and making it as simple as possible for developers is more valuable (for us). ## Tooling/Build step OWL is designed to be easy to use in a standalone way. For various reasons, Odoo does not want to rely on standard web tools (such as webpack), and OWL can be used by simply adding a script tag to a page. ```html