2.2.6

Latest release in branch 2.2
Released 9 years ago (March 27, 2017)

Software Vue.js
Branch 2.2
Status
End of life
End of support (OSS) April 27, 2017
First official release version 2.2.0
First official release date 9 years ago (February 26, 2017)
Release notes https://github.com/vuejs/core/releases/tag/v2.2.6
Source code https://github.com/vuejs/core/tree/v2.2.6
Documentation https://v2.vuejs.org
Vue.js 2.2 Releases View full list

What Is New in Vue.js 2.2

Vue 2.2 introduces several key enhancements focused on server-side rendering, component functionality, and developer experience. This release solidifies the framework for production use with more robust tooling and finer control over component behavior.

Category Key Changes
New Features SSR Data Pre-fetching, Custom Directive Hook, v-model improvements
Improvements TypeScript Typings, Error Handling, Functional Component Context
Bug Fixes Various fixes for components, transitions, and v-model

How did server-side rendering improve in Vue 2.2?

The most significant SSR upgrade is the introduction of the serverPrefetch hook. This allows async component data fetching to happen on the server before the initial render, which is a game-changer for universal applications.

You define this hook inside your component, and it works similarly to the client-side created or mounted hooks but during the SSR process. This ensures the rendered page sent to the client is already populated with the necessary data, improving perceived performance and SEO.

What new capabilities do custom directives have?

Directives gained a new hook: inserted. This hook is called when the bound element has been inserted into its parent node, which provides a more reliable timing for DOM-dependent logic than the existing bind hook.

In practice, this is crucial for operations that require the element to actually be in the document flow, like measuring its dimensions or focusing an input field. The bind hook might fire before the element is in the DOM, making such operations fail silently.

How has v-model become more flexible?

You can now use v-model with custom components in tandem with native events and listeners. The update adds the native modifier for v-on and a new $listeners property on component instances.

This matters because it simplifies creating transparent wrapper components. You can now easily listen to native events on the root element of a child component without the parent needing to manually wire up listeners, reducing boilerplate code significantly.

Were there any TypeScript improvements?

Yes, the type definitions were significantly overhauled to be more accurate and complete. This provides a much better development experience for TypeScript users with improved autocompletion and type checking.

The updated typings more correctly reflect the actual Vue API, catching potential type errors at compile time rather than runtime. This is a big step forward for Vue's adoption in large-scale applications where type safety is a priority.

What about error handling?

Error handling for watchers got a major boost. You can now specify an errorHandler in your watcher options, giving you a clean way to catch and handle asynchronous errors that occur inside them.

Before this, errors in async watchers could be tricky to manage and would often go unhandled, potentially causing unstable app behavior. This change makes your application more robust and easier to debug.

FAQ

How do I use the new serverPrefetch hook?
Define it as a method in your component. It should return a Promise. The SSR renderer will wait for this promise to resolve before rendering the component, ensuring your async data is present.

Can I use the new v-model features with Vuex?
Absolutely. The improved v-model and $listeners make it easier to create controlled form components that commit mutations directly to your Vuex store, streamlining the data flow.

Is the new inserted directive hook replacing bind?
No, it's complementary. Use bind for one-time setup that doesn't need the DOM. Use inserted for logic that requires the element to be in the document, like focusing an input.

Do I need to update my code for the new TypeScript definitions?
You might encounter new type errors if your existing code was loosely typed. This is actually beneficial as it catches potential bugs. The errors will guide you toward writing more type-safe code.

What happens if I don't handle an error in an async watcher?
Without a custom errorHandler, the error will be logged to the console but won't crash your app. It's best practice to implement the handler for a better user experience.

Releases In Branch 2.2

Version Release date
2.2.6 9 years ago
(March 27, 2017)
2.2.5 9 years ago
(March 24, 2017)
2.2.3 9 years ago
(March 13, 2017)
2.2.4 9 years ago
(March 13, 2017)
2.2.2 9 years ago
(March 09, 2017)
2.2.0 9 years ago
(February 26, 2017)
2.2.1 9 years ago
(February 26, 2017)
2.2.0-beta.2 9 years ago
(February 25, 2017)
2.2.0-beta.1 9 years ago
(February 24, 2017)