-
Notifications
You must be signed in to change notification settings - Fork 424
Open
Labels
Description
Breaking changes that we want to introduce someday.
Changes that only affect npm package consumers (not LEX component authors)
- Expose consistent
distfiles across packages #3445 - drop non-ESM builds (Remove non-ESM non-modern JS
distfiles #2430) - unify compiler and engine packages (Unify compiler and engine packages #2996)
- Specify the minimum supported version of Node in
engines#4150 - Use
node:protocol for all builtin imports (fs,path, etc.) #4149 - drop
runtimeFlagsexport from@lwc/features(see discussion) - remove the deprecated
transform()API in@lwc/compiler - remove the deprecated
minifyoption - use
"type": "module"in our Node packages (Drop CommonJS support in Node packages, use"type": "module"#3017) - Update dependencies that require ESM #3451
- Use Node package exports #2765
- Have the
lwcpackage directly export types from@lwc/engine-dom#3598 - Consider removing
setHooks#4442 - Unify
dynamicImportsandexperimentalDynamicComponentoptions #5031
HTML template compiler changes (solved with channels?)
- throw error instead of warn on deprecated parse5 errors ([Breaking change] Throw error rather than warning for parse5 HTML errors #3258) (e.g.
</template></template>) - Lowercase all CSS scope tokens #3313
- (template-compiler) Using multiple if:true|false directives on same tag should be a compile-time error [API versioning] #3320
- Disallow using
keyoutside an iteration #3375 - Rendering list items without a key is possible using text/comment nodes #3860
- Normalize whitespace for attributes (breaking change) #4124
- Inconsistent attribute ordering between static/dynamic nodes #4174
- Make duplicate slots in light DOM behave like native shadow DOM slots, or disallow duplicates entirely #4497
- Remove usage of
lwc:dynamic#3331 - Show compiler warning/error for
slotattribute not at the top level #4703 - [template-parser] Boolean attributes with invalid values throw inconsistent errors [should warn] #4732
- [SSR/template-compiler] Align
draggablewithspellcheck[potentially breaking] #4870
CSS compiler changes
- incorrect handling of
:host()CSS pseudo in scoped styles (:host(.foo, .bar)is styled differently in synthetic shadow and scoped light DOM vs native shadow #3225) - Move validation of
<style>contents to compilation #3454
JS compiler changes
- Remove Babel object spread transformation #3577
- Remove Babel class properties transformation #3537
- [babel-plugin-component] Remove dynamic
import()transformation #5022 - [babel-plugin-component] Remove
importdedupe transformation #5023 - remove unnecessary
registerDecoratorsfrom Babel plugin component ([JS compiler] remove registerDecorators for non-LightningElement classes #2701) - Use native decorators (for
@api,@track, and@wire)) - Decorators on getter/setter ignores implementation, allows duplicates #4450
Module resolution changes
Runtime changes
- drop no-longer-needed feature flags
- drop "experimental" APIs (
getComponentDef,isComponentConstructor,readonly,register,unwrap, etc.) - freeze the template object instead of just logging a warning (Freeze the template object #2826)
- remove the deprecated
buildCustomElementConstructorAPI - remove the deprecated wired element host and params metadata
- remove ARIA reflection global polyfill (ARIA reflection polyfill contains non-standard props #2733)
- remove non-standard ARIA props from LightningElement, BridgeElement, and template compiler (ARIA reflection polyfill contains non-standard props #2733)
- use native custom element lifecycle callbacks (Use native
connectedCallback/disconnectedCallbacklifecycle hooks #3198) - Deprecate
this.templatein favor ofthis.shadowRoot#3344 - feat: use fragments for slots in light DOM (BREAKING CHANGE) #3308
- [@engine-core] Inconsistent
disconnectedCallbackinvocation order #2713 - Convert warnings logged from Unexpected LWC stylesheet content to errors #3447
-
null/undefinedvalue does not removexlink:/xml:attribute #3502 - Inconsistent rendering of empty
class/stylein static vs dynamic nodes #3548 - Components should not "inherit"
@apifrom their superclasses #3762 - Remove support for legacy stylesheet scope tokens #3733
- List re-rendering causes DOM state to be lost #4291
- Synthetic custom element lifecycle swallows DOM errors for
insertBefore#4319 -
renderModemismatch between template/compiler and light/shadow causesconsole.errorbut no error #4663 - Scope token classes render in an inconsistent order for static vs dynamic
classes #4714 - Using
keyas an@apiproperty is a silent no-op #1017
Browser compat changes
- drop compat / IE11 support (fix: remove compat (BREAKING CHANGE) #2948 fix: remove legacy browser hacks (BREAKING CHANGE) #2954)
- update browser support matrix
- bump ES2018 build target to ESNext (Bump ES2018 build target to ES2019+/ESNext #3366)
- make ARIA reflection consistent across browsers (ARIA reflection polyfill should treat setting undefined the same as null #3284)
- Deprecate
customPropertiesconfig from@lwc/style-compiler#3614
SSR changes
ravijayaramappa, pmdartus, jmsjtu and divmain