A framework that already made the decisions

Technology

Vue ships the answers a React project spends its first month arguing about. The router, the state library, the build tool, and a house style for writing components all come from the same team, and Nuxt sits on top the way Next.js sits on React. You inherit an opinion instead of assembling one.

Our default is React, and that is a decision about hiring and ecosystem rather than about rendering. Vue's reactivity system is the better idea of the two. On a team that already knows Vue, the technical case for moving them off it is thin.

Monogram logo

Tradeoffs

What Vue decides for you, and what those decisions cost

  1. Reactivity is tracked, not recomputed

    Vue records which component read which property, so setting a value invalidates only what depends on it. React's default is to rerender the subtree and expect you to notice when that gets expensive. You trade explicit control over when work happens for far fewer performance surprises.

  2. The router and the store are official

    Vue Router and Pinia come from the same team as the framework, and Vite came out of that project too. A React app spends its first week picking those layers and its second year regretting one of them. Vue hands you an answer and a smaller argument surface.

  3. Vue 2 stopped getting patches in 2023

    Vue 2 reached end of life on December 31, 2023, and moving to Vue 3 is a rewrite of the parts that matter, not a version bump. Anything still on 2 runs unpatched or pays a vendor for support. Vue has not yet appeared in a client build of ours.