v2.5.0 Level E
Features & Improvements
Error Handling and Reporting
- improve error handling with new
errorCaptured
hook b3cd9bc [Details] - improve template expression error message e38d006, closes #6771
- improve option type checks b7105ae
TypeScript Declaration Improvements
-
further improve Vue type declarations for canonical usage (#6391) db138e2
This change requires upgrade actions for TypeScript users using 2.4 types. Thanks to the work by @DanielRosenwasser, @HerringtonDarkholme and @ktsn. For more details, please read this blog post.
Functional Components
-
compiled templates for functional component support ea0d227
-
scoped CSS support for functional components 050bb33
These features require
vue-loader>=13.3.0
. Thanks to the work by @blake-newman. [Details]
Server Side Rendering
renderToString
now returns a Promise if no callback is passed f881dd1, closes #6160- add
shouldPrefetch
option (same signature asshouldPreload
) 7bc899c, closes #5964 - auto-remove initial state embed script if in production (#6763) 2d32b5d, closes #6761
- now ships an environment-agnostic build of the server renderer in
vue-server-renderer/basic.js
c5d0fa0 [Details]
v-model
- support dynamic
type
binding on<input>
f3fe012 - now creates non-existent properties as reactive (non-recursive) e1da0d5, closes #5932 (See reasoning behind this change)
v-on
- automatic key modifier inference 4987eeb [Details]
- add
.exact
event modifier (#5977) 9734e87, closes #5976 [Details]
Scoped Slots
Provide/Inject
<keep-alive>
- add
max
prop for<keep-alive>
for limiting max number of instances cached 2cba6d4
Other Improvements
config.ignoredElements
can now contain RegExp in addition to strings (#6769) 795b908data
function is now called with the vm instance as the first argument (#6760) 3a5432avue-template-compiler
now ships an environment-agnostic build which can be used directly in browsers invue-template-compiler/browser.js
a5e5b31
Bug Fixes
- compiler: warn when inline-template component has no children (fix #6703) (#6715) baabd6d, closes #6703 #6715
- core: avoid observing VNodes 4459b87, closes #6610
- ref: preserve ref on components after removing root element (#6718) 6ad44e1, closes #6632 #6641
- handle errors in errorHandler 2b5c83a, closes #6714
- ssr: fix hydration mismatch with adjacent text node from slots b080a14, closes vuejs/vue-loader#974
- add slot v-bind warning (#6736) 514b90b, closes #6677
- allow an object's Symbols to be observed (#6704) 4fd2ce8
- fix scoped CSS for nested nodes in functional components 4216588
- ssr: handle inline template compilation error dff85b2, closes #6766
- perperly handle v-if on scoped slot 68bdbf5, closes #6725
- prevent memory leak due to circular reference in vnodes 405d8e9, closes #6759
- properly render value on in IE/Edge c64f9ae, closes #6666
- resolve async component default for native dynamic import 2876ed8, closes #6751
- use correct namespace inside as root node cf1ff5b, closes #6642
- use MessageChannel for nextTick 6e41679, closes #6566 #6690
- work around old Chrome bug 0f2cb09, closes #6601
Internals
We have changed the implementation of Vue.nextTick
to fix a few bugs (related to #6566, #6690). The change involves using a macro task instead of a micro task to defer DOM updates when inside a DOM event handler attached via v-on
. This means any Vue updates triggered by state changes inside v-on
handlers will be now deferred using a macro task. This may lead to changes in behavior when dealing with native DOM events.
For more details regarding micro/macro tasks, see this blog post.
For the new implementation, see source code for nextTick.