@lwc/features

LWC Features Flags

Usage no npm install needed!

<script type="module">
  import lwcFeatures from 'https://cdn.skypack.dev/@lwc/features';
</script>

README

Features

RFC

Compile-time flags

Runtime flags

Runtime flags can be enabled or disabled by setting a boolean value for that flag in globalThis.LWC_config.features. If the flag is not explicitly configured, the feature is disabled by default. This configuration object must appear before the engine is initialized and should be defined at the application layer.

Limitations

Must be all uppercase

// Does not work
if (enableFoo) {
    ...
}

// Does work
if (ENABLE_FOO) {
    ...
}

Only works with if-statements

// Does not work
const foo = ENABLE_FOO ? 1 : 2;

// Does work
let foo;
if (ENABLE_FOO) {
    foo = 1;
} else {
    foo = 2;
}

Only works with identifiers

// Does not work
if (isTrue(ENABLE_AWESOME_FEATURE)) {
    // awesome feature
}

// Does work
if (ENABLE_AWESOME_FEATURE) {
    // awesome feature
}

Initialization code cannot be tested

Toggling the value of ENABLE_FOO during a test will not change the return value of getFooValue.

import { ENABLE_FOO } from '@lwc/features';

let foo;
if (ENABLE_FOO) {
    foo = 1;
} else {
    foo = 2;
}

function getFooValue() {
    return foo;
}