vue/CHANGELOG.md
2022-07-04 18:38:35 +08:00

132 KiB

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 // 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.

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:

    // 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 (but defineExpose() is supported in <script setup>).

Upgrade Guide

Vue CLI / webpack

  1. 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
  2. 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.

  3. 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.

  4. 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.

  5. Update eslint-plugin-vue to latest version (9+) if you run into unused variable lint errors when using <script setup>.

  6. 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)

2.7.0-beta.8 (2022-06-28)

Bug Fixes

  • compiler-sfc: should transform non relative paths when base option is present (008d78b)

2.7.0-beta.7 (2022-06-27)

Bug Fixes

2.7.0-beta.6 (2022-06-26)

Bug Fixes

  • 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)

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

2.7.0-beta.4 (2022-06-21)

Bug Fixes

  • compiler-sfc: properly handle shorthand property in template expressions (9b9f2bf), closes #12566

2.7.0-beta.3 (2022-06-20)

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

2.7.0-beta.2 (2022-06-17)

Bug Fixes

  • compiler-sfc: do not transform external and data urls in templates (328ebff)

2.7.0-beta.1 (2022-06-17)

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)

2.7.0-alpha.12 (2022-06-16)

Features

  • further align compiler-sfc api + expose rewriteDefault (8ce585d)

2.7.0-alpha.11 (2022-06-16)

Bug Fixes

  • further align types with v3 (2726b6d)

2.7.0-alpha.10 (2022-06-16)

Bug Fixes

  • avoid warning when accessing _setupProxy (cdfd9f3)

Features

  • export version as named export (749b96d)

2.7.0-alpha.9 (2022-06-16)

Features

  • 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)

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

2.7.0-alpha.7 (2022-06-14)

2.7.0-alpha.6 (2022-06-09)

Features

  • 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)

Bug Fixes

  • fix scopedSlots regression (4f2a04e)

2.7.0-alpha.4 (2022-06-01)

Bug Fixes

  • guard against non-object provide value (c319cc7)

Features

2.7.0-alpha.3 (2022-06-01)

2.7.0-alpha.2 (2022-06-01)

Features

  • add exports field + mjs build (d317237)
  • expose set/del as named exports (5673363)

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() 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 // 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() 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

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 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)

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)

2.6.0-beta.3 (2019-01-30)

Features

  • detect and warn invalid dynamic argument expressions (c9e3a5d)

2.6.0-beta.2 (2019-01-26)

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)

2.6.0-beta.1 (2019-01-16)

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 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

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)

2.5.18-beta.0 (2018-12-02)

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
     (#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 renderErrorarguments 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

2.5.17-beta.0 (2018-03-23)

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 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)

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 regsitering 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 (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 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 (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 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
  • 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 (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)

    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 (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

    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 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)