Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

vue-template-compiler

vuejs11mMIT2.7.16TypeScript support: included

template compiler for Vue 2.0

vue, compiler

readme

vue-template-compiler

This package is auto-generated. For pull requests please see src/platforms/web/entry-compiler.js.

This package can be used to pre-compile Vue 2.0 templates into render functions to avoid runtime-compilation overhead and CSP restrictions. In most cases you should be using it with vue-loader, you will only need it separately if you are writing build tools with very specific needs.

Installation

npm install vue-template-compiler
const compiler = require('vue-template-compiler')

API

compiler.compile(template, [options])

Compiles a template string and returns compiled JavaScript code. The returned result is an object of the following format:

{
  ast: ?ASTElement, // parsed template elements to AST
  render: string, // main render function code
  staticRenderFns: Array<string>, // render code for static sub trees, if any
  errors: Array<string> // template syntax errors, if any
}

Note the returned function code uses with and thus cannot be used in strict mode code.

Options

  • outputSourceRange new in 2.6

    • Type: boolean
    • Default: false

    Set this to true will cause the errors returned in the compiled result become objects in the form of { msg, start, end }. The start and end properties are numbers that mark the code range of the error source in the template. This can be passed on to the compiler.generateCodeFrame API to generate a code frame for the error.

  • whitespace

    • Type: string
    • Valid values: 'preserve' | 'condense'
    • Default: 'preserve'

    The default value 'preserve' handles whitespaces as follows:

    • A whitespace-only text node between element tags is condensed into a single space.
    • All other whitespaces are preserved as-is.

    If set to 'condense':

    • A whitespace-only text node between element tags is removed if it contains new lines. Otherwise, it is condensed into a single space.
    • Consecutive whitespaces inside a non-whitespace-only text node are condensed into a single space.

    Using condense mode will result in smaller compiled code size and slightly improved performance. However, it will produce minor visual layout differences compared to plain HTML in certain cases.

    This option does not affect the <pre> tag.

    Example:

    <!-- source -->
    <div>
      <span>
        foo
      </span>   <span>bar</span>
    </div>
    
    <!-- whitespace: 'preserve' -->
    <div> <span>
      foo
      </span> <span>bar</span> </div>
    
    <!-- whitespace: 'condense' -->
    <div><span> foo </span> <span>bar</span></div>
  • modules

    It's possible to hook into the compilation process to support custom template features. However, beware that by injecting custom compile-time modules, your templates will not work with other build tools built on standard built-in modules, e.g vue-loader and vueify.

    An array of compiler modules. For details on compiler modules, refer to the ModuleOptions type in flow declarations and the built-in modules.

  • directives

    An object where the key is the directive name and the value is a function that transforms an template AST node. For example:

    compiler.compile('<div v-test></div>', {
      directives: {
        test (node, directiveMeta) {
          // transform node based on directiveMeta
        }
      }
    })

    By default, a compile-time directive will extract the directive and the directive will not be present at runtime. If you want the directive to also be handled by a runtime definition, return true in the transform function.

    Refer to the implementation of some built-in compile-time directives.

  • preserveWhitespace Deprecated since 2.6

    • Type: boolean
    • Default: true

    By default, the compiled render function preserves all whitespace characters between HTML tags. If set to false, whitespace between tags will be ignored. This can result in slightly better performance but may affect layout for inline elements.


compiler.compileToFunctions(template)

Similar to compiler.compile, but directly returns instantiated functions:

{
  render: Function,
  staticRenderFns: Array<Function>
}

This is only useful at runtime with pre-configured builds, so it doesn't accept any compile-time options. In addition, this method uses new Function() so it is not CSP-compliant.


compiler.ssrCompile(template, [options])

2.4.0+

Same as compiler.compile but generates SSR-specific render function code by optimizing parts of the template into string concatenation in order to improve SSR performance.

This is used by default in vue-loader@>=12 and can be disabled using the optimizeSSR option.


compiler.ssrCompileToFunctions(template)

2.4.0+

Same as compiler.compileToFunction but generates SSR-specific render function code by optimizing parts of the template into string concatenation in order to improve SSR performance.


compiler.parseComponent(file, [options])

Parse a SFC (single-file component, or *.vue file) into a descriptor (refer to the SFCDescriptor type in flow declarations). This is used in SFC build tools like vue-loader and vueify.


compiler.generateCodeFrame(template, start, end)

Generate a code frame that highlights the part in template defined by start and end. Useful for error reporting in higher-level tooling.

Options

pad

pad is useful when you are piping the extracted content into other pre-processors, as you will get correct line numbers or character indices if there are any syntax errors.

  • with { pad: "line" }, the extracted content for each block will be prefixed with one newline for each line in the leading content from the original file to ensure that the line numbers align with the original file.
  • with { pad: "space" }, the extracted content for each block will be prefixed with one space for each character in the leading content from the original file to ensure that the character count remains the same as the original file.

changelog

2.7.16 Swan Song (2023-12-24)

Bug Fixes

  • lifecycle: ensure component effect scopes are disconnected (56ce7f8), closes #13134

2.7.16-beta.2 (2023-12-14)

Bug Fixes

2.7.16-beta.1 (2023-12-08)

Bug Fixes

2.7.15 (2023-10-23)

Bug Fixes

  • compiler-sfc: add semicolon after defineProps statement (#12879) (51fef2c)
  • compiler-sfc: fix macro usage in multi-variable declaration (#12873) (d27c128)
  • compiler-sfc: Optimize the value of emitIdentifier (#12851) (bb59751)
  • compiler-sfc: Resolve object expression parsing errors in v-on (#12862) (b8c8b3f)
  • lifecycle: scope might changed when call hook (#13070) (74ca5a1)
  • patch: clone insert hooks to avoid being mutated during iteration (#12905) (c223634)
  • types/sfc: improve the type inference using withDefaults (#12872) (099401e)
  • types: correct serverPrefetch this type (#13068) (67c1d26), closes #12488

2.7.14 (2022-11-09)

Bug Fixes

  • compiler-sfc: fix template usage check edge case for v-slot destructured default value (#12842) (5e3d4e9), closes #12841
  • provide/inject: do not mutate original provide options during merge (d1899ca), closes #12854
  • reactivity: avoid using WeakMap for IE compatibility (29b5f58), closes #12837
  • types: fix spreading VNodeData in tsx (#12789) (f7db7f3), closes #12778
  • types: stricter type condition for EventHandlers (#12840) (0b3cf7d), closes #12832

2.7.13 (2022-10-14)

Bug Fixes

  • effectScope: calling off() of a detached scope should not break currentScope (800207c), closes #12825
  • types: style attribute svg (#12800) (8e26261)
  • watch: avoid traversing objects that are marked non-reactive (#12806) (5960f05)

2.7.12 (2022-10-12)

Reverts

2.7.11 (2022-10-11)

Bug Fixes

  • build: enforce LF line ending in built files (738f4b3), closes #12819
  • compiler-sfc: export parseComponent for compat with fork-ts-checker-webpack-plugin (0d6d972), closes #12719
  • reactivity: check skip first before checking ref when creating observer (#12813) (5d26f81), closes #12812
  • reactivity: use WeakMap for proxy/raw checks, compat with non-extensible objects (4a0d88e), closes #12799 #12798
  • setup: setup hook should be called before beforeCreate (e1342df), closes #12802
  • sfc: prune returned bindings for non-TS as well (fb13930), closes #12765
  • sfc: remove sfc scoped deep syntax deprecation warnings (2f335b2)
  • types: fix error with options watch (#12779) (bc5b92a), closes #12780
  • types: support Ref and function types in tsx ref attribute (#12759) (87f69aa), closes #12758
  • types: vue 3 directive type compatibility (#12792) (27eed82)

Performance Improvements

  • improve unsub perf for deps with massive amount of subs (8880b55), closes #12696

2.7.10 (2022-08-23)

Bug Fixes

2.7.9 (2022-08-19)

Bug Fixes

  • compiler-sfc: allow full hostnames in asset url base (#12732) (5c742eb), closes #12731
  • compiler-sfc: rewriteDefault for class with decorators (#12747) (5221d4d)
  • directives shorthand normalize error (#12744) (2263948), closes #12743
  • ensure render watcher of manually created instance is correctly tracked in owner scope (bd89ce5), closes #12701
  • fix effect scope tracking for manually created instances (7161176), closes #12705
  • ssr: fix on-component directives rendering (#12661) (165a14a), closes #10733
  • types: allow attaching unknown options to defined component (b4bf4c5), closes #12742
  • types: fix missing error for accessing undefined instance properties (8521f9d), closes #12718
  • types: fix options suggestions when using defineComponent (4b37b56), closes #12736
  • types: Make SetupBindings optional on ExtendedVue and CombinedVueInstance (#12727) (00458cd), closes #12726 #12717
  • watch: avoid pre watcher firing on unmount (f0057b1), closes #12703

Features

2.7.8 (2022-07-22)

Bug Fixes

  • reactivity: fix shallowReactive nested ref setting edge cases (2af751b), closes #12688
  • sfc: align <script setup> component resolution edge case with v3 (#12687) (a695c5a), closes #12685
  • types: avoid circular type inference between v2 and v3 instance types (fabc1cf), closes #12683
  • types: export defineAsyncComponent type (#12684) (ba7dd2c)

Features

  • setup: support listeners on setup context + useListeners() helper (adf3ac8)

2.7.7 (2022-07-16)

Bug Fixes

  • codegen: script setup should not attempt to resolve native elements as component (e8d3a7d), closes #12674
  • inject: fix edge case of provided with async-mutated getters (ea5d0f3), closes #12667
  • setup: ensure setup context slots can be accessed immediately (67760f8), closes #12672
  • types: vue.d.ts should use relative import to v3-component-public-instance (#12668) (46ec648), closes #12666
  • watch: fix queueing multiple post watchers (25ffdb6), closes #12664

2.7.6 (2022-07-15)

Bug Fixes

  • types: $refs can also contain ComponentPublicInstance (#12659) (fffbb9e)
  • types: fix $children and $root instance types (52a5979), closes #12655
  • types: fix missing expose() type on setup context (e0a9546), closes #12660

2.7.5 (2022-07-13)

Bug Fixes

  • add missing export from vue.runtime.mjs (#12648) (08fb4a2)
  • detect property add/deletion on reactive objects from setup when used in templates (a6e7498)
  • do not set currentInstance in beforeCreate (0825d30), closes #12636
  • reactivity: fix watch behavior inconsistency + deep ref shallow check (98fb01c), closes #12643
  • sfc: fix sfc name inference type check (04b4703), closes #12637
  • types: support Vue interface augmentations in defineComponent (005e52d), closes #12642
  • watch: fix deep watch for structures containing raw refs (1a2c3c2), closes #12652

2.7.4 (2022-07-08)

Bug Fixes

  • build: fix mjs dual package hazard (012e10c), closes #12626
  • compiler-sfc: use safer deindent default for compatibility with previous behavior (b70a258)
  • pass element creation helper to static render fns for functional components (dc8a68e), closes #12625
  • ssr/reactivity: fix array setting error at created in ssr [#12632] (#12633) (ca7daef)
  • types: fix missing instance properties on defineComponent this (f8de4ca), closes #12628
  • types: fix this.$slots type for defineComponent (d3add06)
  • types: fix type inference when using components option (1d5a411)
  • types: global component registration type compat w/ defineComponent (26ff4bc), closes #12622
  • watch: fix watchers triggered in mounted hook (8904ca7), closes #12624

Features

2.7.3 (2022-07-06)

Bug Fixes

2.7.2 (2022-07-05)

Bug Fixes

  • compiler-sfc: preserve old deindent behavior for pug (1294385), closes #12611

Features

2.7.1 (2022-07-04)

Bug Fixes

2.7.0 (2022-07-01)

Backported Features

In addition, the following APIs are also supported:

  • defineComponent() with improved type inference (compared to Vue.extend)
  • h(), useSlot(), useAttrs(), useCssModules()
  • set(), del() and nextTick() are also provided as named exports in ESM builds.
  • The emits option is also supported, but only for type-checking purposes (does not affect runtime behavior)

    2.7 also supports using ESNext syntax in template expressions. When using a build system, the compiled template render function will go through the same loaders / plugins configured for normal JavaScript. This means if you have configured Babel for .js files, it will also apply to the expressions in your SFC templates.

Notes on API exposure

  • In ESM builds, these APIs are provided as named exports (and named exports only):

    import Vue, { ref } from 'vue'
    
    Vue.ref // 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>).

TypeScript Changes

  • defineComponent provides improved type inference similar to that of Vue 3. Note the type of this inside defineComponent() is not interoperable with this from Vue.extend().

  • Similar to Vue 3, TSX support is now built-in. If your project previously had manual JSX type shims, make sure to remove them.

Upgrade Guide

Vue CLI / webpack

  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 component rendering (#9673) (8082d2f), closes #9643
  • ssr: not push non-async css files into map (#9677) (d282400)
  • transition: fix appear check for transition wrapper components (#9668) (4de4649)
  • v-bind object should be overridable by single bindings (#9653) (0b57380), closes #9641

2.6.8 (2019-03-01)

Bug Fixes

  • avoid compression of unicode sequences by using regexps (#9595) (7912f75), closes #9456
  • compiler: set end location for incomplete elements (#9598) (cbad54a)
  • fix modifier parsing for dynamic argument with deep path (#9585) (060c3b9), closes #9577
  • further adjust max stack size (571a488), closes #9562
  • handle async component when parent is toggled before resolve (#9572) (ed34113), closes #9571
  • scoped slots dynamic check should include v-for on element itself (2277b23), closes #9596
  • types: allow scoped slots to return a single VNode (#9563) (241eea1)
  • types: update this for nextTick api (#9541) (f333016)

2.6.7 (2019-02-21)

Bug Fixes

  • #9511: avoid promise catch multiple times (#9526) (2f3020e), closes #9511 #9511 #9511 #9511
  • avoid errors thrown during dom props update (8a80a23), closes #9459
  • avoid possible infinite loop by accessing observables in error handler (#9489) (ee29e41)
  • compiler: handle negative length in codeframe repeat (7a8de91)
  • ensure generated scoped slot code is compatible with 2.5 (7ec4627), closes #9545
  • ensure scoped slots update in conditional branches (d9b27a9), closes #9534
  • scoped slots should update when inside v-for (8f004ea), closes #9506

2.6.6 (2019-02-12)

Bug Fixes

  • ensure scoped slot containing passed down slot content updates properly (21fca2f)
  • fix keyCode check for Chrome autofill fake key events (29c348f), closes #9441

2.6.5 (2019-02-11)

Bug Fixes

  • allow passing multiple arguments to scoped slot (e7d49cd), closes #9468
  • bail out of event blocking for iOS bug (0bad7e2), closes #9462
  • do not cache scoped slots when mixed with normal slots (060686d)

2.6.4 (2019-02-08)

Bug Fixes

  • avoid breaking avoriaz edge case (9011b83)
  • avoid logging same error twice when thrown by user in global handler (ca57920), closes #9445
  • empty scoped slot should return undefined (57bc80a), closes #9452
  • expose v-slot slots without scope on this.$slots (0e8560d), closes #9421 #9458
  • new syntax slots without scope should also be exposed on functional slots() (8a80086)

Performance Improvements

  • cache result from functional ctx.slots() calls (7a0dfd0)
  • skip scoped slots normalization when possible (099f3ba)

2.6.3 (2019-02-06)

Bug Fixes

  • async component should use render owner as force update context (b9de23b), closes #9432
  • avoid exposing internal flags on $scopedSlots (24b4640), closes #9443
  • bail out scoped slot optimization when there are nested scopes (4d4d22a), closes #9438
  • compiler: fix v-bind dynamic arguments on slot outlets (96a09aa), closes #9444
  • skip microtask fix if event is fired from different document (dae7e41), closes #9448
  • skip microtask fix in Firefix <= 53 (7bc88f3), closes #9446
  • types: add Vue.version to types (#9431) (54e6a12)

Reverts

  • feat: expose all scoped slots on this.$slots (d5ade28)

2.6.2 (2019-02-05)

Bug Fixes

  • always set transformed model value on attrs (b034abf)
  • restore slot-scope + v-if behavior (44a4ca3), closes #9422

Features

  • expose all scoped slots on this.$slots (0129b0e), closes #9421

2.6.1 (2019-02-04)

Bug Fixes

2.6.0 (2019-02-04)

Bug Fixes

  • allow more enumerated values for contenteditable (e632e9a), closes #9397
  • fix child forceUpdate regression (44a17ba), closes #9396
  • fix v-bind:style for camelCase properties with !important (#9386) (539e481)
  • template v-slot should work with v-else conditions (2807fd2)

Features

  • move v-bind.prop shorthand behind flag (64f863b)

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 primitive and falsy values in createElement children (#9154) (d780dd2), closes #8498
  • v-model: properly handle multiline v-model expressions (#9184) (3d44937), closes #9183
  • weex: support data class type that is string (#9139) (d8285c5), closes #9124

Performance Improvements

  • skip normalization on single child element v-for (4074104)

Reverts

  • "chore: use keypress in TodoMVC example for IME input methods (#9172)" (80fb6b8)

2.5.20 (2018-12-10)

Bug Fixes

2.5.19 (2018-12-09)

Bug Fixes

  • ssr: should not warn for custom directives that do not have ssr implementation (780dac5), closes #9167
  • vdom: remove unnecessary sameVnode condition (0d4b35f), closes #9168

Reverts

  • fix(sfc): avoid deindent when pad option is specified (#7647) (5d721a4)

2.5.18 (2018-12-07)

Bug Fixes

  • compiler: fix codegen for v-for component inside template (1b4a8a0), closes #9142
  • fix keyName checking for space and delete in IE11 (#9150) (0ed0aad), closes #9112
  • ssr: fix ssr template publicPath generation (f077ed1), closes #9145
  • transition-group: fix activeInstance regression (8a2dbf5), closes #9151
  • types: correct scopedSlot types (#9131) (448ba65), closes #8946
  • types: type support for advanced async components (#8438) (dfaf9e2)

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 <pre> (#8965) (05001e6), closes #8950
  • compiler: templates inside v-pre should be rendered to HTML (#8146) (ecac831), closes #8041
  • component: clean up memory leak after loading async component completes (fix #8740) (#8755) (2e472c5)
  • core: avoid mutating original children when cloning vnode (097f622), closes #7975
  • core: properly handle reused vnodes (530ca1b), closes #7913
  • core: skip mixins and extends if child is already merged (#8870) (80f17fa), closes #8865
  • data: skip recursive call if values are identical (#8967) (a7658e0)
  • error handling: handle errors on immediate watcher execution (#8581) (2686818), closes #8567
  • fix potential xss vulnerability in ssr when using v-bind (3d36a44)
  • fix server env detection in wechat mini program (#9075) (05e8bcf)
  • for: use IE compatible regex in v-for regex (#8048) (ecc239e), closes #7946
  • handle undefined style properties in jsdom (fix #7444) (#8281) (5cfdf1a)
  • lifecycle: updated should not be called after component being destroyed (#8381) (a64ff19), closes #8076
  • make sure global state is restored in the case of an exception in macrotask callback (#9093) (b111de4)
  • parser: allow CRLFs in string interpolations (#8408) (8f04135), closes #8103
  • replace hardcoded .parentNode with abstract ops, fix #8713 (#8714) (1e1ce0c)
  • server: use path.posix.join to generate public path (#8177) (46b8d2c), closes #8167
  • sfc: avoid deindent when pad option is specified (#7647) (9d2f9a0)
  • shared: check dates in looseEqual (#7940) (db7287c), closes #7928
  • ssr: adjust call stack size defer threshold (e4b1b57), closes #8545
  • ssr: check js assets more accurate in ssr webpack plugin (#8639) (5624278)
  • ssr: computed properties should pass vm as first argument in ssr (#9090) (33e669b), closes #8977
  • ssr: fix double escaping of staticClass values (#7859) (#8037) (c21b89e)
  • ssr: remove trailing hash in webpack module identifier when (ae6dcd6)
  • ssr: render initial and used async css chunks (#7902) (575b6e7), closes #7897
  • ssr: resolve server directives the same as on client (#9129) (3078352), closes #8961
  • support modifier combination of click.right + .once (#8492) (eb60452)
  • transition: check existence of el.parentNode (#8422) (0b16927), closes #8199
  • transition: handle local-formatted floats in toMs function. (#8495) (59d4351), closes #4894
  • transition: transition-group should only listen for first-level children's end events (#8374) (504d5da)
  • types: accept number type as key on Vue.set/delete (#8707) (#8709) (0ba79e2)
  • types: fix 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 respected (de42278), closes vue-router#1338
  • invoke component node create hooks before insertion (#7823) (f43ce3a), closes #7531
  • observer: invoke getters on initial observation if setter defined (#7828) (7a145d8)

Performance Improvements

  • avoid unnecessary re-renders when computed property value did not change (#7824) (653aac2), closes #7767

Reverts

  • Revert "refactor: remove unnecessary checks (#7875)" (903be9b), closes #7875

2.5.16 (2018-03-13)

Bug Fixes

  • allow multiline expression in v-for (71b4b25), closes #7792
  • core: Make set/delete warning condition for undefined, null and (#7818) (9084747), closes #7452
  • fix keyName checking for arrow keys in IE11 (4378fc5), closes #7806
  • fix regression on duplicate component init when using shared data objects (984927a), closes #7805
  • fix wrongly matched named slots in functional components (62a922e), closes #7817
  • keep-alive: run prune after render for correct active component check (215f877), closes #7566
  • model: fix static input type being overwritten by v-bind object (#7819) (a6169d1), closes #7811
  • named slots for nested functional components (6dd73e9), closes #7710
  • ssr: fix SSR for async functional components (882e719), closes #7784
  • ssr: fix v-show inline style rendering when style binding is array (#7814) (1a979c4), closes #7813

2.5.15 (2018-03-10)

Bug Fixes

  • do not traverse VNodes when registering dependencies (84a9a9d), closes #7786

2.5.14 (2018-03-09)

Bug Fixes

  • address potential regex backtrack (cd33407)
  • allow codebase to be inlined directly in HTML (#7314) (dccd182), closes #7298
  • always install composition event listeners (f7ca21e), closes #7367
  • clean up custom events when patched component no longer have events (d8b0838), closes #7294
  • codegen: support filters with () in older browsers (#7545) (dc97a39), closes #7544
  • core: disable dependency collection in lifecycle hooks and data getter (#7596) (318f29f), closes #7573
  • core: handle edge cases for functional component returning arrays (8335217), closes #7282
  • do not special case attributes for custom elements (50b711a), closes #6864 #6885
  • fix config.productionTip (ced00b1), closes #7565
  • fix ssr env detection in weex (#7375) (3eb37ac)
  • inject: use hasOwn instead of 'in' for provideKey check (#7460) (733c1be), closes #7284
  • install ssr helpers for functional context during SSR (9b22d86), closes #7443 nuxt/nuxt.js#2565
  • model: fix array index binding for v-model checkbox (#7671) (550c3c0), closes #7670
  • observer: do not invoke getters on initial observation (#7302) (7392dfc), closes #7280
  • ref: allow ref key to be zero (#7676) (e396eb3), closes #7669
  • respect type order when boolean casting multi-typed props (81e1e47), closes #7485
  • show: prevent transitions from starting on change truthy values (#7524) (013d980), closes #7523
  • skip v-model & value binding collision check with dynamic type binding (#7406) (1c0b4af), closes #7404
  • support KeyboardEvent.key in built-in keyboard event modifiers (#7121) (1c8e2e8), closes #6900
  • transition: should not add transition class when cancelled (#7391) (5191f13), closes #7390
  • types: add missing listeners type on RenderContext (#7584) (db1b18c)
  • types: contravariant generic default in ComponentOption (#7369) (6ee6849)
  • types: fix wrong errorCaptured type (#7712) (6b8516b)
  • types: make render option in functional components to optional (#7663) (b2092db)
  • types: make VNodeChildrenArrayContents type more accurate (#7287) (49aae6b)
  • types: prefer normal component over functional one (#7687) (144bf5a)
  • v-model: handle trailing whitespaces in expression (#7737) (db58493)
  • v-on: return handler value when using modifiers (#7704) (6bc75ca)
  • vdom: svg inside foreignObject should be rendered with correct namespace (fix #7330) (#7350) (0529961)
  • weex: default value for editor, fix #7165 (#7286) (e055df8)

Features

  • support v-model dynamic type binding for v-bind="object" (41838c8), closes #7296
  • weex: adjust framework entry APIs and add flow annotations (#7272) (472a289)
  • weex: support parse object literal in binding attrs and styles (#7291) (ff8fcd2)
  • weex: update new syntax for <recycle-list> (7cc0b55)
  • weex: update weex recycle-list compiler (#7610) (d6200d7)

2.5.13 (2017-12-19)

Reverts

  • Revert "feat: auto cache inline prop literals to avoid child re-render" (aac7634)

2.5.12 (2017-12-19)

Bug Fixes

  • warning: allow symbol as vdom key (#7271) (bacb911)
  • weex: append as tree by default for recycle-list and cell-slot (#7216) (d544d05)
  • weex: update recycle-list v-for transform (0ee81b2)

Features

  • $compiler: compile weex native directives in preTransformNode (2d09ee3)
  • $compiler: supports compiling v-bind to the weex native directive in recycle-list (8b893c1)
  • $compiler: supports compiling v-else-if and v-else to the weex native directive (2a1ce0d)
  • $compiler: supports compiling v-for to the weex native directive (9bd1483)
  • $event: support binding parameters on event handler within weex recycle-list (acdc3c4)
  • auto cache inline prop literals to avoid child re-render (996eb00)
  • compile: supports compiling v-if to the weex native directive (7ad368e)
  • types: extract VueConfiguration type for easy expansion (#7273) (#7274) (c0d516c)
  • weex: generate "@render" function for weex recycle-list (#6987) (0c11aa8)
  • weex: partially support lifecycles of virtual component (#7242) (661bfe5)
  • weex: pass stateless component test case (452a65c)
  • weex: recycle-list support stateful child component (70b97ac)
  • weex: recycle-list support WIP (5254ee3)
  • weex: split text into separate module (c104cc5)
  • weex: support compiling v-on in the weex native directive (#6892) (2cb8ea3)
  • weex: update weex utils (#7115) (3b32652)
  • weex: WIP adjust component transform stage (62e47c9)
  • weex: WIP fix flow + handle errors in recycle-list template render (5c2ce00)
  • weex: WIP implement virtual component (#7165) (b8d33ec)
  • weex: WIP invoke recycle-list child component with backing instance (801f793)
  • weex: WIP mark recycle list child component root (88f3889)
  • wip: recycle list template inline expand (ac99957)

Reverts

  • revert prop object validation (01c0750), closes #7279
  • weex: remove the "receiveTasks" api and support component hook (#7053) (0bf0cbe)

2.5.11 (2017-12-14)

Bug Fixes

  • avoid unnecessary lowercase coersion in component name validation (3f0c628), closes #7237

Features

  • warn misspelled keys on prop validation object (#7198) (d02bb37)

2.5.10 (2017-12-12)

Bug Fixes

  • core: warn duplicate keys in all cases (#7200) (023f171), closes #7199
  • data() should be called with vm as first argument in mixins (bd4819e), closes #7191
  • more consistent component naming warnings across the API (644274c), closes #7212
  • revert shared static tree cache to avoid memory leak (5875c7c), closes #7184
  • should not update in-focus input value with lazy modifier (60da366), closes #7153
  • ssr: fix double escaping of ssrNode attribute values (#7224) (73a89bf), closes #7223
  • ssr: properly handle errors in async component (8936b8d), closes #6778
  • v-for: support array and nested destructuring in v-for (f5ce6b5)
  • weex: send createFinish signal after root component mounted (#7154) (0da8bce)

2.5.9 (2017-11-27)

Bug Fixes

  • block unnecessary input event on textarea placeholder in IE (0f7c443), closes #7138
  • ensure functionalContext is cloned during slot clones (604e081), closes #7106
  • fix async component resolving in sibling mounted hook (dd21eac), closes #7107
  • fix v-for iterator parsing destructuring + parens without index (aa82625)
  • keep-alive: should not destroy active instance when pruning cache (3932a45), closes #7105
  • types: add missing ssr renderToString signature (14e9908)
  • types: add Promise signature for bundleRenderer.renderToString (#7098) (3554eb2)
  • types: bump ts version and fix typing bugs (#7135) (a71e653)
  • types: improve and test bundleRenderer.renderToString Promise types (fcc1229)
  • types: use object and string instead of Object and String (#7126) (d2e1d49)

2.5.8 (2017-11-21)

Bug Fixes

  • fix v-for alias deconstruct regression (ebcef58), closes #7096

2.5.7 (2017-11-20)

Bug Fixes

  • allow traversing reactive objects which are sealed (#7080) (4c22d1d)
  • fix <keep-alive> include/exclude logic for anonymous components (a23b913)
  • improve error detector v-for identifier check (d891cd1), closes #6971
  • ssr: fix bundle renderer require path on windows (#7085) (063acb7)

Features

  • feat: add warning for ambiguous combined usage of slot-scope and v-for (c264335), closes #6817

2.5.6 (2017-11-18)

Bug Fixes

  • fix v-model :value warning on custom component (59dea37), closes #7084

2.5.5 (2017-11-17)

Bug Fixes

  • init _staticTrees to avoid runtime reference warning (f5cd29e), closes #7075
  • keep-alive should not cache anonymous components (4d8226f), closes #6938
  • should warn unknown components inside <keep-alive> (6d6b373)

Features

2.5.4 (2017-11-16)

Bug Fixes

Features

  • weex: support batch update styles and attributes (#7046) (7cf188e)

2.5.3 (2017-11-03)

Bug Fixes

  • $set should respect properties on prototype chain (83ed926), closes #6845
  • also clone component slot children during deepClone (1cf02ef), closes #6891 #6915
  • clean up target variables to avoid memory leaks (#6932) (c355319), closes #6931
  • core: static trees should be cached on options (#6826) (#6837) (b6c384d)
  • events: properly $off array of events (#6949) (c24f3e4)
  • handle encoded tabs and newlines in attributes for Chrome a[href] and IE/Edge (cfd73c2), closes #6828 #6916
  • keep-alive: higher priority for exclude than include (#6905) (604230f)
  • model: correctly set select v-model initial value on patch (#6910) (58a39df)
  • properly mark slot rendered flag in production mode (4fe1a95), closes #6997
  • slots: properly handle nested named slot passing (5a9da95), closes #6996
  • special case for static muted attribute in firefox (f2e00f7), closes #6887
  • ssr: properly render <select v-model> initial state (e1657fd), closes #6986
  • ssr: properly render textarea value (79c0d7b), closes #6986
  • ssr: should not optimize root if conditions (4ad9a56), closes #6907
  • types: improve typing for better completion (#6886) (98ea0a3)
  • typing: relax $options type for TS2.6+ (#6819) (9caed00)
  • v-model: v-if / v-else not working with :type + v-model (#6955) (0c703e3), closes #6918
  • weex: stop trim css units in richtext component (#6927) (8a784d8)

2.5.2 (2017-10-13)

Bug Fixes

2.5.1 (2017-10-13)

Bug Fixes

  • backwards compat with checkbox code generated in < 2.5 (5665eaf), closes #6803
  • fix empty array edge case in normalizeChildren (1f84dd1), closes #6790
  • ssr: add semicolon before self-removal script (#6794) (5a15a8d)
  • transition-group: work around rollup tree shaking (#6796) (60b1af9), closes #6792
  • v-model: allow arbitrary naems for type binding (#6802) (15031b8), closes #6800
  • v-on="object" listeners should fire after high-priority ones (08a7fb5), closes #6805

2.5.0 (2017-10-13)

Bug Fixes

  • add slot v-bind warning (#6736) (514b90b), closes #6677
  • allow an object's Symbols to be observed (#6704) (4fd2ce8)
  • compiler: warn when inline-template component has no children (fix #6703) (#6715) (baabd6d)
  • core: avoid observing VNodes (4459b87), closes #6610
  • ensure nextTick are passed to errorHandler (#6730) (ae347a5)
  • fallback to Promise in non-DOM environments (6d1f4cb)
  • fix scoped CSS for nested nodes in functional components (4216588)
  • handle errors in errorHandler (2b5c83a), closes #6714
  • properly handle v-if on <template> scoped slot (68bdbf5), closes #6725
  • prevent memory leak due to circular reference in vnodes (405d8e9), closes #6759
  • properly render value on <progress> in IE/Edge (c64f9ae), closes #6666
  • ref: preserve ref on components after removing root element (#6718) (6ad44e1), closes #6632 #6641
  • resolve async component default for native dynamic import (2876ed8), closes #6751
  • ssr: fix hydration mismatch with adjacent text node from slots (b080a14), closes vuejs/vue-loader#974
  • ssr: handle inline template compilation error (dff85b2), closes #6766
  • use correct ns inside <foreignObject> as root node (cf1ff5b), closes #6642
  • use MessageChannel for nextTick (6e41679), closes #6566 #6690
  • warn slot-scope when used as a prop (8295f71)
  • work around old Chrome bug (0f2cb09), closes #6601

Features

  • add .exact event modifier (#5977) (9734e87), closes #5976
  • add catchError option (b3cd9bc)
  • add in-browser build for vue-template-compiler (a5e5b31)
  • add max prop for <keep-alive> (2cba6d4)
  • core: call data method with this value (#6760) (3a5432a), closes #6739
  • functional component support for compiled templates (ea0d227)
  • improve template expression error message (e38d006), closes #6771
  • inject: support providing default values for injections (#6322) (88423fc)
  • make vue and basic server renderer compatible in pure js runtimes (c5d0fa0)
  • rename catchError -> errorCaptured (6dac3db)
  • rename inject alias from "name" to "from" (6893499)
  • scoped CSS support for functional components (050bb33)
  • ssr: add shouldPrefetch option (7bc899c), closes #5964
  • ssr: auto-remove initial state script if prod (#6763) (2d32b5d), closes #6761
  • ssr: renderToString return Promise (f881dd1), closes #6160
  • support denoting normal elements as scoped slot (dae173d)
  • support RegExp in ignoredElements (#6769) (795b908)
  • types: further improve Vue type declarations for canonical usage (#6391) (db138e2)
  • v-model: create non-existent properties as reactive (e1da0d5), closes #5932
  • v-model: support dynamic input type binding (f3fe012)
  • v-on automatic key inference (4987eeb)

Reverts

  • fix(v-model): fix input listener with modifier blocking v-model update (62405aa)

2.4.4 (2017-09-14)

Bug Fixes

  • ssr: fix bundleRenderer Promise rejection regression (0c9534f)
  • ssr: fix style injection regression (a2f73f2), closes #6603 #6353

2.4.3 (2017-09-13)

Bug Fixes

  • $off should ignore undefined handler argument (fa6a729), closes #6591
  • computed properties should not be cached during SSR (06741f3), closes vuejs/vuex#877
  • deep clone slot vnodes on re-render (0529040), closes #6372
  • directive: should invoke unbind & inserted on inner component root element change (538ad20), closes #6513
  • do not use MutationObserver in IE11 (844a540), closes #6466
  • ensure $attrs and $listeners are always objects (#6441) (59dbd4a), closes #6263
  • ensure outer bindings on nested HOC are properly re-applied on inner root element change (a744497)
  • handle special case for allowfullscreen on <embed> (d77b953), closes #6202
  • inherit SVG ns on component root node (#6511) (89f0d29), closes #6506
  • inject: exclude not enumerable keys of inject object (#6346) (3ee62fd), closes #6574
  • preserve slot attribute if not resolved by Vue (684cd7d), closes #6553
  • provide: provide should default to parentVal during merging (#6473) (3c21675), closes #6436
  • set value as domProp for <progress> (7116af4), closes #6561
  • ssr: address possible xss vector (5091e2c)
  • ssr: better handle v-html hydration (0f00f8f), closes #6519
  • ssr: expose context.styles when no lifecycle styles are injected (1f52a2a), closes #6353
  • ssr: fix cachedEscape memory issue (02f8b80), closes #6332
  • ssr: handle v-text/v-html with non-string value (09106f0), closes #6572
  • ssr: should also escape static text content (172dbf9), closes #6345
  • support prop type checking for primitive wrapper objects (#6450) (679cd1f), closes #6447
  • transition: consider async placeholder as valid child to return (#6369) (a43d667), closes #6256
  • types: add inject option in functional component options type (#6530) (1baa0a7)
  • types: allow variadic plugin use (#6363) (38d5218), closes #6357
  • v-model: Allow using array value with array v-model in checkboxes (#6220) (d6e6f1d), closes #6219
  • v-model: avoid unnecessary change event on select options change (d4d553c), closes #6193 #6194
  • v-model: fix input listener with modifier blocking v-model update (6f312d6), closes #6552
  • vdom: avoid diff de-opt when both head/tail are different (230c6ae), closes #6502
  • vdom: Don't replace input for text-like type change (#6344) (f76d16e), closes #6313

Features

  • weex richtext: support events and add more test cases (d627161)
  • weex richtext: support to parse styles and classList (b609642)
  • weex richtext: treat richtext as runtime components (3e4d926)
  • weex: add basic support of richtext (f1c96e7)
  • weex: remove weex_require_module api (a8146c0)
  • weex: return instance in createInstance (0dc27dc)
  • weex: support nested components in richtext (0ea2bb4)
  • weex: wrap IFFE for appCode (f975fac)

Performance Improvements

  • core: prevent iteration of arrays that should not be observable (#6467) (aa820cb), closes #6284
  • deep clone slot vnodes on re-render (#6478) (5346361)
  • optimize the performance of hyphenate method. (#6274) (14ee9e7)
  • v-model: tweak setSelected (41d774d)

2.4.2 (2017-07-21)

Bug Fixes

  • checkbox v-model="array" ignore false-value (#6180) (3d14e85), closes #6178
  • compile: properly generate comments with special character (#6156) (d03fa26), closes #6150
  • ensure looseEqual is not dependent on key enumeration order (a8ac129), closes #5908
  • include boolean in isPrimitive check (#6127) (be3dc9c), closes #6126
  • parser: only ignore the first newline in <pre> (082fc39), closes #6146
  • provide/inject: merge provide properly from mixins (3036551), closes #6175
  • provide/inject: resolve inject properly from mixins (#6107) (b0f00e3), closes #6093
  • transition: should trigger transition hooks for v-show in ie9 (9b4dbba), closes #5525
  • v-bind: respect .prop modifier on components (#6159) (06b9b0b)
  • v-model: use stricter check for <select> option update (c70addf), closes #6112
  • v-on: revert component root data.on/data.nativeOn behavior for (1713061), closes #6109
  • work around IE/Edge bug when accessing document.activeElement from iframe (fc3d7cd), closes #6157

Features

  • warn when assigning to computed property with no setter (eb9168c), closes #6078

Reverts

  • perf: remove src directory from npm module (#6072) (ec4b1be)

2.4.1 (2017-07-13)

2.4.0 (2017-07-13)

Bug Fixes

  • check enterToClass/leaveToClass existence before adding it (#5912) (34d8c79), closes #5800
  • core: add merge strategy for provide option (#6025) (306997e), closes #6008
  • core: should preserve reactivity-ness of injected objects (8d66691), closes #5913
  • ensure cleanup in watcher.get (#5988) (f6cd44c), closes #5975
  • handle arrays in v-on object syntax (086e6d9)
  • improve Vue.set/Vue.delete API to support multi type of array index (#5973) (eea0920), closes #5884
  • multiple merged vnode hooks not invoked properly (91deb4f), closes #6076
  • parser: the first newline following pre and textarea tag should be ignored (#6022) (4d68079)
  • prefetch should not have as attribute (#5683) (ebca266)
  • ref: refactor function registerRef (#6039) (254d85c), closes #5997
  • ssr: fix bundleRenderer mapped async chunks caching check (#5963) (de42186)
  • ssr: reference error when create $ssrContext for root component (#5981) (5581654), closes #5941
  • support plugin with multi version vue (#5985) (049f317), closes #5970
  • transition group should work with dynamic name (#6006) (#6019) (d8d4ca6)
  • v-bind object should not override props on scopedSlots (#5995) (458030a)
  • v-model: fix input change check for type="number" (0a9aab5), closes #6069
  • v-model: should generate component-specific code for tags with "is" attribute (a1d1145), closes #6066
  • v-model: use consistent behavior during IME composition for other text-like input types (fix #5902) (4acc8c8)

Features

  • add .editorconfig (#5691) (0cc0b07)
  • add comments option to allow preserving comments in template (#5951) (e4da249), closes #5392
  • Add defer to body scripts (#5704) (f3757eb)
  • core: $attrs, $listeners & inheritAttrs option (6118759), closes #5983
  • keep-alive: support Array for include and exclude (#5956) (51c595a)
  • resolve ES module default when resolving async components (0cd6ef3)
  • ssr: inheritAttrs support in SSR (6bf9772)
  • support sync modifier for v-bind="object" (#5943) (3965e50), closes #5937
  • types: add declaration for inheritAttrs (1f9e924)
  • types: expose $vnode (1b7ddd7)
  • v-on: support v-on object syntax with no arguments (11614d6)
  • weex: implement "weex.supports" api to support feature detection (#6053) (b1512d8)

Performance Improvements

2.3.3 (2017-05-09)

2.3.2 (2017-05-02)

2.3.1 (2017-05-02)

2.3.0 (2017-04-27)

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

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)