2.7.13 (2022-10-14)
- 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)
- Revert "fix(setup): setup hook should be called before beforeCreate" (e80cd09), closes #12802 #12821 #12822
2.7.11 (2022-10-11)
- 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)
2.7.10 (2022-08-23)
- compiler-sfc: avoid deindent when lang is jsx/tsx (46ca7bc), closes #12755
- fix parent of multi-nested HOC $el not updating (#12757) (e0b26c4), closes #12589
- types: Add missing type parameter constraints (#12754) (810f6d1)
2.7.9 (2022-08-19)
- 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
- types: enhance type for onErrorCaptured (#12735) (bba6b3d)
- types: export DefineComponent (80d1baf), closes #12748
- types: support mixins inference for new Vue() (#12737) (89a6b5e), closes #12730
2.7.8 (2022-07-22)
- 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)
- setup: support listeners on setup context +
useListeners()
helper (adf3ac8)
2.7.7 (2022-07-16)
- 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)
- 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)
- 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)
- 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
- defineAsyncComponent (9d12106), closes #12608
- support functional components in defineComponent (559600f), closes #12619
2.7.3 (2022-07-06)
- add renderTracked/Triggered merge strategy (#12616) (6d1dbee)
- ssr/reactivity: fix composition api behavior in SSR (360272b), closes #12615
- types: allow slot attribute (94ccca2), closes #12617
2.7.2 (2022-07-05)
- allow passing directive definition directly to h() (#12590) (d45bbea)
- types: define component improvements (#12612) (fb93c1b)
2.7.1 (2022-07-04)
- compiler-sfc: fix template usage check edge case for v-on statements (caceece), closes #12591
- export proxyRefs (e452e9d), closes #12600
- fix NaN comparison on state change (ff5acb1), closes #12595
- reactivity: shallowReactive should not unwrap refs (#12605) (15b9b9b), closes #12597
2.7.0 (2022-07-01)
- Composition API
- SFC
<script setup>
- SFC CSS v-bind
In addition, the following APIs are also supported:
-
defineComponent()
with improved type inference (compared toVue.extend
) -
h()
,useSlot()
,useAttrs()
,useCssModules()
-
set()
,del()
andnextTick()
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.
-
In ESM builds, these APIs are provided as named exports (and named exports only):
import Vue, { ref } from 'vue' Vue.ref // undefined, use named export instead
-
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.
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()
, andshallowReactive()
will directly convert original objects instead of creating proxies. This means:// true in 2.7, false in 3.x 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 (butdefineExpose()
is supported in<script setup>
).
-
defineComponent
provides improved type inference similar to that of Vue 3. Note the type ofthis
insidedefineComponent()
is not interoperable withthis
fromVue.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 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 removevue-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 tovue
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.
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.
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
}
}
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.
- sfc: only include legacy decorator parser plugin when new plugin is not used (326d24a)
2.7.0-beta.8 (2022-06-28)
- compiler-sfc: should transform non relative paths when base option is present (008d78b)
2.7.0-beta.7 (2022-06-27)
2.7.0-beta.6 (2022-06-26)
- reactivity: readonly() compat with classes (44ab1cd), closes #12574
- watch: template ref watcher should fire after owner instance mounted hook (089b27c), closes #12578
2.7.0-beta.5 (2022-06-22)
- 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
2.7.0-beta.4 (2022-06-21)
2.7.0-beta.3 (2022-06-20)
- 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
2.7.0-beta.2 (2022-06-17)
- compiler-sfc: do not transform external and data urls in templates (328ebff)
2.7.0-beta.1 (2022-06-17)
- compiler-sfc: expose src on custom blocks as well (cdfc4c1)
- compiler-sfc: support includeAbsolute in transformAssetUrl (8f5817a)
- warn top level await usage in
<script setup>
(efa8a74)
2.7.0-alpha.12 (2022-06-16)
- further align compiler-sfc api + expose rewriteDefault (8ce585d)
2.7.0-alpha.11 (2022-06-16)
- further align types with v3 (2726b6d)
2.7.0-alpha.10 (2022-06-16)
- avoid warning when accessing _setupProxy (cdfd9f3)
- export version as named export (749b96d)
2.7.0-alpha.9 (2022-06-16)
- defineExpose() support (3c2707b)
- directive resolution for
<script setup>
(aa2b1f4) - resolve components from
<script setup>
(4b19339) - types for
<script setup>
macros (7173ad4)
2.7.0-alpha.8 (2022-06-14)
- Basic
<script setup>
support. Requiresvue-loader@^15.10.0-beta.1
.- Component resolution doesn't work yet
- Types for
defineXXX
macros not supported yet
2.7.0-alpha.7 (2022-06-14)
2.7.0-alpha.6 (2022-06-09)
- Add JSX types for Volar integration. No longer requires
@vue/runtime-dom
for component props validation in templates.
2.7.0-alpha.5 (2022-06-06)
- fix scopedSlots regression (4f2a04e)
2.7.0-alpha.4 (2022-06-01)
- guard against non-object provide value (c319cc7)
defineComponent
206f8a7f
2.7.0-alpha.3 (2022-06-01)
2.7.0-alpha.2 (2022-06-01)
2.7.0-alpha.1 (2022-05-31)
This release includes full Composition API support, including:
setup()
support in components- Reactivity APIs (
ref()
,reactive()
etc.) - Lifecycle hooks (
onMounted()
etc.) provide()
andinject()
useSlots()
anduseAttrs()
- template refs with
setup()
- The reactivity system is still getter/setter based and does not use Proxies, so all Vue 2 change detection caveats still apply.
reactive()
,ref()
, andshallowReactive()
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.
-
In ESM builds, these APIs are provided as named exports (and named exports only):
import Vue, { ref } from 'vue' Vue.ref // undefined, use named export instead
-
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()
andnextTick()
are now also provided as named exports in ESM builds.
2.6.14 (2021-06-07)
- types: async Component types (#11906) (c52427b)
- v-slot: fix scoped slot normalization combined with v-if (#12104) (38f71de)
2.6.13 (2021-06-01)
- 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
- warns: avoid warning native modifiers on dynamic components (#11052) (3d46692)
- warn: warn computed conflict with methods (#10119) (3ad60fe)
2.6.12 (2020-08-20)
2.6.11 (2019-12-13)
- compiler: Remove the warning for valid v-slot value (#9917) (085d188)
- fix function expression regex (#9922) (569b728), closes #9920
- types: fix global namespace declaration for UMD bundle (#9912) (ab50e8e)
- types: fix prop constructor type inference (#10779) (4821149)
2.6.10 (2019-03-20)
- 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)
- 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 componet 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)
- 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)
- #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)
- 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)
- 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)
- 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)
- cache result from functional ctx.slots() calls (7a0dfd0)
- skip scoped slots normalization when possible (099f3ba)
2.6.3 (2019-02-06)
- 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)
- feat: expose all scoped slots on this.$slots (d5ade28)
2.6.2 (2019-02-05)
- always set transformed model value on attrs (b034abf)
- restore slot-scope + v-if behavior (44a4ca3), closes #9422
2.6.1 (2019-02-04)
- avoid blocking first input event in IE when it shouldn't (#9297) (0fb03b7), closes #7138 #9042 #9383
- avoid isPromise check when handler return value is Vue instance (b6b42ca), closes #9418
- compiler: fix inline-template crashing (#9365) (55bfb94), closes #9361
- decode single quotes in html attributes (#9341) (c27fe24)
- template-compiler: allow comments on the root node in templates (#9408) (1922e7d), closes #9407
- v-model: add value to $attrs if not defined in props (#9331) (66fd3c8), closes #9330
2.6.0 (2019-02-04)
- 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)
- move v-bind.prop shorthand behind flag (64f863b)
2.6.0-beta.3 (2019-01-30)
- detect and warn invalid dynamic argument expressions (c9e3a5d)
2.6.0-beta.2 (2019-01-26)
- async edge case fix should apply to more browsers (ba0ebd4)
- fix checkbox event edge case in Firefox (1868561)
- 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)
2.6.0-beta.1 (2019-01-16)
- 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)
- 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)
- 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)
- 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 primatives 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
- skip normalization on single child element v-for (4074104)
2.5.20 (2018-12-10)
- types: avoid
this
in VueConstructor signature (#9173) (e06d2af), closes /github.com/vuejs/vue-class-component/issues/294#issuecomment-445526936
2.5.19 (2018-12-09)
- ssr: should not warn for custom directives that do not have ssr implementation (780dac5), closes #9167
- vdom: remove unnecessary sameVnode condition (0d4b35f), closes #9168
2.5.18 (2018-12-07)
- 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)
2.5.18-beta.0 (2018-12-02)
- 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
(#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)
- add async option (#8240) (c944827)
- devtools: store functional render context on vnode in development (#8586) (4ecc21c)
- server, webpack-plugin: webpack 4 support (#7839) (ef0b250)
- weex: support object syntax of class (#7930) (6226503)
- Revert "perf: avoid unnecessary re-renders when computed property value did not change (#7824)" (6b1d431), closes #7824
2.5.17-beta.0 (2018-03-23)
- 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 repsected (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)
- avoid unnecessary re-renders when computed property value did not change (#7824) (653aac2), closes #7767
2.5.16 (2018-03-13)
- 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)
2.5.14 (2018-03-09)
- 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)
- 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 (7cc0b55)
- weex: update weex recycle-list compiler (#7610) (d6200d7)
2.5.13 (2017-12-19)
- Revert "feat: auto cache inline prop literals to avoid child re-render" (aac7634)
2.5.12 (2017-12-19)
- 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)
- $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)
- revert prop object validation (01c0750), closes #7279
- weex: remove the "receiveTasks" api and support component hook (#7053) (0bf0cbe)
2.5.11 (2017-12-14)
2.5.10 (2017-12-12)
- 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)
- 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)
2.5.7 (2017-11-20)
- allow traversing reactive objects which are sealed (#7080) (4c22d1d)
- fix 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)
2.5.6 (2017-11-18)
2.5.5 (2017-11-17)
- 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 (6d6b373)
- warn if both v-model and v-bind:value used on same element (#7056) (1e14603), closes #7048 #7048 #7048
2.5.4 (2017-11-16)
- clone slot nodes for render fn usage as well (13196b2), closes #7041
- normlaize @click.right and @click.middle (daed1e7), closes #7020
- should warn unknown components during hydration (df82aeb), closes #6998
- ssr: ensure hydrated class & style bindings are reactive (5db86b4), closes #7063
- transition: fix out-in transition getting stuck with v-if (#7023) (45d7ba8), closes #6687
- types: expose VueConstructor (#7002) (267ada0)
- weex: donot rethrow the captured error on weex platform (#7024) (c2b1cfe)
2.5.3 (2017-11-03)
- $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 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 further adjust nextTick strategy (4e0c485), closes #6813 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 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
- 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 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
- 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 (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: craete non-existent properties as reactive (e1da0d5), closes #5932
- v-model: support dynamic input type binding (f3fe012)
- v-on automatic key inference (4987eeb)
- fix(v-model): fix input listener with modifier blocking v-model update (62405aa)
- ssr: fix bundleRenderer Promise rejection regression (0c9534f)
- ssr: fix style injection regression (a2f73f2), closes #6603 #6353
- $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 (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 (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
- 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)
- 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)
- 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 dependant on key enumeration order (a8ac129), closes #5908
- include boolean in isPrimitive check (#6127) (be3dc9c), closes #6126
- parser: only ignore the first newline in
(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 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 remove src directory from npm module (#6072) (e761573) 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.3.0-beta.1 (2017-04-26) 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) 2.2.0-beta.2 (2017-02-25) Reverts Revert "[WIP] Support for ref callback (#4807)" (e7a2510), closes #4807 2.2.0-beta.1 (2017-02-24) Bug Fixes sfc: component contains '<' only (#4753) (938fa4e) 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) 2.0.0-rc.8 (2016-09-27) 2.0.0-rc.7 (2016-09-23) 2.0.0-rc.6 (2016-09-13) 2.0.0-rc.5 (2016-09-08) 2.0.0-rc.4 (2016-08-29) 2.0.0-rc.3 (2016-08-20) 2.0.0-rc.2 (2016-08-16) Reverts Revert "support transition on component with v-show in root node (fix #3431)" (68be112), closes #3431 2.0.0-rc.1 (2016-08-11) 2.0.0-beta.8 (2016-08-10) 2.0.0-beta.7 (2016-08-05) 2.0.0-beta.6 (2016-08-01) 2.0.0-beta.5 (2016-07-27) Reverts Revert "remove parser pre/post transforms (not used)" (bee95f8) 2.0.0-beta.4 (2016-07-26) 2.0.0-beta.3 (2016-07-24) 2.0.0-beta.2 (2016-07-17) 2.0.0-beta.1 (2016-07-07) 2.0.0-alpha.8 (2016-06-28) 2.0.0-alpha.7 (2016-06-28) 2.0.0-alpha.6 (2016-06-22) 2.0.0-alpha.5 (2016-06-17) 2.0.0-alpha.4 (2016-06-16) 2.0.0-alpha.3 (2016-06-15) 2.0.0-alpha.2 (2016-06-13) 2.0.0-alpha.1 (2016-06-10) Reverts Revert "simplify array change detection" (5b30f3e)