Bug Fixes
- lifecycle: ensure component effect scopes are disconnected (56ce7f8), closes #13134
Bug Fixes
Bug Fixes
- compiler-sfc: check template
ref
usage, (#12985) (83d9535), closes #12984
- compiler-sfc: fix rewriteDefault edge cases (25f97a5), closes #13060 #12892 #12906
- keep-alive: fix keep-alive memory leak (2632249), closes #12827
- keep-alive: fix memory leak without breaking transition tests (e0747f4)
- props: should not unwrap props that are raw refs (08382f0), closes #12930
- shallowReactive: should track value if already reactive when set in shallowReactive (0ad8e8d)
- style: always set new styles (f5ef882), closes #12901 #12946
- types: fix shallowRef's return type (#12979) (a174c29), closes #12978
- types: fix type augmentation and compiler-sfc types w/moduleResolution: bundler (#13107) (de0b97b), closes #13106
- types: provide types for built-in components (3650c12), closes #13002
- types: type VNodeChildren should allow type number (#13067) (24fcf69), closes #12973
- utils: unwrap refs when stringifying values in template (ae3e4b1), closes #12884 #12888
- watch: new property addition should trigger deep watcher with getter (6d857f5), closes #12967 #12972
2.7.15 (2023-10-23)
Bug Fixes
- compiler-sfc: add semicolon after
defineProps
statement (#12879) (51fef2c)
- compiler-sfc: fix macro usage in multi-variable declaration (#12873) (d27c128)
- compiler-sfc: Optimize the value of emitIdentifier (#12851) (bb59751)
- compiler-sfc: Resolve object expression parsing errors in
v-on
(#12862) (b8c8b3f)
- lifecycle: scope might changed when call hook (#13070) (74ca5a1)
- patch: clone insert hooks to avoid being mutated during iteration (#12905) (c223634)
- types/sfc: improve the type inference using
withDefaults
(#12872) (099401e)
- types: correct serverPrefetch this type (#13068) (67c1d26), closes #12488
2.7.14 (2022-11-09)
Bug Fixes
- compiler-sfc: fix template usage check edge case for v-slot destructured default value (#12842) (5e3d4e9), closes #12841
- provide/inject: do not mutate original provide options during merge (d1899ca), closes #12854
- reactivity: avoid using WeakMap for IE compatibility (29b5f58), closes #12837
- types: fix spreading VNodeData in tsx (#12789) (f7db7f3), closes #12778
- types: stricter type condition for
EventHandlers
(#12840) (0b3cf7d), closes #12832
2.7.13 (2022-10-14)
Bug Fixes
- effectScope: calling off() of a detached scope should not break currentScope (800207c), closes #12825
- types: style attribute svg (#12800) (8e26261)
- watch: avoid traversing objects that are marked non-reactive (#12806) (5960f05)
2.7.12 (2022-10-12)
Reverts
2.7.11 (2022-10-11)
Bug Fixes
- build: enforce LF line ending in built files (738f4b3), closes #12819
- compiler-sfc: export parseComponent for compat with fork-ts-checker-webpack-plugin (0d6d972), closes #12719
- reactivity: check skip first before checking ref when creating observer (#12813) (5d26f81), closes #12812
- reactivity: use WeakMap for proxy/raw checks, compat with non-extensible objects (4a0d88e), closes #12799 #12798
- setup: setup hook should be called before beforeCreate (e1342df), closes #12802
- sfc: prune returned bindings for non-TS as well (fb13930), closes #12765
- sfc: remove sfc scoped deep syntax deprecation warnings (2f335b2)
- types: fix error with options watch (#12779) (bc5b92a), closes #12780
- types: support Ref and function types in tsx ref attribute (#12759) (87f69aa), closes #12758
- types: vue 3 directive type compatibility (#12792) (27eed82)
Performance Improvements
- improve unsub perf for deps with massive amount of subs (8880b55), closes #12696
2.7.10 (2022-08-23)
Bug Fixes
2.7.9 (2022-08-19)
Bug Fixes
- compiler-sfc: allow full hostnames in asset url base (#12732) (5c742eb), closes #12731
- compiler-sfc: rewriteDefault for class with decorators (#12747) (5221d4d)
- directives shorthand normalize error (#12744) (2263948), closes #12743
- ensure render watcher of manually created instance is correctly tracked in owner scope (bd89ce5), closes #12701
- fix effect scope tracking for manually created instances (7161176), closes #12705
- ssr: fix on-component directives rendering (#12661) (165a14a), closes #10733
- types: allow attaching unknown options to defined component (b4bf4c5), closes #12742
- types: fix missing error for accessing undefined instance properties (8521f9d), closes #12718
- types: fix options suggestions when using defineComponent (4b37b56), closes #12736
- types: Make SetupBindings optional on ExtendedVue and CombinedVueInstance (#12727) (00458cd), closes #12726 #12717
- watch: avoid pre watcher firing on unmount (f0057b1), closes #12703
Features
2.7.8 (2022-07-22)
Bug Fixes
- reactivity: fix shallowReactive nested ref setting edge cases (2af751b), closes #12688
- sfc: align
<script setup>
component resolution edge case with v3 (#12687) (a695c5a), closes #12685
- types: avoid circular type inference between v2 and v3 instance types (fabc1cf), closes #12683
- types: export
defineAsyncComponent
type (#12684) (ba7dd2c)
Features
- setup: support listeners on setup context +
useListeners()
helper (adf3ac8)
2.7.7 (2022-07-16)
Bug Fixes
- codegen: script setup should not attempt to resolve native elements as component (e8d3a7d), closes #12674
- inject: fix edge case of provided with async-mutated getters (ea5d0f3), closes #12667
- setup: ensure setup context slots can be accessed immediately (67760f8), closes #12672
- types: vue.d.ts should use relative import to v3-component-public-instance (#12668) (46ec648), closes #12666
- watch: fix queueing multiple post watchers (25ffdb6), closes #12664
2.7.6 (2022-07-15)
Bug Fixes
- types: $refs can also contain ComponentPublicInstance (#12659) (fffbb9e)
- types: fix $children and $root instance types (52a5979), closes #12655
- types: fix missing expose() type on setup context (e0a9546), closes #12660
2.7.5 (2022-07-13)
Bug Fixes
- add missing export from
vue.runtime.mjs
(#12648) (08fb4a2)
- detect property add/deletion on reactive objects from setup when used in templates (a6e7498)
- do not set currentInstance in beforeCreate (0825d30), closes #12636
- reactivity: fix watch behavior inconsistency + deep ref shallow check (98fb01c), closes #12643
- sfc: fix sfc name inference type check (04b4703), closes #12637
- types: support Vue interface augmentations in defineComponent (005e52d), closes #12642
- watch: fix deep watch for structures containing raw refs (1a2c3c2), closes #12652
2.7.4 (2022-07-08)
Bug Fixes
- build: fix mjs dual package hazard (012e10c), closes #12626
- compiler-sfc: use safer deindent default for compatibility with previous behavior (b70a258)
- pass element creation helper to static render fns for functional components (dc8a68e), closes #12625
- ssr/reactivity: fix array setting error at created in ssr [#12632] (#12633) (ca7daef)
- types: fix missing instance properties on defineComponent this (f8de4ca), closes #12628
- types: fix this.$slots type for defineComponent (d3add06)
- types: fix type inference when using components option (1d5a411)
- types: global component registration type compat w/ defineComponent (26ff4bc), closes #12622
- watch: fix watchers triggered in mounted hook (8904ca7), closes #12624
Features
2.7.3 (2022-07-06)
Bug Fixes
2.7.2 (2022-07-05)
Bug Fixes
- compiler-sfc: preserve old deindent behavior for pug (1294385), closes #12611
Features
2.7.1 (2022-07-04)
Bug Fixes
2.7.0 (2022-07-01)
Backported Features
In addition, the following APIs are also supported:
defineComponent()
with improved type inference (compared to Vue.extend
)
h()
, useSlot()
, useAttrs()
, useCssModules()
set()
, del()
and nextTick()
are also provided as named exports in ESM builds.
The emits
option is also supported, but only for type-checking purposes (does not affect runtime behavior)
2.7 also supports using ESNext syntax in template expressions. When using a build system, the compiled template render function will go through the same loaders / plugins configured for normal JavaScript. This means if you have configured Babel for .js
files, it will also apply to the expressions in your SFC templates.
Notes on API exposure
In ESM builds, these APIs are provided as named exports (and named exports only):
import Vue, { ref } from 'vue'
Vue.ref
In UMD and CJS builds, these APIs are exposed as properties on the global Vue
object.
When bundling with CJS builds externalized, bundlers should be able to handle ESM interop when externalizing CJS builds.
Behavior Differences from Vue 3
The Composition API is backported using Vue 2's getter/setter-based reactivity system to ensure browser compatibility. This means there are some important behavior differences from Vue 3's proxy-based system:
All Vue 2 change detection caveats still apply.
reactive()
, ref()
, and shallowReactive()
will directly convert original objects instead of creating proxies. This means:
reactive(foo) === foo
readonly()
does create a separate object, but it won't track newly added properties and does not work on arrays.
Avoid using arrays as root values in reactive()
because without property access the array's mutation won't be tracked (this will result in a warning).
Reactivity APIs ignore properties with symbol keys.
In addition, the following features are explicitly NOT ported:
- ❌
createApp()
(Vue 2 doesn't have isolated app scope)
- ❌ Top-level
await
in <script setup>
(Vue 2 does not support async component initialization)
- ❌ TypeScript syntax in template expressions (incompatible w/ Vue 2 parser)
- ❌ Reactivity transform (still experimental)
- ❌
expose
option is not supported for options components (but defineExpose()
is supported in <script setup>
).
TypeScript Changes
defineComponent
provides improved type inference similar to that of Vue 3. Note the type of this
inside defineComponent()
is not interoperable with this
from Vue.extend()
.
Similar to Vue 3, TSX support is now built-in. If your project previously had manual JSX type shims, make sure to remove them.
Upgrade Guide
Vue CLI / webpack
Upgrade local @vue/cli-xxx
dependencies the latest version in your major version range (if applicable):
~4.5.18
for v4
~5.0.6
for v5
Upgrade vue
to ^2.7.0
. You can also remove vue-template-compiler
from the dependencies - it is no longer needed in 2.7.
Note: if you are using @vue/test-utils
, you may need to keep it in the dependencies for now, but this requirement will also be lifted in a new release of test utils.
Check your package manager lockfile to ensure the following dependencies meet the version requirements. They may be transitive dependencies not listed in package.json
.
vue-loader
: ^15.10.0
vue-demi
: ^0.13.1
If not, you will need to remove node_modules
and the lockfile and perform a fresh install to ensure they are bumped to the latest version.
If you were previously using @vue/composition-api
, update imports from it to vue
instead. Note that some APIs exported by the plugin, e.g. createApp
, are not ported in 2.7.
Update eslint-plugin-vue
to latest version (9+) if you run into unused variable lint errors when using <script setup>
.
The SFC compiler for 2.7 now uses PostCSS 8 (upgraded from 7). PostCSS 8 should be backwards compatible with most plugins, but the upgrade may cause issues if you were previously using a custom PostCSS plugin that can only work with PostCSS 7. In such cases, you will need to upgrade the relevant plugins to their PostCSS 8 compatible versions.
Vite
2.7 support for Vite is provided via a new plugin: @vitejs/plugin-vue2. This new plugin requires Vue 2.7 or above and supersedes the existing vite-plugin-vue2.
Note that the new plugin does not handle Vue-specific JSX / TSX transform, which is intentional. Vue 2 JSX / TSX transform should be handled in a separate, dedicated plugin, which will be provided soon.
Volar Compatibility
2.7 ships improved type definitions so it is no longer necessary to install @vue/runtime-dom
just for Volar template type inference support. All you need now is the following config in tsconfig.json
:
{
"vueCompilerOptions": {
"target": 2.7
}
}
Devtools Support
Vue Devtools 6.2.0 has added support for inspecting 2.7 Composition API state, but the extensions may still need a few days to go through review on respective publishing platforms.
Bug Fixes
- sfc: only include legacy decorator parser plugin when new plugin is not used (326d24a)
Bug Fixes
- compiler-sfc: should transform non relative paths when base option is present (008d78b)
Bug Fixes
Bug Fixes
- reactivity: readonly() compat with classes (44ab1cd), closes #12574
- watch: template ref watcher should fire after owner instance mounted hook (089b27c), closes #12578
Bug Fixes
- types: fix instance type inference for setup() with no return value (65531f5), closes #12568
- watch: fix pre watchers not flushed on mount for nested component (7a3aa3f), closes #12569
Bug Fixes
- compiler-sfc: properly handle shorthand property in template expressions (9b9f2bf), closes #12566
Bug Fixes
- remove wrong observe toggle, properly disable tracking in setup() (2d67641)
- setup: setup props should pass isReactive check (52cf912), closes #12561
- template-ref: preserve ref removal behavior in non-composition-api usage (2533a36), closes #12554
Features
Bug Fixes
- compiler-sfc: do not transform external and data urls in templates (328ebff)
Bug Fixes
- compiler-sfc: expose src on custom blocks as well (cdfc4c1)
Features
- compiler-sfc: support includeAbsolute in transformAssetUrl (8f5817a)
- warn top level await usage in
<script setup>
(efa8a74)
Features
- further align compiler-sfc api + expose rewriteDefault (8ce585d)
Bug Fixes
- further align types with v3 (2726b6d)
Bug Fixes
- avoid warning when accessing _setupProxy (cdfd9f3)
Features
- export version as named export (749b96d)
Features
- defineExpose() support (3c2707b)
- directive resolution for
<script setup>
(aa2b1f4)
- resolve components from
<script setup>
(4b19339)
- types for
<script setup>
macros (7173ad4)
Features
- Basic
<script setup>
support. Requires vue-loader@^15.10.0-beta.1
.
- Component resolution doesn't work yet
- Types for
defineXXX
macros not supported yet
Features
- Add JSX types for Volar integration. No longer requires
@vue/runtime-dom
for component props validation in templates.
Bug Fixes
- fix scopedSlots regression (4f2a04e)
Bug Fixes
- guard against non-object provide value (c319cc7)
Features
Features
- add exports field + mjs build (d317237)
- expose set/del as named exports (5673363)
This release includes full Composition API support, including:
setup()
support in components
- Reactivity APIs (
ref()
, reactive()
etc.)
- Lifecycle hooks (
onMounted()
etc.)
provide()
and inject()
useSlots()
and useAttrs()
- template refs with
setup()
Behavior difference from Vue 3
- The reactivity system is still getter/setter based and does not use Proxies, so all Vue 2 change detection caveats still apply.
reactive()
, ref()
, and shallowReactive()
will directly convert original objects instead of creating proxies. They also do not convert properties with symbol keys.
- Avoid using arrays as root values in
reactive()
because without property access the array's mutation won't be tracked (this will result in a warning).
readonly()
does create a separate object, but it won't track newly added properties and does not work on arrays.
Notes on API exposure
In ESM builds, these APIs are provided as named exports (and named exports only):
import Vue, { ref } from 'vue'
Vue.ref
When bundling with CJS builds externalized, bundlers should be able to handle ESM interop when externalizing CJS builds.
In UMD builds, these APIs are exposed on the global Vue
object.
In addition:
h()
, set()
, del()
and nextTick()
are now also provided as named exports in ESM builds.
Bug Fixes
- v-on: add removing all dom event listeners when vnode destroyed (#10085) (3d29ba8)
Features
2.6.14 (2021-06-07)
Bug Fixes
Features
- ssr: vue-ssr-webpack-plugin compatible with webpack 5 (#12002) (80e7730)
2.6.13 (2021-06-01)
Bug Fixes
- attrs: do not consider translate attribute as boolean (#11392) (cd57393), closes #11391
- compiler: Allow BigInt usage in templates (#11152) (c42b706)
- compiler: avoid converting &nbps; to spaces (#11065) (55a30cf)
- compiler: event handlers with modifiers swallowing arguments (fix #10867) (#10958) (8620706)
- core: fix sameVnode for async component (#11107) (5260830)
- core: remove trailing comma in function signature (#10845) (579e1ff), closes #10843
- errorHandler: async error handling for watchers (#9484) (e4dea59)
- force update between two components with and without slot (#11795) (77b5330)
- give correct namespace in foreignObject (#11576) (af5e05d), closes #11575
- handle async placeholders in normalizeScopedSlot (#11963) (af54514)
- keep-alive: cache what is really needed not the whole VNode data (#12015) (e7baaa1)
- parser: allow multiple slots with new syntax (#9785) (67825c2), closes #9781
- pause dep collection during immediate watcher invocation (#11943) (987f322)
- props: correctly warn when a provided prop is Symbol (#10529) (abb5ef3), closes #10519
- props: support BigInt in props type validation (#11191) (fa1f81e)
- slot: add a function to return the slot fallback content (#12014) (ce457f9)
- ssr: avoid missing files in manifest (#11609) (b97606c)
- ssr: inheritAttrs false adds attributes to html (#11706) (7e5dc6b)
- ssr: textarea keeps undefined/null values (#11121) (b8bd149)
- types: add types for Vue.util.warn function (#11964) (e0274e4), closes /github.com/vuejs/vue/blob/v2.6.12/src/core/util/debug.js#L18-L26
- types: allow string for watch handlers in options (#10396) (668e1e6)
- types: allow symbol & boolean for vnode key (#11914) (5c459f0)
- types: changed expression type to optional string (#11189) (7c75462), closes #10871
- types: make $refs undefined possible (#11112) (2b93e86)
- v-on: avoid events with empty keyCode (autocomplete) (#11326) (c6d7a6f)
- v-pre: do not alter attributes (#10088) (0664cb0), closes #10087
- vdom: avoid executing root level script tags (#11487) (fb16d7b), closes #11483
- warn: better message with no constructors props (#9241) (6940131)
- warns: modify
maybeComponent
function in parser (#10167) (0603ff6), closes #10152
Features
- warns: avoid warning native modifiers on dynamic components (#11052) (3d46692)
- warn: warn computed conflict with methods (#10119) (3ad60fe)
Performance Improvements
2.6.12 (2020-08-20)
Bug Fixes
2.6.11 (2019-12-13)
Bug Fixes
2.6.10 (2019-03-20)
Bug Fixes
- codegen: support named function expression in v-on (#9709) (3433ba5), closes #9707
- core: cleanup timeouts for async components (#9649) (02d21c2), closes #9648
- core: only unset dom prop when not present (f11449d), closes #9650
- core: use window.performance for compatibility in JSDOM (#9700) (653c74e), closes #9698
- scheduler: revert timeStamp check (22790b2), closes #9729 #9632
- slots: fix slots not updating when passing down normal slots as $scopedSlots (ebc1893), closes #9699
- types: allow using functions on the PropTypes (#9733) (df4af4b), closes #9692
- types: support string type for style in VNode data (#9728) (982d5a4), closes #9727
2.6.9 (2019-03-14)
Bug Fixes
- compiler: whitespace: 'condense' should honor pre tag as well (#9660) (f1bdd7f)
- event timeStamp check for Qt (7591b9d), closes #9681
- scheduler: fix getNow check in IE9 (#9647) (da77d6a), closes #9632
- scheduler: getNow detection can randomly fail (#9667) (ef2a380)
- should consider presence of normal slots when caching normalized scoped slots (9313cf9), closes #9644
- should not swallow user catch on rejected promise in methods (7186940), closes #9694
- should use fallback for scoped slots with single falsy v-if (781c705), closes #9658
- ssr: fix nested async functional component rendering (#9673) (8082d2f), closes #9643
- ssr: not push non-async css files into map (#9677) (d282400)
- transition: fix appear check for transition wrapper components (#9668) (4de4649)
- v-bind object should be overridable by single bindings (#9653) (0b57380), closes #9641
2.6.8 (2019-03-01)
Bug Fixes
- avoid compression of unicode sequences by using regexps (#9595) (7912f75), closes #9456
- compiler: set end location for incomplete elements (#9598) (cbad54a)
- fix modifier parsing for dynamic argument with deep path (#9585) (060c3b9), closes #9577
- further adjust max stack size (571a488), closes #9562
- handle async component when parent is toggled before resolve (#9572) (ed34113), closes #9571
- scoped slots dynamic check should include v-for on element itself (2277b23), closes #9596
- types: allow scoped slots to return a single VNode (#9563) (241eea1)
- types: update this for nextTick api (#9541) (f333016)
2.6.7 (2019-02-21)
Bug Fixes
- #9511: avoid promise catch multiple times (#9526) (2f3020e), closes #9511 #9511 #9511 #9511
- avoid errors thrown during dom props update (8a80a23), closes #9459
- avoid possible infinite loop by accessing observables in error handler (#9489) (ee29e41)
- compiler: handle negative length in codeframe repeat (7a8de91)
- ensure generated scoped slot code is compatible with 2.5 (7ec4627), closes #9545
- ensure scoped slots update in conditional branches (d9b27a9), closes #9534
- scoped slots should update when inside v-for (8f004ea), closes #9506
2.6.6 (2019-02-12)
Bug Fixes
- ensure scoped slot containing passed down slot content updates properly (21fca2f)
- fix keyCode check for Chrome autofill fake key events (29c348f), closes #9441
2.6.5 (2019-02-11)
Bug Fixes
- allow passing multiple arguments to scoped slot (e7d49cd), closes #9468
- bail out of event blocking for iOS bug (0bad7e2), closes #9462
- do not cache scoped slots when mixed with normal slots (060686d)
2.6.4 (2019-02-08)
Bug Fixes
- avoid breaking avoriaz edge case (9011b83)
- avoid logging same error twice when thrown by user in global handler (ca57920), closes #9445
- empty scoped slot should return undefined (57bc80a), closes #9452
- expose v-slot slots without scope on this.$slots (0e8560d), closes #9421 #9458
- new syntax slots without scope should also be exposed on functional slots() (8a80086)
Performance Improvements
- cache result from functional ctx.slots() calls (7a0dfd0)
- skip scoped slots normalization when possible (099f3ba)
2.6.3 (2019-02-06)
Bug Fixes
- async component should use render owner as force update context (b9de23b), closes #9432
- avoid exposing internal flags on $scopedSlots (24b4640), closes #9443
- bail out scoped slot optimization when there are nested scopes (4d4d22a), closes #9438
- compiler: fix v-bind dynamic arguments on slot outlets (96a09aa), closes #9444
- skip microtask fix if event is fired from different document (dae7e41), closes #9448
- skip microtask fix in Firefix <= 53 (7bc88f3), closes #9446
- types: add Vue.version to types (#9431) (54e6a12)
Reverts
- feat: expose all scoped slots on this.$slots (d5ade28)
2.6.2 (2019-02-05)
Bug Fixes
- always set transformed model value on attrs (b034abf)
- restore slot-scope + v-if behavior (44a4ca3), closes #9422
Features
- expose all scoped slots on this.$slots (0129b0e), closes #9421
2.6.1 (2019-02-04)
Bug Fixes
2.6.0 (2019-02-04)
Bug Fixes
- allow more enumerated values for contenteditable (e632e9a), closes #9397
- fix child forceUpdate regression (44a17ba), closes #9396
- fix v-bind:style for camelCase properties with !important (#9386) (539e481)
- template v-slot should work with v-else conditions (2807fd2)
Features
- move v-bind.prop shorthand behind flag (64f863b)
Features
- detect and warn invalid dynamic argument expressions (c9e3a5d)
Bug Fixes
- async edge case fix should apply to more browsers (ba0ebd4)
- fix checkbox event edge case in Firefox (1868561)
Features
- adjust v-slot per RFC + enable flag (67e85de)
- dynamic directive arguments for v-on, v-bind and custom directives (#9373) (dbc0582)
- ssr: allow template option to be function in renderToString (#9324) (b65f6d7)
- update new slot syntax per RFC revision (4fca045)
- warning for ambiguous v-slot usage (8d84572)
Performance Improvements
- improve scoped slots change detection accuracy (#9371) (f219bed)
Bug Fixes
- allow _ in watch paths (element compat) (8b382b3)
- always use microtasks for nextTick (#8450) (850555d), closes #7109 #7546 #7707 #7834 #8109 #6566
- core: dedupe lifecycle hooks during options merge (edf7df0), closes #9199
- core: fix merged twice bug when passing extended constructor to mixins (#9199) (5371617), closes #9198
- cover more cases in v-on inline return value (9432737)
- ensure only nromalize a scoped slot when it is present (5fb23d4)
- ensure proxied normal slot uses correct key (b32c4b6)
- make transition-group key warning a tip to avoid breaking compilation (d08b49f)
- next-tick: revert 60da366 (080dd97), closes #8436
- provide/inject: Merges symbol provides (#7926) (1933ee8)
- return inline invocation return value in v-on handlers (0ebb0f3), closes #7628
- runtime: DevTools recommendation shows for all browsers (#8638) (22ad266), closes #8634
- scoped-slots: ensure $scopedSlots calls always return Arrays (c7c13c2), closes #8056
- ssr: properly handle invalid and numeric style properties (7d9cfeb), closes #9231
- ssr: should not render invalid numeric style values (17d8bcb)
- ssr: should render 0 as valid value for style property with unit (aef5b4e)
Features
- add browser ESM build (861abf4)
- add Vue.observable() for explicitly creating observable objects (c50bbde)
- compiler/watch: allow unicode characters in component names and watch paths (#8666) (9c71852), closes #8564
- compiler: add whitespace option, deprecate preserveWhitespace option (e1abedb), closes #9208
- compiler: expose generateCodeFrame method (a4ed58c)
- compiler: output codeframe in browser compiler (325fc76)
- compiler: output source range for compiler errors (#7127) (b31a1aa), closes #6338
- compiler: support deindent: false in vue-template-compiler (#7215) (bf0efb0), closes #7054
- config: expose config.useEventDelegation and default to false (3be1c5d)
- core: expose all slots on $scopedSlots as functions (5d52262)
- errors: sync/async error handling for lifecycle hooks and v-on handlers (#8395) (6e9fcfc), closes #6953 #7653
- expose performance measures (9ae80ac), closes #7570
- functional: add scopedSlots to context in functional components (#7941) (fb6aa06)
- new scoped slot syntax implementation update per rfc (c5c354d)
- ssr: Add 'nonce' option to context for ssr outlet script (#8047) (f036cce), closes #7479
- ssr: add custom state serializer option (4494012), closes #6614
- ssr: allow opting-out of caching by returning false in serverCacheKey (ab24285), closes #8790
- ssr: ssrPrefetch option + context.rendered hook (#9017) (d7a533d)
- support .property shorthand syntax for v-bind.prop modifier (d2902ca), closes #7582
- support custom toString() in text interpolation and v-html (#8217) (0e4e45e), closes #8093
- support slot-props and its shorthand (584e89d)
- support v-html for SVG elements (#8652) (a981c80)
- types: add Prop to main type declaration file (#6856) (5791072), closes #6850
- types: add types for vue-template-compiler (#7918) (ced774b)
- use event delegation when possible (b7f7f27), closes #6566
- v-bind.sync also listens for kebab-case update event (#8297) (3fca527), closes #6428
- v-for: support iterables in v-for (#8179) (d40eb9c)
2.5.22 (2019-01-11)
Bug Fixes
- async component: memory leak after synchronous async loading (#9275) (d21e931), closes #9229
- core: dedupe lifecycle hooks during options merge (0d2e9c4), closes #9199
- core: fix merged twice bug when passing extended constructor to mixins (#9199) (743edac), closes #9198
- ssr: support rendering comment (#9128) (b06c784)
2.5.21 (2018-12-11)
Bug Fixes
- fix single v-for child optimization (847e493)
- fix v-for component with undefined value (4748760), closes #9181
- lifecycle: beforeUpdated should not be called if component is destroyed (#9171) (87bad80), closes #8076
- types: accept primitive and falsy values in createElement children (#9154) (d780dd2), closes #8498
- v-model: properly handle multiline v-model expressions (#9184) (3d44937), closes #9183
- weex: support data class type that is string (#9139) (d8285c5), closes #9124
Performance Improvements
- skip normalization on single child element v-for (4074104)
Reverts
- "chore: use keypress in TodoMVC example for IME input methods (#9172)" (80fb6b8)
2.5.20 (2018-12-10)
Bug Fixes
2.5.19 (2018-12-09)
Bug Fixes
- ssr: should not warn for custom directives that do not have ssr implementation (780dac5), closes #9167
- vdom: remove unnecessary sameVnode condition (0d4b35f), closes #9168
Reverts
- fix(sfc): avoid deindent when pad option is specified (#7647) (5d721a4)
2.5.18 (2018-12-07)
Bug Fixes
- compiler: fix codegen for v-for component inside template (1b4a8a0), closes #9142
- fix keyName checking for space and delete in IE11 (#9150) (0ed0aad), closes #9112
- ssr: fix ssr template publicPath generation (f077ed1), closes #9145
- transition-group: fix activeInstance regression (8a2dbf5), closes #9151
- types: correct scopedSlot types (#9131) (448ba65), closes #8946
- types: type support for advanced async components (#8438) (dfaf9e2)
Bug Fixes
- actually disable dep collection when invoking lifecycle hooks (#9095) (0d62bb8), closes #9046
- compiler: wrap scoped slots v-if conditions in parens (#9119) (ef8524a), closes #9114
- compiler: maybeComponent should return true when "is" attribute exists (#8114) (aef2a5f), closes #8101
- compiler: normalize potential functional component children in v-for (#8558) (d483a49), closes #8468
- compiler: should keep newline after unary tags in
<pre>
(#8965) (05001e6), closes #8950
- compiler: templates inside v-pre should be rendered to HTML (#8146) (ecac831), closes #8041
- component: clean up memory leak after loading async component completes (fix #8740) (#8755) (2e472c5)
- core: avoid mutating original children when cloning vnode (097f622), closes #7975
- core: properly handle reused vnodes (530ca1b), closes #7913
- core: skip mixins and extends if child is already merged (#8870) (80f17fa), closes #8865
- data: skip recursive call if values are identical (#8967) (a7658e0)
- error handling: handle errors on immediate watcher execution (#8581) (2686818), closes #8567
- fix potential xss vulnerability in ssr when using v-bind (3d36a44)
- fix server env detection in wechat mini program (#9075) (05e8bcf)
- for: use IE compatible regex in v-for regex (#8048) (ecc239e), closes #7946
- handle undefined style properties in jsdom (fix #7444) (#8281) (5cfdf1a)
- lifecycle: updated should not be called after component being destroyed (#8381) (a64ff19), closes #8076
- make sure global state is restored in the case of an exception in macrotask callback (#9093) (b111de4)
- parser: allow CRLFs in string interpolations (#8408) (8f04135), closes #8103
- replace hardcoded .parentNode with abstract ops, fix #8713 (#8714) (1e1ce0c)
- server: use path.posix.join to generate public path (#8177) (46b8d2c), closes #8167
- sfc: avoid deindent when pad option is specified (#7647) (9d2f9a0)
- shared: check dates in looseEqual (#7940) (db7287c), closes #7928
- ssr: adjust call stack size defer threshold (e4b1b57), closes #8545
- ssr: check js assets more accurate in ssr webpack plugin (#8639) (5624278)
- ssr: computed properties should pass vm as first argument in ssr (#9090) (33e669b), closes #8977
- ssr: fix double escaping of staticClass values (#7859) (#8037) (c21b89e)
- ssr: remove trailing hash in webpack module identifier when (ae6dcd6)
- ssr: render initial and used async css chunks (#7902) (575b6e7), closes #7897
- ssr: resolve server directives the same as on client (#9129) (3078352), closes #8961
- support modifier combination of click.right + .once (#8492) (eb60452)
- transition: check existence of
el.parentNode
(#8422) (0b16927), closes #8199
- transition: handle local-formatted floats in toMs function. (#8495) (59d4351), closes #4894
- transition: transition-group should only listen for first-level children's end events (#8374) (504d5da)
- types: accept
number
type as key on Vue.set/delete (#8707) (#8709) (0ba79e2)
- types: fix
renderError
arguments type (#8636) (ac217d2), closes #8635
- types: fix vm.$once argument type (#8995) (97086f3), closes #8983
- types: make VNodeDirective properties optional, fix #8013 (#8003) (99a51b4)
- types: relax the return type of props default option (#8537) (a9eb198)
- types: support chain call for Vue.use and Vue.mixin (#8595) (c711ec1)
- types: support typing $el as SVGElement (#8809) (3cd4af4)
- v-bind object should be overridable with kebab-cased props (#8845) (7585241)
- v-model: avoid duplicate model transforms (7b7164c), closes #8436
- v-on: correctly remove once listener (#8036) (19c33a7), closes #8032
- v-pre: skip compiling custom component tags in v-pre blocks (fix #8286) (#8376) (a71853b)
Features
Reverts
- Revert "perf: avoid unnecessary re-renders when computed property value did not change (#7824)" (6b1d431), closes #7824
Bug Fixes
- add missing
asyncMeta
during VNode cloning (#7861) (8227fb3)
- beforeUpdate should be called before render and allow state mutation (#7822) (b7445a2), closes #7481
- codegen: support IE11 and Edge use of "Esc" key (#7887) (1bd6196), closes #7880
- correct the
has
implementation in the _renderProxy
(#7878) (7b38739)
- ensure init/prepatch hooks are still respected (de42278), closes vue-router#1338
- invoke component node create hooks before insertion (#7823) (f43ce3a), closes #7531
- observer: invoke getters on initial observation if setter defined (#7828) (7a145d8)
Performance Improvements
- avoid unnecessary re-renders when computed property value did not change (#7824) (653aac2), closes #7767
Reverts
- Revert "refactor: remove unnecessary checks (#7875)" (903be9b), closes #7875
2.5.16 (2018-03-13)
Bug Fixes
- allow multiline expression in v-for (71b4b25), closes #7792
- core: Make set/delete warning condition for undefined, null and (#7818) (9084747), closes #7452
- fix keyName checking for arrow keys in IE11 (4378fc5), closes #7806
- fix regression on duplicate component init when using shared data objects (984927a), closes #7805
- fix wrongly matched named slots in functional components (62a922e), closes #7817
- keep-alive: run prune after render for correct active component check (215f877), closes #7566
- model: fix static input type being overwritten by v-bind object (#7819) (a6169d1), closes #7811
- named slots for nested functional components (6dd73e9), closes #7710
- ssr: fix SSR for async functional components (882e719), closes #7784
- ssr: fix v-show inline style rendering when style binding is array (#7814) (1a979c4), closes #7813
2.5.15 (2018-03-10)
Bug Fixes
- do not traverse VNodes when registering dependencies (84a9a9d), closes #7786
2.5.14 (2018-03-09)
Bug Fixes
- address potential regex backtrack (cd33407)
- allow codebase to be inlined directly in HTML (#7314) (dccd182), closes #7298
- always install composition event listeners (f7ca21e), closes #7367
- clean up custom events when patched component no longer have events (d8b0838), closes #7294
- codegen: support filters with () in older browsers (#7545) (dc97a39), closes #7544
- core: disable dependency collection in lifecycle hooks and data getter (#7596) (318f29f), closes #7573
- core: handle edge cases for functional component returning arrays (8335217), closes #7282
- do not special case attributes for custom elements (50b711a), closes #6864 #6885
- fix config.productionTip (ced00b1), closes #7565
- fix ssr env detection in weex (#7375) (3eb37ac)
- inject: use hasOwn instead of 'in' for provideKey check (#7460) (733c1be), closes #7284
- install ssr helpers for functional context during SSR (9b22d86), closes #7443 nuxt/nuxt.js#2565
- model: fix array index binding for v-model checkbox (#7671) (550c3c0), closes #7670
- observer: do not invoke getters on initial observation (#7302) (7392dfc), closes #7280
- ref: allow ref key to be zero (#7676) (e396eb3), closes #7669
- respect type order when boolean casting multi-typed props (81e1e47), closes #7485
- show: prevent transitions from starting on change truthy values (#7524) (013d980), closes #7523
- skip v-model & value binding collision check with dynamic type binding (#7406) (1c0b4af), closes #7404
- support KeyboardEvent.key in built-in keyboard event modifiers (#7121) (1c8e2e8), closes #6900
- transition: should not add transition class when cancelled (#7391) (5191f13), closes #7390
- types: add missing
listeners
type on RenderContext (#7584) (db1b18c)
- types: contravariant generic default in ComponentOption (#7369) (6ee6849)
- types: fix wrong errorCaptured type (#7712) (6b8516b)
- types: make render option in functional components to optional (#7663) (b2092db)
- types: make VNodeChildrenArrayContents type more accurate (#7287) (49aae6b)
- types: prefer normal component over functional one (#7687) (144bf5a)
- v-model: handle trailing whitespaces in expression (#7737) (db58493)
- v-on: return handler value when using modifiers (#7704) (6bc75ca)
- vdom: svg inside foreignObject should be rendered with correct namespace (fix #7330) (#7350) (0529961)
- weex: default value for editor, fix #7165 (#7286) (e055df8)
Features
- support v-model dynamic type binding for v-bind="object" (41838c8), closes #7296
- weex: adjust framework entry APIs and add flow annotations (#7272) (472a289)
- weex: support parse object literal in binding attrs and styles (#7291) (ff8fcd2)
- weex: update new syntax for <recycle-list> (7cc0b55)
- weex: update weex recycle-list compiler (#7610) (d6200d7)
2.5.13 (2017-12-19)
Reverts
- Revert "feat: auto cache inline prop literals to avoid child re-render" (aac7634)
2.5.12 (2017-12-19)
Bug Fixes
- warning: allow symbol as vdom key (#7271) (bacb911)
- weex: append as tree by default for recycle-list and cell-slot (#7216) (d544d05)
- weex: update recycle-list v-for transform (0ee81b2)
Features
- $compiler: compile weex native directives in preTransformNode (2d09ee3)
- $compiler: supports compiling v-bind to the weex native directive in recycle-list (8b893c1)
- $compiler: supports compiling v-else-if and v-else to the weex native directive (2a1ce0d)
- $compiler: supports compiling v-for to the weex native directive (9bd1483)
- $event: support binding parameters on event handler within weex recycle-list (acdc3c4)
- auto cache inline prop literals to avoid child re-render (996eb00)
- compile: supports compiling v-if to the weex native directive (7ad368e)
- types: extract VueConfiguration type for easy expansion (#7273) (#7274) (c0d516c)
- weex: generate "@render" function for weex recycle-list (#6987) (0c11aa8)
- weex: partially support lifecycles of virtual component (#7242) (661bfe5)
- weex: pass stateless component test case (452a65c)
- weex: recycle-list support stateful child component (70b97ac)
- weex: recycle-list support WIP (5254ee3)
- weex: split text into separate module (c104cc5)
- weex: support compiling
v-on
in the weex native directive (#6892) (2cb8ea3)
- weex: update weex utils (#7115) (3b32652)
- weex: WIP adjust component transform stage (62e47c9)
- weex: WIP fix flow + handle errors in recycle-list template render (5c2ce00)
- weex: WIP implement virtual component (#7165) (b8d33ec)
- weex: WIP invoke recycle-list child component with backing instance (801f793)
- weex: WIP mark recycle list child component root (88f3889)
- wip: recycle list template inline expand (ac99957)
Reverts
- revert prop object validation (01c0750), closes #7279
- weex: remove the "receiveTasks" api and support component hook (#7053) (0bf0cbe)
2.5.11 (2017-12-14)
Bug Fixes
- avoid unnecessary lowercase coersion in component name validation (3f0c628), closes #7237
Features
- warn misspelled keys on prop validation object (#7198) (d02bb37)
2.5.10 (2017-12-12)
Bug Fixes
- core: warn duplicate keys in all cases (#7200) (023f171), closes #7199
- data() should be called with vm as first argument in mixins (bd4819e), closes #7191
- more consistent component naming warnings across the API (644274c), closes #7212
- revert shared static tree cache to avoid memory leak (5875c7c), closes #7184
- should not update in-focus input value with lazy modifier (60da366), closes #7153
- ssr: fix double escaping of ssrNode attribute values (#7224) (73a89bf), closes #7223
- ssr: properly handle errors in async component (8936b8d), closes #6778
- v-for: support array and nested destructuring in v-for (f5ce6b5)
- weex: send createFinish signal after root component mounted (#7154) (0da8bce)
2.5.9 (2017-11-27)
Bug Fixes
- block unnecessary input event on textarea placeholder in IE (0f7c443), closes #7138
- ensure functionalContext is cloned during slot clones (604e081), closes #7106
- fix async component resolving in sibling mounted hook (dd21eac), closes #7107
- fix v-for iterator parsing destructuring + parens without index (aa82625)
- keep-alive: should not destroy active instance when pruning cache (3932a45), closes #7105
- types: add missing ssr renderToString signature (14e9908)
- types: add Promise signature for bundleRenderer.renderToString (#7098) (3554eb2)
- types: bump ts version and fix typing bugs (#7135) (a71e653)
- types: improve and test bundleRenderer.renderToString Promise types (fcc1229)
- types: use object and string instead of Object and String (#7126) (d2e1d49)
2.5.8 (2017-11-21)
Bug Fixes
- fix v-for alias deconstruct regression (ebcef58), closes #7096
2.5.7 (2017-11-20)
Bug Fixes
- allow traversing reactive objects which are sealed (#7080) (4c22d1d)
- fix <keep-alive> include/exclude logic for anonymous components (a23b913)
- improve error detector v-for identifier check (d891cd1), closes #6971
- ssr: fix bundle renderer require path on windows (#7085) (063acb7)
Features
- feat: add warning for ambiguous combined usage of slot-scope and v-for (c264335), closes #6817
2.5.6 (2017-11-18)
Bug Fixes
- fix v-model :value warning on custom component (59dea37), closes #7084
2.5.5 (2017-11-17)
Bug Fixes
- init _staticTrees to avoid runtime reference warning (f5cd29e), closes #7075
- keep-alive should not cache anonymous components (4d8226f), closes #6938
- should warn unknown components inside <keep-alive> (6d6b373)
Features
2.5.4 (2017-11-16)
Bug Fixes
Features
- weex: support batch update styles and attributes (#7046) (7cf188e)
2.5.3 (2017-11-03)
Bug Fixes
- $set should respect properties on prototype chain (83ed926), closes #6845
- also clone component slot children during deepClone (1cf02ef), closes #6891 #6915
- clean up target variables to avoid memory leaks (#6932) (c355319), closes #6931
- core: static trees should be cached on options (#6826) (#6837) (b6c384d)
- events: properly $off array of events (#6949) (c24f3e4)
- handle encoded tabs and newlines in attributes for Chrome a[href] and IE/Edge (cfd73c2), closes #6828 #6916
- keep-alive: higher priority for exclude than include (#6905) (604230f)
- model: correctly set select v-model initial value on patch (#6910) (58a39df)
- properly mark slot rendered flag in production mode (4fe1a95), closes #6997
- slots: properly handle nested named slot passing (5a9da95), closes #6996
- special case for static muted attribute in firefox (f2e00f7), closes #6887
- ssr: properly render
<select v-model>
initial state (e1657fd), closes #6986
- ssr: properly render textarea value (79c0d7b), closes #6986
- ssr: should not optimize root if conditions (4ad9a56), closes #6907
- types: improve typing for better completion (#6886) (98ea0a3)
- typing: relax $options type for TS2.6+ (#6819) (9caed00)
- v-model: v-if / v-else not working with :type + v-model (#6955) (0c703e3), closes #6918
- weex: stop trim css units in richtext component (#6927) (8a784d8)
2.5.2 (2017-10-13)
Bug Fixes
2.5.1 (2017-10-13)
Bug Fixes
- backwards compat with checkbox code generated in < 2.5 (5665eaf), closes #6803
- fix empty array edge case in normalizeChildren (1f84dd1), closes #6790
- ssr: add semicolon before self-removal script (#6794) (5a15a8d)
- transition-group: work around rollup tree shaking (#6796) (60b1af9), closes #6792
- v-model: allow arbitrary naems for type binding (#6802) (15031b8), closes #6800
- v-on="object" listeners should fire after high-priority ones (08a7fb5), closes #6805
2.5.0 (2017-10-13)
Bug Fixes
- add slot v-bind warning (#6736) (514b90b), closes #6677
- allow an object's Symbols to be observed (#6704) (4fd2ce8)
- compiler: warn when inline-template component has no children (fix #6703) (#6715) (baabd6d)
- core: avoid observing VNodes (4459b87), closes #6610
- ensure nextTick are passed to errorHandler (#6730) (ae347a5)
- fallback to Promise in non-DOM environments (6d1f4cb)
- fix scoped CSS for nested nodes in functional components (4216588)
- handle errors in errorHandler (2b5c83a), closes #6714
- properly handle v-if on
<template>
scoped slot (68bdbf5), closes #6725
- prevent memory leak due to circular reference in vnodes (405d8e9), closes #6759
- properly render value on
<progress>
in IE/Edge (c64f9ae), closes #6666
- ref: preserve ref on components after removing root element (#6718) (6ad44e1), closes #6632 #6641
- resolve async component default for native dynamic import (2876ed8), closes #6751
- ssr: fix hydration mismatch with adjacent text node from slots (b080a14), closes vuejs/vue-loader#974
- ssr: handle inline template compilation error (dff85b2), closes #6766
- use correct ns inside
<foreignObject>
as root node (cf1ff5b), closes #6642
- use MessageChannel for nextTick (6e41679), closes #6566 #6690
- warn slot-scope when used as a prop (8295f71)
- work around old Chrome bug (0f2cb09), closes #6601
Features
- add .exact event modifier (#5977) (9734e87), closes #5976
- add catchError option (b3cd9bc)
- add in-browser build for vue-template-compiler (a5e5b31)
- add max prop for <keep-alive> (2cba6d4)
- core: call data method with this value (#6760) (3a5432a), closes #6739
- functional component support for compiled templates (ea0d227)
- improve template expression error message (e38d006), closes #6771
- inject: support providing default values for injections (#6322) (88423fc)
- make vue and basic server renderer compatible in pure js runtimes (c5d0fa0)
- rename catchError -> errorCaptured (6dac3db)
- rename inject alias from "name" to "from" (6893499)
- scoped CSS support for functional components (050bb33)
- ssr: add shouldPrefetch option (7bc899c), closes #5964
- ssr: auto-remove initial state script if prod (#6763) (2d32b5d), closes #6761
- ssr: renderToString return Promise (f881dd1), closes #6160
- support denoting normal elements as scoped slot (dae173d)
- support RegExp in ignoredElements (#6769) (795b908)
- types: further improve Vue type declarations for canonical usage (#6391) (db138e2)
- v-model: create non-existent properties as reactive (e1da0d5), closes #5932
- v-model: support dynamic input type binding (f3fe012)
- v-on automatic key inference (4987eeb)
Reverts
- fix(v-model): fix input listener with modifier blocking v-model update (62405aa)
2.4.4 (2017-09-14)
Bug Fixes
- ssr: fix bundleRenderer Promise rejection regression (0c9534f)
- ssr: fix style injection regression (a2f73f2), closes #6603 #6353
2.4.3 (2017-09-13)
Bug Fixes
- $off should ignore undefined handler argument (fa6a729), closes #6591
- computed properties should not be cached during SSR (06741f3), closes vuejs/vuex#877
- deep clone slot vnodes on re-render (0529040), closes #6372
- directive: should invoke unbind & inserted on inner component root element change (538ad20), closes #6513
- do not use MutationObserver in IE11 (844a540), closes #6466
- ensure $attrs and $listeners are always objects (#6441) (59dbd4a), closes #6263
- ensure outer bindings on nested HOC are properly re-applied on inner root element change (a744497)
- handle special case for allowfullscreen on
<embed>
(d77b953), closes #6202
- inherit SVG ns on component root node (#6511) (89f0d29), closes #6506
- inject: exclude not enumerable keys of inject object (#6346) (3ee62fd), closes #6574
- preserve slot attribute if not resolved by Vue (684cd7d), closes #6553
- provide: provide should default to parentVal during merging (#6473) (3c21675), closes #6436
- set value as domProp for
<progress>
(7116af4), closes #6561
- ssr: address possible xss vector (5091e2c)
- ssr: better handle v-html hydration (0f00f8f), closes #6519
- ssr: expose context.styles when no lifecycle styles are injected (1f52a2a), closes #6353
- ssr: fix cachedEscape memory issue (02f8b80), closes #6332
- ssr: handle v-text/v-html with non-string value (09106f0), closes #6572
- ssr: should also escape static text content (172dbf9), closes #6345
- support prop type checking for primitive wrapper objects (#6450) (679cd1f), closes #6447
- transition: consider async placeholder as valid child to return (#6369) (a43d667), closes #6256
- types: add
inject
option in functional component options type (#6530) (1baa0a7)
- types: allow variadic plugin use (#6363) (38d5218), closes #6357
- v-model: Allow using array value with array v-model in checkboxes (#6220) (d6e6f1d), closes #6219
- v-model: avoid unnecessary change event on select options change (d4d553c), closes #6193 #6194
- v-model: fix input listener with modifier blocking v-model update (6f312d6), closes #6552
- vdom: avoid diff de-opt when both head/tail are different (230c6ae), closes #6502
- vdom: Don't replace input for text-like type change (#6344) (f76d16e), closes #6313
Features
- weex richtext: support events and add more test cases (d627161)
- weex richtext: support to parse styles and classList (b609642)
- weex richtext: treat richtext as runtime components (3e4d926)
- weex: add basic support of richtext (f1c96e7)
- weex: remove weex_require_module api (a8146c0)
- weex: return instance in createInstance (0dc27dc)
- weex: support nested components in richtext (0ea2bb4)
- weex: wrap IFFE for appCode (f975fac)
Performance Improvements
- core: prevent iteration of arrays that should not be observable (#6467) (aa820cb), closes #6284
- deep clone slot vnodes on re-render (#6478) (5346361)
- optimize the performance of hyphenate method. (#6274) (14ee9e7)
- v-model: tweak setSelected (41d774d)
2.4.2 (2017-07-21)
Bug Fixes
- checkbox v-model="array" ignore false-value (#6180) (3d14e85), closes #6178
- compile: properly generate comments with special character (#6156) (d03fa26), closes #6150
- ensure looseEqual is not dependent on key enumeration order (a8ac129), closes #5908
- include boolean in isPrimitive check (#6127) (be3dc9c), closes #6126
- parser: only ignore the first newline in
<pre>
(082fc39), closes #6146
- provide/inject: merge provide properly from mixins (3036551), closes #6175
- provide/inject: resolve inject properly from mixins (#6107) (b0f00e3), closes #6093
- transition: should trigger transition hooks for v-show in ie9 (9b4dbba), closes #5525
- v-bind: respect .prop modifier on components (#6159) (06b9b0b)
- v-model: use stricter check for
<select>
option update (c70addf), closes #6112
- v-on: revert component root data.on/data.nativeOn behavior for (1713061), closes #6109
- work around IE/Edge bug when accessing document.activeElement from iframe (fc3d7cd), closes #6157
Features
- warn when assigning to computed property with no setter (eb9168c), closes #6078
Reverts
- perf: remove src directory from npm module (#6072) (ec4b1be)
2.4.1 (2017-07-13)
2.4.0 (2017-07-13)
Bug Fixes
- check enterToClass/leaveToClass existence before adding it (#5912) (34d8c79), closes #5800
- core: add merge strategy for provide option (#6025) (306997e), closes #6008
- core: should preserve reactivity-ness of injected objects (8d66691), closes #5913
- ensure cleanup in watcher.get (#5988) (f6cd44c), closes #5975
- handle arrays in v-on object syntax (086e6d9)
- improve Vue.set/Vue.delete API to support multi type of array index (#5973) (eea0920), closes #5884
- multiple merged vnode hooks not invoked properly (91deb4f), closes #6076
- parser: the first newline following pre and textarea tag should be ignored (#6022) (4d68079)
- prefetch should not have
as
attribute (#5683) (ebca266)
- ref: refactor function registerRef (#6039) (254d85c), closes #5997
- ssr: fix bundleRenderer mapped async chunks caching check (#5963) (de42186)
- ssr: reference error when create $ssrContext for root component (#5981) (5581654), closes #5941
- support plugin with multi version vue (#5985) (049f317), closes #5970
- transition group should work with dynamic name (#6006) (#6019) (d8d4ca6)
- v-bind object should not override props on scopedSlots (#5995) (458030a)
- v-model: fix input change check for type="number" (0a9aab5), closes #6069
- v-model: should generate component-specific code for tags with "is" attribute (a1d1145), closes #6066
- v-model: use consistent behavior during IME composition for other text-like input types (fix #5902) (4acc8c8)
Features
- add .editorconfig (#5691) (0cc0b07)
- add
comments
option to allow preserving comments in template (#5951) (e4da249), closes #5392
- Add
defer
to body scripts (#5704) (f3757eb)
- core: $attrs, $listeners & inheritAttrs option (6118759), closes #5983
- keep-alive: support Array for include and exclude (#5956) (51c595a)
- resolve ES module default when resolving async components (0cd6ef3)
- ssr: inheritAttrs support in SSR (6bf9772)
- support sync modifier for v-bind="object" (#5943) (3965e50), closes #5937
- types: add declaration for inheritAttrs (1f9e924)
- types: expose $vnode (1b7ddd7)
- v-on: support v-on object syntax with no arguments (11614d6)
- weex: implement "weex.supports" api to support feature detection (#6053) (b1512d8)
Performance Improvements
2.3.3 (2017-05-09)
2.3.2 (2017-05-02)
2.3.1 (2017-05-02)
2.3.0 (2017-04-27)
2.2.6 (2017-03-27)
2.2.5 (2017-03-24)
Bug Fixes
- inject: change warn message when trying to mutate an injected value (#5243) (23a058e)
2.2.4 (2017-03-13)
2.2.3 (2017-03-13)
2.2.2 (2017-03-09)
2.2.1 (2017-02-26)
2.2.0 (2017-02-26)
Reverts
- Revert "[WIP] Support for ref callback (#4807)" (e7a2510), closes #4807
Bug Fixes
Features
- allow customization of component v-model prop/event via model option (close #4515) (9d6c8ec)
- config.performance (689c107)
- implement template option for vue-server-renderer (1c79592)
- provide/inject (close #4029) (f916bcf)
- renderError (1861ee9)
- support multi-chunk bundles in ssr bundle renderer (561447d)
2.1.10 (2017-01-17)
2.1.9 (2017-01-16)
Reverts
- Revert "also bind static special attrs as props (fix #4530)" (ab0a225), closes #4530
- Revert "Mark node with static props as static (#4662)" (4e830ba), closes #4662
2.1.8 (2016-12-28)
Reverts
- Revert "remove no longer necessary code" (fcc98d5)
- Revert "ensure leave transitions and enter transitions are triggered in the same frame (fix #4510)" (02e2d99), closes #4510
- Revert "fix enter transition flicker regression (fix #4576)" (0bb2d4e), closes #4576
2.1.7 (2016-12-24)
2.1.6 (2016-12-13)
2.1.5 (2016-12-13)
2.1.4 (2016-12-02)
2.1.3 (2016-11-24)
2.1.2 (2016-11-23)
2.1.1 (2016-11-23)
2.1.0 (2016-11-22)
2.0.8 (2016-11-20)
2.0.7 (2016-11-16)
2.0.6 (2016-11-15)
Reverts
- Revert "fix #4041, warn overriding Vue's internal methods (#4111)" (1bcc571), closes #4041 #4111
2.0.5 (2016-11-05)
2.0.4 (2016-11-04)
2.0.3 (2016-10-13)
2.0.2 (2016-10-12)
Reverts
- Revert "fix select multiple first option auto-selected in Chrome/FF (fix #3852)" (d0cfd54), closes #3852
2.0.1 (2016-09-30)
2.0.0 (2016-09-30)
Reverts
- Revert "support transition on component with v-show in root node (fix #3431)" (68be112), closes #3431
Reverts
- Revert "remove parser pre/post transforms (not used)" (bee95f8)
Reverts
- Revert "simplify array change detection" (5b30f3e)