Announcement Blog Post
Contributors
@gzzhanghao, @mathieutu, @Justineo, @shortdiv, @imzyf, @youngrok, @enkot, @posva, @utatti, @Akryum, @ferdaber, @ktsn, @mymyoux, @sodatea, @hikerpig, @hirokiosame, @AlexMaguey
Features
- core/slots: implement new v-slot syntax 4fca045 [RFC-0001] [RFC-0002] [Updated documentation]
- core/slots: add scopedSlots to context in functional components (#7941) fb6aa06, closes #7941
- core/error-handling: sync/async error handling for lifecycle hooks and v-on handlers (#8395) 6e9fcfc, closes #8395 #6953 #7653
- core/template: support dynamic directive arguments for v-on, v-bind and custom directives (#9373) dbc0582 [RFC-0003]
- core/global-api: add Vue.observable() for explicitly creating observable objects c50bbde
- core/slots: expose all normal slots on $scopedSlots as functions 5d52262
- core/v-html: support v-html for SVG elements (#8652) a981c80, closes #8652
- core/v-bind: v-bind.sync also listens for kebab-case update event (#8297) 3fca527, closes #8297 #6428
- core/v-for: support iterables in v-for (#8179) d40eb9c, closes #8179
- core/template: support custom toString() in text interpolation and v-html (#8217) 0e4e45e, closes #8217 #8093
- core/misc: expose performance measures 9ae80ac, closes #7570
- compiler: output source range for compiler errors (#7127) b31a1aa, closes #7127 #6338
- compiler: add whitespace option, deprecate preserveWhitespace option e1abedb, closes #9208
- compiler: expose generateCodeFrame method a4ed58c
- compiler: output codeframe in browser compiler 325fc76
- compiler: support deindent: false in vue-template-compiler (#7215) bf0efb0, closes #7215 #7054
- compiler/watch: allow unicode characters in component names and watch paths (#8666) 9c71852, closes #8666 #8564
- ssr: add serverPrefetch component option + context.rendered hook (#9017) d7a533d, closes #9017
- ssr: allow template option to be function in renderToString (#9324) b65f6d7
- ssr: Add 'nonce' option to context for ssr outlet script (#8047) f036cce, closes #8047 #7479
- ssr: add custom state serializer option 4494012, closes #6614
- ssr: allow opting-out of caching by returning false in serverCacheKey ab24285, closes #8790
- build: add browser ESM build 861abf4
- types: add Prop to main type declaration file (#6856) 5791072, closes #6856 #6850
- types: add types for vue-template-compiler (#7918) ced774b, closes #7918
Performance Improvements
Important Internal Changes
These internal changes may cause unintended side effects on existing code that relies on non-publicly-documented behavior.
- next-tick: revert nextTick to alaways use microtask 60da366 080dd97, closes #8436 [Details]
- scoped-slots: ensure $scopedSlots calls always return Arrays c7c13c2, closes #8056 [Details]
Bug Fixes
- allow more enumerated values for contenteditable e632e9a, closes #9397
- fix v-bind:style for camelCase properties with !important (#9386) 539e481, closes #9386
- fix checkbox event edge case in Firefox 1868561
- always use microtasks for nextTick (#8450) 850555d, closes #8450 #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 #9199 #9198
- provide/inject: Merges symbol provides (#7926) 1933ee8, closes #7926
- runtime: DevTools recommendation shows for all browsers (#8638) 22ad266, closes #8638 #8634
- make transition-group key warning a tip to avoid breaking compilation d08b49f
- ssr: properly handle invalid and numeric style properties 7d9cfeb, closes #9231
- cover more cases in v-on inline return value 9432737
- ssr: should not render invalid numeric style values 17d8bcb
- ssr: should render 0 as valid value for style property with unit aef5b4e
- ensure only nromalize a scoped slot when it is present 5fb23d4
- ensure proxied normal slot uses correct key b32c4b6
- return inline invocation return value in v-on handlers 0ebb0f3, closes #7628