experimentsboolean: false
experiments option was introduced in webpack 5 to empower users with the ability to activate and try out experimental features.
Available options:
asyncWebAssembly: Support the new WebAssembly according to the updated specification, it makes a WebAssembly module an async module.executeModulelayers: Enable module and chunk layers.lazyCompilationoutputModulesyncWebAssembly: Support the old WebAssembly like in webpack 4.topLevelAwait: Support the Top Level Await Stage 3 proposal, it makes the module an async module when await is used on the top-level.webpack.config.js
module.exports = {
  //...
  experiments: {
    executeModule: true,
    outputModule: true,
    syncWebAssembly: true,
    topLevelAwait: true,
    asyncWebAssembly: true,
    layers: true,
    lazyCompilation: true,
  },
};Enable execution of modules from the module graph for plugins and loaders at build time to generate code or other assets.
Type: boolean
Available: 5.32.0+
Example:
module.exports = {
  // …
  experiments: {
    executeModule: true,
  },
};Compile entrypoints and dynamic imports only when they are in use. It can be used for either Web or Node.js.
Type
booleanobject{
  // define a custom backend
  backend?: ((
    compiler: webpack.Compiler,
    client: string,
    callback: (err?: Error, api?: any) => void
  ) => void)
  | ((
      compiler: webpack.Compiler,
      client: string
    ) => Promise<any>)
  client?: string,
  entries?: boolean,
  imports?: boolean,
  test?: RegExp | string | ((module: import("../lib/Module")) => boolean)
}client: Path to a custom client, defaults to webpack/hot/lazy-compilation-{node|web}.js.backend: Customize the backend, defaults to webpack/lib/hmr/lazyCompilationBackend.entries: Enable lazy compilation for entries.imports 5.20.0+: Enable lazy compilation for dynamic imports.test 5.20.0+: Specify which imported modules should be lazily compiled.Available: 5.17.0+
Example 1:
module.exports = {
  // …
  experiments: {
    lazyCompilation: true,
  },
};Example 2:
module.exports = {
  // …
  experiments: {
    lazyCompilation: {
      // disable lazy compilation for dynamic imports
      imports: false,
      // disable lazy compilation for entries
      entries: false,
      // do not lazily compile moduleB
      test: (module) => !/moduleB/.test(module.nameForCondition()),
    },
  },
};boolean
Once enabled, webpack will ouput ECMAScript module syntax whenever possible. For instance, import() to load chunks, ESM exports to expose chunk data, among others.
module.exports = {
  experiments: {
    outputModule: true,
  },
};