Skip to content
Branch: master
Find file Copy path
Find file Copy path
3 contributors

Users who have contributed to this file

@yyx990803 @reed-jones @djy0
466 lines (304 sloc) 37.3 KB

3.0.0-alpha.10 (2020-03-24)

Bug Fixes

  • fix option merge global mixins presence check (10ad965)
  • compiler-core: assign patchFlag for template v-if fragment (a1da9c2), closes #850
  • compiler-core: support interpolation in RCDATA mode (e.g. textarea) (0831b98)
  • keep-alive: should update re-activated component with latest props (1237387)
  • reactivity: should not observe frozen objects (1b2149d), closes #867
  • reactivity: should not trigger map keys iteration when keys did not change (45ba06a), closes #877
  • runtime-core: fix boolean props validation (3b282e7)
  • runtime-dom: invalid lineGradient svg tag (#863) (d425818), closes #862
  • TransitionGroup: ignore comment node when warn (fix#869) (#875) (0dba5d4)
  • do not drop SFC runtime behavior code in global builds (4c1a193), closes #873
  • dynamic component fallback to native element (f529dbd), closes #870
  • runtime-core: fix component proxy props presence check (b3890a9), closes #864
  • suspense: clear effects on suspense resolve (ebc1ca8)
  • transition: fix duration prop validation (0dc2478), closes #868


  • asyncComponent: SSR/hydration support for async component (cba2f1a)
  • runtime-core: async component support (c3bb316)
  • runtime-core: support config.optionMergeStrategies (528621b)
  • add hook for transforming h's arguments (#851) (b7d1e0f)

Performance Improvements

  • transform-vif: don't need to createBlock for a component (#853) (a3601e9)

3.0.0-alpha.9 (2020-03-16)

Bug Fixes

  • build: remove RUNTIME_COMPILE flag (206640a), closes #817
  • compiler-core: fix property shorthand detection (586e5bb), closes #845
  • compiler-ssr: fix input w/ v-bind="obj" codegen (3b40fc5)
  • compiler-ssr: should pass necessary tag names for dynamic v-bind (a46f3b3)
  • runtime-core: always set invalid vnode type (#820) (28a9bee)
  • runtime-core: empty boolean props (#844) (c7ae269), closes #843
  • runtime-core: pass instance proxy as data() argument (#828) (d9dd1d8)
  • runtime-dom: patch xlink attribute (#842) (d318576)
  • simplify and use correct ctx in withCtx (4dc8ffc)
  • runtime-core: pass prev value to hostPatchProp (#809) (cd34603), closes #808
  • runtime-core: should allow empty string and 0 as valid vnode key (#807) (54a0e93)
  • types: app.component should accept defineComponent return type (#822) (1e9d131), closes #730

Code Refactoring

  • runtime-core: adjust patchProp value arguments order (ca5f39e)


  • compiler-core: wrap slot functions with render context (ecd7ce6)
  • compiler-sfc: add ssr option (3b2d236)
  • runtime-core: add special property to get class component options (#821) (dd17fa1)
  • runtime-core: implement RFC-0020 (bb7fa3d)
  • runtime-core: set context for manual slot functions as well (8a58dce)
  • server-renderer: render suspense in vnode mode (#727) (589aeb4)
  • ssr: compiler-ssr support for Suspense (80c625d)
  • ssr: hide comment anchors during hydration in dev mode (cad5bcc)
  • ssr: improve fragment mismatch handling (60ed4e7)
  • ssr: support getSSRProps for vnode directives (c450ede)
  • ssr/suspense: suspense hydration (a3cc970)
  • types: export ErrorTypes (#840) (760c3e0)


  • Revert "refactor(directives): remove binding.instance" (2370166)


  • runtime-core: data no longer supports object format (per RFC-0020)

  • runtime-core: RendererOptions.patchProp arguments order has changed

    The prevValue and nextValue position has been swapped to keep it consistent with other functions in the renderer implementation. This only affects custom renderers using the createRenderer API.

3.0.0-alpha.8 (2020-03-06)

Bug Fixes

  • directives: ignore invalid directive hooks (7971b04), closes #795
  • portal: fix portal placeholder text (4397528)
  • reactivity: allow effect trigger inside no-track execution contexts (274f81c), closes #804
  • reactivity: Map/Set identity methods should work even if raw value contains reactive entries (cc69fd7), closes #799
  • reactivity: should not trigger length dependency on Array delete (a306658), closes #774
  • runtime-core: ensure inhertied attrs update on optimized child root (6810d14), closes #677 #784
  • slots: fix conditional slot (3357ff4), closes #787
  • ssr: fix ssr on-the-fly compilation + slot fallback branch helper injection (3be3785)

Code Refactoring

  • runtime-core: adjust attr fallthrough behavior (e1660f4), closes #749
  • runtime-core: revert setup() result reactive conversion (e67f655)


  • compiler-core: switch to @babel/parser for expression parsing (8449a97)
  • compiler-ssr: compile portal (#775) (d8ed0e7)
  • ssr: hydration mismatch handling (91269da)


  • runtime-core: adjust attr fallthrough behavior

    Updated per pending RFC

    • Implicit fallthrough now by default only applies for a whitelist of attributes (class, style, event listeners, a11y attributes, and data attributes).

    • Fallthrough is now applied regardless of whether the component has

  • runtime-core: revert setup() result reactive conversion

    Revert 6b10f0c & a840e7d. The motivation of the original change was avoiding unnecessary deep conversions, but that can be achieved by explicitly marking values non-reactive via markNonReactive.

    Removing the reactive conversion behavior leads to an usability issue in that plain objects containing refs (which is what most composition functions will return), when exposed as a nested property from setup(), will not unwrap the refs in templates. This goes against the "no .value in template" intuition and the only workaround requires users to manually wrap it again with reactive().

    So in this commit we are reverting to the previous behavior where objects returned from setup() are implicitly wrapped with reactive() for deep ref unwrapping.

3.0.0-alpha.7 (2020-02-26)

Bug Fixes

  • renderSlot: set slot render as a STABLE_FRAGMENT (#776) (8cb0b83), closes #766
  • runtime-core: fix slot fallback + slots typing (4a5b91b), closes #773
  • runtime-core: make watchEffect ignore deep option (#765) (19a799c)
  • runtime-core: set appContext.provides to Object.create(null) (#781) (04f83fa)
  • template-explorer: rename watch -> watchEffect (#780) (59393dd)
  • template-ref: fix string template refs inside slots (3eab143)
  • types: ref value type unwrapping should happen at creation time (d4c6957)
  • types: shallowRef should not unwrap value type (3206e5d)

Code Refactoring

  • directives: remove binding.instance (52cc7e8)


  • directives: custom directive bindings no longer expose instance

    This is a rarely used property that creates extra complexity in ensuring it points to the correct instance. From a design perspective, a custom directive should be scoped to the element and data it is bound to and should not have access to the entire instance in the first place.

3.0.0-alpha.6 (2020-02-22)

Bug Fixes

  • compiler-core: should alias name in helperString (#743) (7b987d9), closes #740
  • compiler-dom: properly stringify class/style bindings when hoisting static strings (1b9b235)
  • reactivity: should trigger all effects when array length is mutated (#754) (5fac655)
  • sfc: inherit parent scopeId on child root (#756) (9547c2b)
  • types: improve ref typing, close #759 (627b9df)
  • types: update setup binding unwrap types for 6b10f0c (a840e7d), closes #738

Code Refactoring

  • preserve refs in reactive arrays (775a7c2), closes #737


  • reactivity: expose unref and shallowRef (e9024bf)
  • runtime-core: add watchEffect API (99a2e18)

Performance Improvements

  • effect: optimize effect trigger for array length mutation (#761) (76c7f54)
  • reactivity: only trigger all effects on Array length mutation if new length is shorter than old length (33622d6)


  • runtime-core: replace watch(fn, options?) with watchEffect

    The watch(fn, options?) signature has been replaced by the new watchEffect API, which has the same usage and behavior. watch now only supports the watch(source, cb, options?) signature.

  • reactivity: reactive arrays no longer unwraps contained refs

    When reactive arrays contain refs, especially a mix of refs and plain values, Array prototype methods will fail to function properly - e.g. sort() or reverse() will overwrite the ref's value instead of moving it (see #737).

    Ensuring correct behavior for all possible Array methods while retaining the ref unwrapping behavior is exceedingly complicated; In addition, even if Vue handles the built-in methods internally, it would still break when the user attempts to use a 3rd party utility function (e.g. lodash) on a reactive array containing refs.

    After this commit, similar to other collection types like Map and Set, Arrays will no longer automatically unwrap contained refs.

    The usage of mixed refs and plain values in Arrays should be rare in practice. In cases where this is necessary, the user can create a computed property that performs the unwrapping.

3.0.0-alpha.5 (2020-02-18)

Bug Fixes

  • compiler: fix v-for fragment openBlock argument (12fcf9a)
  • compiler-core: fix keep-alive when used in templates (ade07c6), closes #715
  • compiler-core: only check is prop on <component> (78c4f32)
  • compiler-core: relax error on unknown entities (730d329), closes #663
  • compiler-core: should apply text transform to if branches (e0f3c6b), closes #725
  • compiler-core: should not hoist element with cached + merged event handlers (5455e8e)
  • compiler-dom: fix duplicated transforms (9e51297)
  • compiler-sfc: handle empty nodes with src attribute (#695) (2d56dfd)
  • compiler-ssr: import helpers from correct packages (8f6b669)
  • computed: support arrow function usage for computed option (2fb7a63), closes #733
  • reactivity: avoid cross-component dependency leaks in setup() (d9d63f2)
  • reactivity: effect should handle self dependency mutations (e8e6772)
  • reactivity: trigger iteration effect on Map.set (e1c9153), closes #709
  • runtime-core: ensure renderCache always exists (8383e54)
  • runtime-core: fix keep-alive tree-shaking (5b43764)
  • runtime-core: fix ShapeFlags tree shaking (0f67aa7)
  • runtime-core: handle component updates with only class/style bindings (35d91f4)
  • runtime-core: render context set should not unwrap reactive values (27fbfbd)
  • runtime-core: rework vnode hooks handling (cfadb98), closes #684
  • runtime-core: should not return early on text patchFlag (778f3a5)
  • runtime-core/scheduler: avoid duplicate updates of child component (8a87074)
  • runtime-core/scheduler: invalidate job (#717) (fe9da2d)
  • runtime-core/watch: trigger watcher with undefined as initial value (#687) (5742a0b), closes #683
  • runtime-dom/ssr: properly handle xlink and boolean attributes (e6e2c58)
  • ssr: avoid hard-coded ssr checks in cjs builds (bc07e95)
  • ssr: fix class/style rendering + ssrRenderComponent export name (688ad92)
  • ssr: render components returning render function from setup (#720) (4669215)
  • transition-group: handle multiple move-classes (#679) (5495c70), closes #678
  • types: app.component should accept defineComponent return type (57ee5df), closes #730
  • types: ensure correct oldValue typing based on lazy option (c6a9787), closes #719
  • v-on: transform click.right and click.middle modifiers (028f748), closes #735
  • remove effect from public API (4bc4cb9), closes #712
  • v-model: should use dynamic directive on input with dynamic v-bind (1f2de9e)

Code Refactoring

  • watch: adjust watch API behavior (9571ede)


  • compiler: mark hoisted trees with patchFlag (175f8aa)
  • compiler: warn invalid children for transition and keep-alive (4cc39e1)
  • compiler-core: support mode: cjs in codegen (04da2a8)
  • compiler-core/v-on: support @vnode-xxx usage for vnode hooks (571ed42)
  • compiler-dom: handle constant expressions when stringifying static content (8b7c162)
  • compiler-dom/runtime-dom: stringify eligible static trees (27913e6)
  • reactivity: add shallowReactive function (#689) (7f38c1e)
  • runtime-core/reactivity: expose shallowReactive (#711) (21944c4)
  • server-renderer: support on-the-fly template compilation (#707) (6d10a6c)
  • ssr: render portals (#714) (e495fa4)
  • ssr: support portal hydration (70dc3e3)
  • ssr: useSSRContext (fd03149)

Performance Improvements

  • prevent renderer hot functions being inlined by minifiers (629ee75)
  • reactivity: better computed tracking (#710) (8874b21)


  • watch: watch behavior has been adjusted.

    • When using the watch(source, callback, options?) signature, the callback now fires lazily by default (consistent with 2.x behavior).

      Note that the watch(effect, options?) signature is still eager, since it must invoke the effect immediately to collect dependencies.

    • The lazy option has been replaced by the opposite immediate option, which defaults to false. (It's ignored when using the effect signature)

    • Due to the above changes, the watch option in Options API now behaves exactly the same as 2.x.

    • When using the effect signature or { immediate: true }, the initial execution is now performed synchronously instead of deferred until the component is mounted. This is necessary for certain use cases to work properly with async setup() and Suspense.

      The side effect of this is the immediate watcher invocation will no longer have access to the mounted DOM. However, the watcher can be initiated inside onMounted to retain previous behavior.

3.0.0-alpha.4 (2020-01-27)

Bug Fixes

  • reactivity: Array methods relying on identity should work with raw values (aefb7d2)
  • runtime-core: instance should not expose non-declared props (2884831)
  • runtime-dom: should not access document in non-browser env (48152bc), closes #657
  • v-model/emit: update:camelCase events should trigger kebab case equivalent (2837ce8), closes #656

Code Refactoring

  • adjust createApp related API signatures (c07751f)
  • remove implicit reactive() call on renderContext (6b10f0c)

Performance Improvements

  • ssr: avoid unnecessary async overhead (297282a)


  • object returned from setup() are no longer implicitly passed to reactive().

    The renderContext is the object returned by setup() (or a new object if no setup() is present). Before this change, it was implicitly passed to reactive() for ref unwrapping. But this has the side effect of unnecessary deep reactive conversion on properties that should not be made reactive (e.g. computed return values and injected non-reactive objects), and can lead to performance issues.

    This change removes the reactive() call and instead performs a shallow ref unwrapping at the render proxy level. The breaking part is when the user returns an object with a plain property from setup(), e.g. return { count: 0 }, this property will no longer trigger updates when mutated by a in-template event handler. Instead, explicit refs are required.

    This also means that any objects not explicitly made reactive in setup() will remain non-reactive. This can be desirable when exposing heavy external stateful objects on this.

  • createApp API has been adjusted.

    • createApp() now accepts the root component, and optionally a props object to pass to the root component.
    • app.mount() now accepts a single argument (the root container)
    • app.unmount() no longer requires arguments.

    New behavior looks like the following:

    const app = createApp(RootComponent)

3.0.0-alpha.3 (2020-01-22)

Bug Fixes

  • Suspense should include into dynamic children (#653) (ec63623), closes #649
  • compiler-core: avoid override user keys when injecting branch key (#630) (aca2c2a)
  • compiler-core: force <svg> into blocks for correct runtime isSVG (f2ac28b)
  • compiler-sfc: only transform relative asset URLs (#628) (c71ca35)
  • dom: fix <svg> and <foreignObject> mount and updates (4f06eeb)
  • runtime-core: condition for parent node check should be any different nodes (c35fea3), closes #622
  • runtime-core: isSVG check should also apply for patch branch (035b656), closes #639
  • runtime-core: should not warn unused attrs when accessed via setup context (751d838), closes #625
  • transition: handle multiple transition classes (#638) (#645) (98d50d8)


  • runtime-core: emit now returns array of return values from all triggered handlers (e81c8a3), closes #635
  • runtime-core: support app.unmount(container) (#601) (04ac6c4), closes #593

3.0.0-alpha.2 (2020-01-13)

Bug Fixes

  • compiler/v-on: handle multiple statements in v-on handler (close #572) (137893a)
  • compiler/v-slot: handle implicit default slot mixed with named slots (2ac4b72)
  • reactivity: should delete observe value (#598) (63a6563), closes #597
  • runtime-core: allow classes to be passed as plugins (#588) (8f616a8)
  • runtime-core: should preserve props casing when component has no declared props (bb6a346), closes #583
  • runtime-core/renderer: fix v-if toggle inside blocks (2e9726e), closes #604 #607
  • runtime-core/vnode: should not render boolean values in vnode children (close #574) (84dc5a6)
  • types: components options should accept components defined with defineComponent (#602) (74baea1)
  • watch: remove recorded effect on manual stop (#590) (453e688)

3.0.0-alpha.1 (2020-01-02)

Bug Fixes

  • runtime-core: pass options to plugins (#561) (4d20981)
  • sfc: treat custom block content as raw text (d6275a3)
  • mounting new children (7d436ab)
  • core: clone mounted hoisted vnodes on patch (47a6a84)
  • fragment: perform direct remove when removing fragments (2fdb499)


  • hmr: root instance reload (eda495e)

Performance Improvements

  • compiler-core: simplify advancePositionWithMutation (#564) (ad2a0bd)

3.0.0-alpha.0 (2019-12-20)

For changes between 2.x and 3.0 up to this release, please refer to merged RFCs here.

You can’t perform that action at this time.