canirequire › ESM-only › @ungap/structured-clone
Is @ungap/structured-clone ESM-only? Can you require() it?
A structuredClone polyfill
Last verified Sep 9, 2026 against @ungap/structured-clone@1.4.0. JSON
ESM-only ESM-only — it has never shipped a CommonJS build
@ungap/structured-clone has been ESM-only since its first stable release. There is no version you can require() on Node.js 18 or older.
On Node.js 20.19+, 22.12+ and every newer release, require("@ungap/structured-clone") works anyway: Node can load synchronous ES modules through require(). Verified on Node 20, 22, 24, 26. Node.js 18 and older still fail with ERR_REQUIRE_ESM.
Does @ungap/structured-clone@1.4.0 actually load? Runtime test results
Installed and executed on Sep 9, 2026 with require("@ungap/structured-clone") from a CommonJS file and import "@ungap/structured-clone" from an ES module.
| Runtime | require("@ungap/structured-clone") | import "@ungap/structured-clone" |
|---|---|---|
| Node.js 18 | ✓ works | ✓ works |
| Node.js 20 | ✓ works | ✓ works |
| Node.js 22 | ✓ works | ✓ works |
| Node.js 24 | ✓ works | ✓ works |
| Node.js 26 | ✓ works | ✓ works |
| Bun 1.4 | ✓ works | ✓ works |
How to import @ungap/structured-clone
ES modules (import)
import structuredClone from "@ungap/structured-clone";CommonJS (require)
// Node.js 20.19+ / 22.12+ / newer (package has no top-level await):
const structuredClone = require("@ungap/structured-clone");
// Any Node.js version:
const structuredClone = await import("@ungap/structured-clone");Module format by version
Derived from the type, main and exports fields of every stable release on npm (27 versions; the newest 27 shown).
| Versions | Format | First published |
|---|---|---|
| 0.0.0 – 1.4.0 | ESM-only | Oct 29, 2021 |
Frequently asked
Is @ungap/structured-clone ESM-only?
@ungap/structured-clone@1.4.0 is ESM-only. @ungap/structured-clone has been ESM-only since its first stable release. There is no version you can require() on Node.js 18 or older.
Which version of @ungap/structured-clone still supports CommonJS / require()?
None. @ungap/structured-clone has always been ESM-only. Use import, or await import("@ungap/structured-clone") from CommonJS.
How do I use @ungap/structured-clone from a CommonJS file?
Use a dynamic import: const mod = await import("@ungap/structured-clone"). On Node.js 20.19+, 22.12+ and newer, a plain require("@ungap/structured-clone") also works for ESM packages that do not use top-level await.
Does @ungap/structured-clone work in Bun?
Yes. import "@ungap/structured-clone" loaded successfully in Bun 1.4 on Sep 9, 2026.
Does @ungap/structured-clone ship TypeScript types?
Not bundled. Install the community types with "npm install -D @types/ungap__structured-clone".
Links
Other esm-only packages
- ansi-styles 7.0.0last CJS
5.2.0 - strip-ansi 7.2.0last CJS
6.0.1 - commander 15.0.0last CJS
14.0.3 - supports-color 11.0.0last CJS
8.1.1 - chalk 6.0.0last CJS
4.1.2 - tslib 2.8.1last CJS
2.5.2 - string-width 8.2.2last CJS
4.2.3 - ansi-regex 6.3.0last CJS
5.0.1
Similar popularity
- @smithy/protocol-http 5.6.2CommonJS
- @radix-ui/react-focus-guards 1.1.6Dual
- @radix-ui/react-popper 1.3.7Dual
- @smithy/fetch-http-handler 5.8.0CommonJS
- @radix-ui/react-direction 1.1.4Dual
- @babel/helper-replace-supers 8.0.1ESM-only
- @radix-ui/react-arrow 1.1.15Dual
- @aws-sdk/credential-provider-process 3.972.70CommonJS