The section your link pointed to isn't on LavaMoat's page any more, so we've brought you to the top.
tools for sandboxingsandboxingRunning code inside a restricted environment that limits what it can access or change. The isolation reduces the impact of mistakes or untrusted code, depending on the sandbox's controls. your dependency graph
LavaMoat is an open-source set of JavaScript tools that defends applications against software supply-chainsoftware supply-chainThe dependencies, tools and processes used to build and deliver software. Compromising one part can affect the products or organizations that rely on it. attacks, and it costs nothing to use. It works as a library and set of CLI commands you wire into install, build, and runtime steps rather than a hosted service: allow-scripts blocks unapproved dependency lifecycle scripts, while runtime protections in lavamoat-node, Browserify, and webpack restrict access to platform APIs and JavaScript primordials. It is aimed at developers and teams maintaining Node.js and browser-based JavaScript projects, particularly ones pulling from NPM, where a malicious dependency could steal secrets or compromise the app. It sits in the appsec space alongside dependency-policy and lockdown tooling rather than any named competitor. Started in 2015 and maintained by MetaMask/Consensys, it remains active, with 278 contributors and a release 57 days ago.
Which of my dependencies will run install scripts I never reviewed?
disables lifecycle scripts like postinstall by default and only runs the ones listed in a package.json allowlist, failing the install early if that configuration is missing
Has my allowlist drifted from what is actually installed?
compares the allow-scripts configuration against the packages currently installed and warns when they no longer match, so the gap can be caught in CI before it ships
Can a compromised dependency read my secrets or reach the network at runtime?
runs the app inside a sandbox that limits each package's access to platform APIs like the window, document, or XHR according to a generated policy
Could a dependency tamper with core JavaScript behavior that every other module relies on?
prevents modification of JavaScript's primordials (Object, String, Array, and the rest) so one package cannot silently change how built-ins behave for the whole app
Is an allowlisted install script still safe after a dependency update?
pins allowed scripts to specific package versions, so an approved script running under a different version than the one it was approved for is treated as unapproved
Would a bundled build leave any modules unprotected without me noticing?
reports an explicit error when a webpack build finishes with no modules under LavaMoat's protection, surfacing that misconfiguration instead of shipping silently
28 capabilities
· 3 backed by code, an API document or a real run
Built from LavaMoat's releases, docs, README and our own runs.
“Seen” marks the month we first spotted a release the vendor didn't date.
Group names and tags are our labels.
+Policy Migration UtilitiesshippedProvides explicit functions and warnings for migrating policy file writing logic.16 releases · 1 other source · first seen Sep 2026▸
release
16 total
generatePolicy() no longer accepts write or writableFs options and will not write policy to disk; migrate to writePolicy imported from @lavamoat/node.
lavamoat-core-v19.0.0 · Sep 2026
· source
· release history
generatePolicy() in @lavamoat/node no longer accepts write or writableFs options and no longer writes policy to disk; use the new writePolicy import from @lavamoat/node instead.
react-native-lockdown-v3.0.0 · Sep 2026
· source
· release history
generatePolicy() no longer accepts write or writableFs options; use the new writePolicy export instead to write policies to disk.
lavamoat-core-v19.0.0 · Sep 2026
· source
· release history
generatePolicy() no longer accepts write or writableFs options
node-v2.0.0 · Sep 2026
· source
· release history
generatePolicy() no longer accepts write or writableFs options and no longer writes policy to disk; use writePolicy imported from @lavamoat/node instead.
node-v2.0.0 · Sep 2026
· source
· release history
generatePolicy() in @lavamoat/node now resolves with { policy: LavaMoatPolicy, hasWarnings: boolean } instead of a bare LavaMoatPolicy; callers must destructure policy from the result.
react-native-lockdown-v3.0.0 · Sep 2026
· source
· release history
example
Migrate programmatic policy generation to capture warnings and separate write logic.$ const { generatePolicy, writePolicy } = require('@lavamoat/node'); async function main() { const { policy, hasWarnings } = await generatePolicy(); if (hasWarnings) console.warn('Policy generation had…
react-native-lockdown-v3.0.0 · Sep 2026
· source
+Webpack integration enhancementsshippedExtends policy generation and runtime support within Webpack bundles, including built-in module attenuation and dynamic context handling.17 releases · first seen Aug 2024▸
release
17 total
Webpack integration now captures importScripts references for use in runtime despite scuttling
webpack-v2.3.0 · Sep 2026
· source
· release history
Automatically overrides the webpack devtool setting when it is likely to break LavaMoat, preventing silent security misconfigurations.
webpack-v2.1.0 · Apr 2026
· source
· release history
Adds static shims for the webpack runtime, reducing reliance on dynamic runtime injection.
webpack-v1.3.0 · Sep 2025
· source
· release history
Adds null runtime support, enabling LavaMoat to work in webpack configurations that use no runtime chunk.
webpack-v1.3.0 · Sep 2025
· source
· release history
Adds support for globals that require more complex handling beyond a simple unwrap from lavamoat-core, improving compatibility with a wider range of webpack bundles.
webpack-v1.2.0 · Aug 2025
· source
· release history
Adds scuttling support (scuttling option) to lock down global object properties in webpack bundles at runtime.
webpack-v1.0.0 · Jun 2025
· source
· release history
+Lavamoat policy override controlsshippedProvides configuration options for controlling the strictness of Lavamoat policy overrides to improve developer experience.13 releases · 2 other sources · first seen Oct 2023▸
release
13 total
Adds opt-in flag to overwrite policy.json with overrides, enabling automated policy regeneration workflows.
webpack-v2.3.0 · Sep 2026
· source
· release history
Adds --overwrite flag to allow policy.json to be overwritten with overrides
webpack-v2.3.0 · Sep 2026
· source
· release history
Introduces @lavamoat/node, a new LavaMoat package for applying supply-chain security policies in Node.js environments.
node-v0.0.1 · Jan 2025
· source
· release history
Supports configuring lifecycleEvents when calling loadAllPackageConfigurations, giving programmatic control over which npm lifecycle hooks are evaluated.
allow-scripts-v3.3.0 · Oct 2024
· source
· release history
Enables attenuation of Node.js built-in modules via LavaMoat policy in webpack bundles.
webpack-v0.5.0-beta.0 · Aug 2024
· source
· release history
Exports loadAllPackageConfigurations and printMissingPoliciesIfAny for programmatic access to package script policies.
allow-scripts-v3.2.0 · Aug 2024
· source
· release history
example
Access endowmentsToolkit directly from the package root instead of hunting for an internal module path.$ import { endowmentsToolkit } from 'lavamoat-core'
lavamoat-core-v16.1.0 · Oct 2024
· source
Resolve canonical package names from filesystem paths when building custom policy tooling.$ const { loadAllPackageContents } = require('@lavamoat/allow-scripts'); const contents = await loadAllPackageContents({ rootDir: process.cwd() }); console.log(contents.canonicalNamesByPath); // {…
allow-scripts-v3.2.0 · Aug 2024
· source
+Install script allow-list CI checkshippedDetects unapproved or newly-added install scripts and fails with a warning, keeping the allow-scripts configuration up to date in CI pipelines without modifying files.11 releases · 4 other sources · first seen Oct 2023▸
Also counts toward: CI/CD pipeline integration, Command-line interface
release
11 total
Adds a check command that warns when the allow-scripts configuration is out of date, designed for use in CI pipelines without modifying any files.
allow-scripts-v5.1.0 · Jun 2026
· source
· release history
New check command warns when the allow-scripts configuration is out of date, enabling CI to catch unapproved lifecycle script changes before they reach production.
allow-scripts-v5.1.0 · Jun 2026
· source
· release history
Install scripts are now pinned to specific package versions, preventing allowlisted scripts from running under unintended versions.
allow-scripts-v5.0.0 · Apr 2026
· source
· release history
allow-scripts defaults to pinning versions; upgrading requires a migration action to update existing allowlist configuration.
allow-scripts-v5.0.0 · Apr 2026
· source
· release history
allow-scripts no longer matches a lower version against an allowed entry — version pinning is now exact, so existing allowlist entries that relied on lower-version matching will stop working.
allow-scripts-v5.0.0 · Apr 2026
· source
· release history
Supports global installation of allow-scripts as the recommended usage pattern, enabling consistent lifecycle script enforcement across projects without per-project setup.
allow-scripts-v3.4.0 · Sep 2025
· source
· release history
docs
Suite of cyber tools protecting JavaScript apps from software supply chain attacks via install script controls, runtime sandboxing, and per-package API access p
example
Catch unapproved or newly-added install scripts in CI before they can run — fails with a warning instead of silently passing.$ npx @lavamoat/allow-scripts check
allow-scripts-v5.1.0 · Jun 2026
· source
Run in CI to fail fast if the allow-scripts config no longer matches installed packages.$ npx allow-scripts check
allow-scripts-v5.1.0 · Jun 2026
· source
Audit CI for any packages missing an allow-scripts policy entry without running the CLI directly.$ const { loadAllPackageConfigurations, printMissingPoliciesIfAny } = require('@lavamoat/allow-scripts'); const config = await loadAllPackageConfigurations({ rootDir: process.cwd() });…
allow-scripts-v3.2.0 · Aug 2024
· source
+Policy stability and merging utilitiesshippedImproves the reliability of policy file management by sorting entries for stable diffs and simplifying single-policy merge operations.10 releases · 4 other sources · first seen Dec 2024▸
release
10 total
generatePolicy() no longer accepts write or writableFs options and will not write policy to disk; migrate to writePolicy imported from @lavamoat/node.
lavamoat-core-v19.0.0 · Sep 2026
· source
· release history
generatePolicy() in @lavamoat/node no longer accepts write or writableFs options and no longer writes policy to disk; use the new writePolicy import from @lavamoat/node instead.
react-native-lockdown-v3.0.0 · Sep 2026
· source
· release history
generatePolicy() no longer accepts write or writableFs options; use the new writePolicy export instead to write policies to disk.
lavamoat-core-v19.0.0 · Sep 2026
· source
· release history
Adds informative errors when a policy merge produces invalid entries, surfacing actionable diagnostics instead of silent failures.
lavamoat-tofu-v8.1.0 · Nov 2025
· source
· release history
Adds descriptive errors when the result of a policy merge contains invalid entries, making misconfigured policy merges easier to diagnose.
lavamoat-core-v17.1.0 · Nov 2025
· source
· release history
New policy debugging capabilities for inspecting and testing generated LavaMoat policies.
webpack-v1.0.0 · Jun 2025
· source
· release history
example
Consume the updated policy object from generatePolicy in your node code.$ const { policy, hasWarnings } = await generatePolicy();
webpack-v3.0.0 · Sep 2026
· source
Generate a policy and check for warnings before writing it to disk — required migration pattern after the generatePolicy() API change.$ import { generatePolicy, writePolicy } from '@lavamoat/node'; const { policy, hasWarnings } = await generatePolicy({ projectRoot: '.' }); if (hasWarnings) console.warn('Policy generated with…
lavamoat-core-v19.0.0 · Sep 2026
· source
Generate a LavaMoat policy file during CI without applying sandbox protections — lets you audit or commit the policy separately from the production build.$ // webpack.config.js const { LavaMoatPlugin } = require('@lavamoat/webpack'); module.exports = { plugins: [ new LavaMoatPlugin({ generatePolicyOnly: true, }), ], };
webpack-v1.3.0 · Sep 2025
· source
Merge a single policy without a second argument now that the param is explicitly optional.$ import { mergePolicy } from 'lavamoat-core' const merged = mergePolicy(existingPolicy)
lavamoat-core-v16.2.0 · Dec 2024
· source
+Modern Node.js runtime supportshippedSupports running on Node.js versions v16.20.0 and higher, including native support for Node.js 20.13 releases · 1 other source · first seen Oct 2023▸
release
13 total
Supports Node.js ^22.5.1 for the webpack plugin.
webpack-v0.5.0-beta.0 · Aug 2024
· source
· release history
Adds support for Node.js ^22.5.1 in the node, browserify, and perf components
lavamoat-browserify-v18.0.0 · Aug 2024
· source
· release history
allow-scripts now supports Node.js v22
aa-v4.3.0 · Jul 2024
· source
· release history
Adds nodejs 22 runtime support to lavamoat-core
lavamoat-core-v15.4.0 · Jul 2024
· source
· release history
Adds allow-scripts support for Node.js v22
laverna-v1.2.0 · Jul 2024
· source
· release history
lavamoat-tofu-v7.3.0 extends compatibility to include Node.js 22.x
lavamoat-tofu-v7.3.0 · Jul 2024
· source
· release history
example
Ensure your project uses the LavaMoat pack compatible with modern Node.js runtimes$ npm install --save-dev lavamoat@lavapack-v6
lavapack-v6.0.0 · Oct 2023
· source
+Global state attenuationshippedProvides fine-grained control and attenuation of shared global state across LavaMoat compartments.9 releases · 2 other sources · first seen Oct 2023▸
release
9 total
Officially releases and documents the scuttling feature in the webpack plugin, enabling runtime lockdown of global object access for bundled code.
webpack-v1.4.0 · Sep 2025
· source
· release history
Improves resilience against network conditions and git failures when verifying safe dependencies.
git-safe-dependencies-v0.3.0 · Aug 2025
· source
· release history
Increases resilience of git-safe against adverse network conditions and git edge cases.
node-v0.4.0 · Aug 2025
· source
· release history
Adds scuttling support, enabling LavaMoat to restrict access to powerful globals on the Node.js runtime environment.
node-v0.3.0 · Jun 2025
· source
· release history
Adds "redefine" as a new global policy value in the LavaMoat policy schema, giving policy authors finer-grained control over how globals are exposed to packages.
lavamoat-core-v16.4.0 · May 2025
· source
· release history
Adds git-safe-actions GitHub Actions validator to audit GH Actions workflows for unsafe dependencies.
git-safe-dependencies-v0.2.0 · Jan 2025
· source
· release history
example
Harden a webpack bundle by enabling scuttling to prevent dependency packages from accessing or mutating privileged globals.$ // webpack.config.js const LavaMoatPlugin = require('@lavamoat/webpack'); module.exports = { plugins: [ new LavaMoatPlugin({ scuttling: true, }), ], };
webpack-v1.0.0 · Jun 2025
· source
Grant a package the ability to redefine a global (e.g. fetch) rather than merely reading it, using the new "redefine" policy value.$ { "resources": { "some-package": { "globals": { "fetch": "redefine" } } } }
lavamoat-core-v16.4.0 · May 2025
· source
+CLI logging controlsverifiedControls the verbosity of CLI output, allowing verbose logging or complete silence.5 releases · 2 other sources · first seen Feb 2024▸
Also counts toward: Command-line interface
release
Adds --quiet and --verbose flags for controlling output verbosity when running LavaMoat Node.
node-v0.1.0 · Mar 2025
· source
· release history
Changes how inlining of SES lockdown is configured in the webpack plugin.
webpack-v0.7.0-beta.0 · Oct 2024
· source
· release history
The way inlining lockdown is configured has changed — existing plugin configuration for lockdown inlining will need to be updated to match the new interface.
webpack-v0.7.0-beta.0 · Oct 2024
· source
· release history
Adds lockdown inlining support to the webpack integration
webpack-v0.4.0-beta.0 · Jul 2024
· source
· release history
Adds experimental policy generation, loading, and override support to the webpack integration.
webpack-v0.2.0-beta.0 · Feb 2024
· source
· release history
command line
--verbose — Enable verbose logging [boolean]
lavamoat-v11.0.0 · Mar 2026
· command-line history
--quiet — Disable all logging [boolean]
lavamoat-v11.0.0 · Mar 2026
· command-line history
+CLI project configurationverifiedConfigures the CLI's working context, including the application root directory and entrypoint resolution.4 releases · 2 other sources · first seen Jan 2024▸
Also counts toward: Command-line interface
release
Improves UX for specifying entrypoints, making it easier to define application entry in LavaMoat Node.
node-v0.1.0 · Mar 2025
· source
· release history
Allows flags to be passed to the node entrypoint process
node-v0.0.2 · Jan 2025
· source
· release history
lavamoat-core now ships with TypeScript type definitions.
lavamoat-core-v15.1.0 · Jan 2024
· source
· release history
Provides TypeScript type definitions for the tofu module to enable static analysis and IDE support
lavamoat-tofu-v7.1.0 · Jan 2024
· source
· release history
command line
--project-root — Path to application root directory
lavamoat-v11.0.0 · Mar 2026
· command-line history
--bin — Resolve entrypoint as a bin script [boolean]
lavamoat-v11.0.0 · Mar 2026
· command-line history
+Script Hardening ConfigurationshippedEnables granular control and hardening of package lifecycle scripts via configuration profiles.2 releases · 3 other sources · first seen Mar 2026▸
release
Extends script configs in the harden package, expanding the configuration surface available for controlling how scripts are hardened.︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄
harden-v0.8.0 · Sep 2026
· source
· release history
Adds parallel module inspection, speeding up policy generation for large dependency trees.
node-v1.0.0 · Mar 2026
· source
· release history
docs
Harden your project with @lavamoat/harden @lavamoat/harden is a CLI tool that applies opinionated, good defaults and security hardening to your project’s configuration. It writes security-focused settings into files like .npmrc , .yarnrc.yml , pnpm-workspace.yaml , and package.json , while preserving everything else.
docs update · Aug 2026
· source
Harden the Script Execution Environment This guide covers the Script Execution Environment hardening feature of @lavamoat/harden . @lavamoat/harden can assign Node.js permission profiles to your package.json scripts so commands like build , lint , test , or release do not all run with the same level of access.
docs update · Aug 2026
· source
Harden your project with @lavamoat/harden @lavamoat/harden is a CLI tool that applies opinionated, good defaults and security hardening to your project’s configuration. It writes security-focused settings into files like .npmrc , .yarnrc.yml , pnpm-workspace.yaml , and package.json , while preserving everything else.
docs update · Aug 2026
· source
+Lifecycle Script ProtectionshippedEnhances security for install and lifecycle scripts through exact version pinning and validation.3 releases · 2 other sources · first seen Apr 2026▸
release
Install scripts are now pinned to specific package versions, preventing allowlisted scripts from running under unintended versions.
allow-scripts-v5.0.0 · Apr 2026
· source
· release history
allow-scripts defaults to pinning versions; upgrading requires a migration action to update existing allowlist configuration.
allow-scripts-v5.0.0 · Apr 2026
· source
· release history
allow-scripts no longer matches a lower version against an allowed entry — version pinning is now exact, so existing allowlist entries that relied on lower-version matching will stop working.
allow-scripts-v5.0.0 · Apr 2026
· source
· release history
docs
Suite of cyber tools protecting JavaScript apps from software supply chain attacks via install script controls, runtime sandboxing, and per-package API access p
example
Run in CI to fail fast if the allow-scripts config no longer matches installed packages.$ npx allow-scripts check
allow-scripts-v5.1.0 · Jun 2026
· source
+Custom module resolutionshippedAllows overriding default module resolution logic to handle custom package paths or fallback names during policy generation.4 releases · 1 other source · first seen Dec 2024▸
release
Adds opt-in modernized resolve behavior to lavamoat-node classic mode, enabling more accurate dependency resolution for modern package layouts.
lavamoat-v11.1.0 · Apr 2026
· source
· release history
Supports Yarn as a package manager alongside the existing npm support.
laverna-v2.1.0 · Apr 2026
· source
· release history
Exports the MODULE_REFS constant from lavamoat-core, enabling programmatic access to module reference identifiers used in policy generation.
lavamoat-core-v18.0.0 · Mar 2026
· source
· release history
Supports overriding the resolve implementation, enabling custom module resolution logic in browserify builds.
lavamoat-browserify-v18.1.0 · Dec 2024
· source
· release history
example
Import MODULE_REFS to reference canonical module identifier keys when building or inspecting LavaMoat policies programmatically.$ import { MODULE_REFS } from 'lavamoat-core' // Use MODULE_REFS to look up entries in a generated policy const ref = MODULE_REFS.some_key console.log(policy.resources[ref])
lavamoat-core-v18.0.0 · Mar 2026
· source
+Node.js Runtime Requirement UpdatesshippedEnforces minimum Node.js version requirements for the cyber tooling.5 releases · first seen Aug 2024▸
release
Node.js v18 is no longer supported; upgrade to Node.js v20 or later before upgrading this package.
node-v1.0.0 · Mar 2026
· source
· release history
Node.js v18 is no longer supported; upgrading will break installations running on Node.js v18.
types-v1.0.0 · Mar 2026
· source
· release history
Node.js v18 is no longer supported; upgrading requires Node.js v20 or later.
lavamoat-core-v18.0.0 · Mar 2026
· source
· release history
The tool no longer runs on Node.js v16; upgrades to v18.0.0 will fail or crash on that version.
lavamoat-browserify-v18.0.0 · Aug 2024
· source
· release history
Removes support for Node.js v16 from all workspace packages (core, node, browserify, perf, tofu, webpack)
lavamoat-browserify-v18.0.0 · Aug 2024
· source
· release history
+Developer Experience OptimizationsshippedImproves policy generation performance and preserves debugging artifacts during transformation.4 releases · first seen Mar 2026▸
release
Switches @lavamoat/node to use @endo/parser-pipeline for module parsing.
react-native-lockdown-v3.0.0 · Sep 2026
· source
· release history
Switches internal parsing to use @endo/parser-pipeline.
react-native-lockdown-v3.0.0 · Sep 2026
· source
· release history
Adds parallel module inspection, speeding up policy generation for large dependency trees.
node-v1.0.0 · Mar 2026
· source
· release history
+Webpack Plugin ScuttlingshippedApplies global object locking (scuttling) to webpack builds, including hardening the webpack runtime and suppressing intrinsics to prevent supply-chain attacks abusing globals.3 releases · 1 other source · first seen Jul 2025▸
release
Captures importScripts reference for use in the webpack runtime even when scuttling is enabled, unblocking Web Worker builds that rely on importScripts.
webpack-v2.3.0 · Sep 2026
· source
· release history
Officially releases and documents scuttling support in the LavaMoat webpack plugin.
lavamoat-core-v16.7.0 · Sep 2025
· source
· release history
Defends the webpack runtime from scuttling, preventing untrusted code from corrupting webpack's own globals at runtime.
webpack-v1.1.0 · Jul 2025
· source
· release history
example
Enable scuttling in your webpack build to lock down global object access at runtime, preventing supply-chain attacks from abusing globals.$ // webpack.config.js const { LavaMoatPlugin } = require('@lavamoat/webpack'); module.exports = { plugins: [ new LavaMoatPlugin({ scuttling: true, }), ], };
webpack-v1.4.0 · Sep 2025
· source
+ESM supportshippedSupports generating policies and executing code for ECMAScript Module formats.3 releases · 1 other source · first seen Feb 2024▸
release
Enables deep dependency analysis of ES modules, allowing tofu to traverse transitive ES module imports when generating policies.
lavamoat-tofu-v8.1.0 · Nov 2025
· source
· release history
Adds ESM support in policy generation allowing Lavamoat to create policies for ECMAScript modules
lavamoat-core-v15.2.0 · Feb 2024
· source
· release history
Generate a security policy for an ESM-based project that previously failed or produced incomplete coverage.$ lavamoat generate --esm
lavamoat-core-v15.2.0 · Feb 2024
· source
+Granular Script Access ControlshippedAllows defining specific permissions and wildcards for individual package scripts.3 releases · first seen Sep 2026▸
release
Extends the scripts configuration block in package.json to allow per-script hardening options such as network and file-system access control.
harden-v0.8.0 · Sep 2026
· source
· release history
Adds wildcard prefix matching for scriptsConfig entries in the harden runner, allowing glob-style script name patterns.
harden-v0.7.0 · Sep 2026
· source
· release history
Enables prefix-based wildcard matching in the runner scriptsConfig configuration
harden-v0.7.0 · Sep 2026
· source
· release history
+Entrypoint Trust ManagementshippedManages policy enforcement for application entrypoints, including support for untrusted entrypoints and explicit error surfacing.3 releases · first seen May 2025▸
release
Exposes the top-level module export as the return value of runLava, enabling callers to programmatically consume the sandboxed module's exported API.
lavamoat-v10.1.0 · Jan 2026
· source
· release history
Emits explicit error messages when a webpack compilation completes with no modules protected, surfacing misconfiguration early.
webpack-v1.3.0 · Sep 2025
· source
· release history
Supports untrusted entrypoints, allowing policy enforcement to apply even when the application entry script itself is not fully trusted.
node-v0.2.0 · May 2025
· source
· release history
+Context Module SupportshippedAllows testing and usage of dynamic require patterns with context modules without leaving them fully unguarded or unrestricted.1 release · 2 other sources · first seen Jan 2025▸
release
Adds experimental __unsafeAllowContextModules flag to test context-module scenarios without leaving them fully unprotected.
webpack-v1.0.0 · Jun 2025
· source
· release history
example
Experiment with dynamic require / context modules under LavaMoat without leaving them fully unguarded.$ // webpack.config.js const LavaMoatPlugin = require('@lavamoat/webpack'); module.exports = { plugins: [ new LavaMoatPlugin({ __unsafeAllowContextModules: true, }), ], };
webpack-v1.0.0 · Jun 2025
· source
Opt in to context-module support during development without leaving them fully unrestricted — useful when testing dynamic require() patterns.$ new LavaMoatPlugin({ __unsafeAllowContextModules: true })
webpack-v0.8.0-beta.0 · Jan 2025
· source
+Package Manager CompatibilityverifiedExtends support to include multiple package managers beyond the default npm.1 release · 1 other source · first seen Apr 2026▸
Also counts toward: Command-line interface
release
Supports Yarn as a package manager alongside the existing npm support.
laverna-v2.1.0 · Apr 2026
· source
· release history
command line
--package-manager — Package manager to check against (npm, yarn, pnpm)
lavamoat-v11.1.5 · Sep 2026
· command-line history
+Per-Chunk Runtime ConfigurationshippedEnables embedding and controlling LavaMoat runtime options on a per-chunk basis to accommodate different trust boundaries.1 release · 1 other source · first seen Sep 2025▸
release
Adds runtimeConfigurationPerChunk_experimental option to embed and control LavaMoat runtime options on a per-chunk basis.
webpack-v1.3.0 · Sep 2025
· source
· release history
example
Embed different LavaMoat runtime options per chunk — useful when entry points have different trust boundaries or performance requirements.$ // webpack.config.js const { LavaMoatPlugin } = require('@lavamoat/webpack'); module.exports = { plugins: [ new LavaMoatPlugin({ runtimeConfigurationPerChunk_experimental: { main: { trustRoot: true…
webpack-v1.3.0 · Sep 2025
· source
+Selective Chunk UnloadingshippedPermits specific chunks or entrypoints to be exempted from LavaMoat protection for incremental adoption or performance reasons.1 release · 1 other source · first seen Jun 2025▸
release
New unlockedChunksUnsafe option lets teams selectively opt specific chunks out of LavaMoat protection for incremental adoption.
webpack-v1.0.0 · Jun 2025
· source
· release history
example
Opt a legacy or third-party chunk out of LavaMoat protection while the rest of the bundle stays hardened.$ // webpack.config.js const LavaMoatPlugin = require('@lavamoat/webpack'); module.exports = { plugins: [ new LavaMoatPlugin({ unlockedChunksUnsafe: ['legacy-vendor'], }), ], };
webpack-v1.0.0 · Jun 2025
· source
+Self-contained LavaMoat executionshippedEnables self-contained execution of LavaMoat by emitting necessary runtime files (e.g., lockdown.js) directly into the build distribution directory.2 releases · first seen Nov 2023▸
release
Ships with a vendored SES build, making the lockdown self-contained without relying on an external SES package.
react-native-lockdown-v0.0.1 · Jun 2025
· source
· release history
webpack-v0.1.0-beta.0 adds emitting lockdown.js to the build dist directory, enabling self-contained LavaMoat execution without external runtime injection.
webpack-v0.1.0-beta.0 · Nov 2023
· source
· release history
+Firefox Content Script SupportshippedEnables LavaMoat to function correctly in Firefox browser extensions by handling cross-realm window prototypes.1 release · first seen Sep 2025▸
release
Supports Firefox content-script environments by handling cross-realm window prototypes, enabling LavaMoat to run correctly in Firefox browser extensions.
lavamoat-core-v16.6.0 · Sep 2025
· source
· release history
+Webpack Plugin TypeScript SupportshippedProvides official TypeScript types for the LavaMoat webpack plugin to enable typed configuration in TypeScript projects.1 release · first seen Jul 2025▸
release
Exposes proper TypeScript types for the LavaMoat webpack plugin, enabling typed configuration in TS projects.
webpack-v1.1.0 · Jul 2025
· source
· release history
+LavaMoat Error HandlingshippedProvides custom error types and descriptive messages for precise programmatic handling of policy and sandbox violations.1 release · first seen Jun 2025▸
release
Adds custom error types for more precise programmatic handling of LavaMoat policy and sandbox violations.
node-v0.3.0 · Jun 2025
· source
· release history
+Webpack Asset Emission ControlshippedControls the emission of resource assets from packages during builds to prevent unintended exposure.1 release · first seen Jan 2025▸
release
Resource assets from packages are no longer emitted by default; builds that relied on automatic resource asset emission will need to explicitly enable it.
webpack-v0.8.0-beta.0 · Jan 2025
· source
· release history
+Git-sourced dependency managementshippedProvides validation and management capabilities for dependencies sourced directly from git repositories.1 release · first seen Dec 2024▸
release
Introduces git-safe-dependencies, a new LavaMoat library for managing or validating git-sourced dependencies in Node.js projects.
git-safe-dependencies-v0.1.0 · Dec 2024
· source
· release history
Lines in monospace are the tool's own words: help text
parsed from its source, or an endpoint from its API document. Under
release, a line is our summary of a dated release. Under
docs, it is quoted from the tool's own documentation or
website. Each links back to the source it came from.
Command line
View
Source
No command matches.
load a captured run
composed command
No matchesTry a different search, or clear a filter to see more.
option surface across analysed releases
options at that releaseadded, per releaseremoved, per release
option
found in
since
description
No matchesTry a different search, or clear a filter to see more.
option changes per release — drag across the rail to set a range
→
Values are placeholders taken from each option’s declared default.
Nothing is executed here — the output shown is a recording of a run
that already happened.
Score card
Shipping velocityreleases a month, last 12 months
Documentation qualityrelease-notes rubric, 0–100
Breaking-change disciplinehow rarely a release breaks users, and notice given
Maintenance riskquiet time against its own cadence, maintainers
Innovation & surfacenew capabilities, API and MCP surface
Community health
Contributor trenddistinct committers, this year against last
Maintainer concentrationbus factor now against a year ago
Issue backlog trendissues closed per issue opened, 12 months
Responsivenessmedian time to a maintainer’s first reply
Nine scores for LavaMoat, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.
Each score is 0–100 on a published rubric, derived from data this site already shows.
A dimension we cannot measure says so — it is never scored 0 and never enters a rank.
How this is scored
Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
Documentation quality — the release-notes rubric published on the analytics page, unchanged.
Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.
Release-note detail over time
See how much detail LavaMoat puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.
Issue, contributor and maintainer activity in lavamoat/lavamoat, 2023-10 – 2026-09,
as of 2026-09-25. Twelve-month figures first; the trend lines run
the whole window.
Contributors7+1 vs prior 12 months
Maintainers2+0 joined · −0 left, last 12 months
Bus factor1committers behind half the commits
Community-filed59%of issues opened, last 12 months
Median time to close33 daysfirst maintainer reply 6.1 days
Open backlog159of 258 issues ever filed
Issues opened / month1 · 0communitymaintainers
Open backlog159
Contributors / month4
Commits / month14
Stars1,221
Issue themes, last 12 months
bugs 5%
features 9%
other 86%
Counts from the project's public repository and git history; no individuals
are identified. Maintainers are the committers covering 80% of the last year's
commits. how we measure this
Libraries its release ships
What its latest release locks, checked against known advisories.
None of its release's images build from a lockfile we can read.
Add the badge to your README
Maintain this project? The badge links readers straight to this page, so they can
follow every release here.