Vue 3.4 Cuts Build Times 44%, Stabilizes defineModel
Vue 3.4 cuts SFC compile times 44% and doubles parser speed while stabilizing defineModel for v-model. The refactored reactivity engine skips redundant computed triggers, reducing re-renders. Upgrade requires Volar 1.8.27+ and matching toolchain versions.
WHY IT MATTERS: Vue 3.4 is a maintenance release that directly speeds up daily development work. The rewritten template parser is consistently twice as fast across all template sizes, and SFC compilation benchmarks show roughly 44% improvement when generating source maps. That means faster dev-server startup and rebuilds for large codebases. More importantly, the refactored reactivity system eliminates wasted renders by ensuring computed properties and watchEffect callbacks only fire when values actually change. For teams building complex dashboards or data-heavy UIs, this translates to smoother runtime performance without rewriting application code.
WHAT CHANGED: The parser rewrite replaces the old recursive descent approach, which relied on heavy regex and look-ahead, with a state-machine tokenizer based on htmlparser2 that iterates the template string only once. It is 100% backwards compatible. The reactivity refactor also batches sync effects for array methods like shift, unshift, and splice so they trigger once instead of multiple times. On the API side, defineModel is now stable after graduating from its experimental status in 3.3, giving component authors a cleaner standard way to implement v-model. A new same-name shorthand for v-bind lets developers write :src instead of :src="src", reducing repetitive attribute boilerplate. Hydration mismatch errors are also clearer in server-side rendering scenarios. Finally, deprecated features and the global JSX namespace have been removed, so legacy code will break if prior warnings were ignored.
WHAT TO WATCH: Before upgrading, check your toolchain versions. You need Volar or vue-tsc 1.8.27 or higher, and matching ecosystem packages such as @vitejs/plugin-vue 5.0.0, Nuxt 3.9.0, or vue-loader 17.4.0. If you use TSX, review the global JSX namespace removal. Scan your console for deprecation warnings immediately, because anything previously deprecated has been deleted in 3.4. After upgrading, monitor build times and re-render counts in production to validate the real-world gains.
Read the original → blog.vuejs.org
Get five bites like this every day.
Tezvyn delivers a daily feed of 60-second tech bites with quizzes to lock in what you learn.