Recommended Free Tools
Use import defer * as feature from "./feature.js" when a module is statically known but its synchronous initialization can wait until first use. The module graph is still fetched, parsed, and linked up front; what waits is synchronous evaluation, which begins when code accesses a property on the deferred namespace. This can keep callers synchronous, but it does not guarantee a performance improvement and it changes when module side effects run.
What import defer does
import defer is a static import form that postpones synchronous module evaluation. Unlike a dynamic import, it does not wait to fetch and link the graph until a function runs: dependencies are fetched, parsed, and linked as part of preparing the importing module. The deferred module’s synchronous top-level code runs only when the deferred namespace is accessed, subject to the top-level-await behavior described below. MDN documents the syntax and evaluation rules.
Think of it as delaying execution, not loading. Because the import remains a static dependency, missing modules, syntax errors, and invalid imports are not concealed until first use. What may be postponed is the CPU work of evaluating a synchronous portion of the graph. The TC39 proposal describes reduced unnecessary initialization work as a design goal, not a measured or universal speedup. The proposal discusses the motivation and semantics.
How to write it
The supported form uses a namespace import; there is no deferred named-import form:
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstall#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
import defer * as compiler from "./compiler.js";
export function compile(path) {
return compiler.createProgram([path], {});
}
The access to compiler.createProgram triggers synchronous evaluation of the deferred module and the synchronous dependencies that must run before its export can be used. If compile is never called and no other code accesses the namespace, a purely synchronous deferred portion may never be evaluated.
Be mindful that inspecting or destructuring an export is also an access. For example, reading compiler.createProgram to save it in a local variable can trigger evaluation just as calling it does. The deferred boundary is therefore about when the namespace is touched, not whether a particular function is ultimately invoked.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
Choose between static, deferred, and dynamic imports
| Import form | When the graph is fetched and linked | When code is evaluated | Caller and specifier | Good fit |
|---|---|---|---|---|
Ordinary static import |
During module loading | As part of module loading | Synchronous use; statically written specifier | The module is needed immediately or its initialization effects must happen early. |
import defer * as ns |
Up front, as with a static dependency | Synchronous evaluation waits until namespace property access, except where top-level await requires eager evaluation | Callers can remain synchronous; statically written specifier | The module is known in advance, but synchronous initialization can safely wait until first use. |
await import(specifier) |
When the dynamic import is reached | As part of loading the requested module | Returns a promise; the specifier can be computed | Loading should itself be conditional or on demand, or the path is dynamic. |
MDN’s dynamic import reference explains its promise-based behavior. The practical distinction is whether you want to delay graph loading, delay synchronous evaluation while keeping a static dependency, or load a module selected at runtime. Dynamic import requires promise handling; import defer does not turn every caller into an async function.
Top-level await changes what can be deferred
A module that directly uses top-level await cannot wait for a synchronous namespace access to begin evaluation, because its evaluation is asynchronous. Such a module is evaluated eagerly. Asynchronous dependencies also run when required, although independent synchronous portions of the graph may still be deferred. MDN’s reference and the TC39 proposal describe this constraint.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
So import defer is not a way to make an asynchronous module behave synchronously. If a dependency uses top-level await, assess the actual graph rather than assuming that every part waits for the first property read.
Side effects, errors, and shared module state
Move side effects only when their timing is safe
Deferral moves top-level effects later. Do not defer setup that must happen before the rest of the application proceeds—for example, installing a polyfill needed by code that runs earlier. Review initialization code for registrations, global changes, event handlers, and other work whose ordering matters. MDN warns that deferred imports change when side effects occur.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
Know which failures are early and which can wait
Fetch, parse, and link problems remain part of preparing the static import graph, so deferral does not hide a missing dependency or a syntax or linking error until first use. If evaluation of work that remained deferred fails, that failure surfaces synchronously at the operation that triggers evaluation.
Imports do not create a second copy
The modifier applies to this import’s evaluation timing, not to a separate instance of the module. A non-deferred import of the same module can cause it to evaluate earlier, and a module’s code executes at most once within the module system’s shared state.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
The then export exception
A deferred namespace does not expose an export named then. If a module needs to provide that export, use a regular import or re-export it under another name rather than relying on the deferred namespace to expose it.
Check support before using the syntax
MDN currently labels import defer experimental, of limited availability, and not Baseline because some widely used browsers do not support it. Check the actual browsers and server-side runtimes you target, as well as your transpilation or bundling pipeline and deployment mode, before making the syntax part of an application. MDN’s compatibility information is the relevant starting point; support should not be assumed across environments.
Quick Recap
When it is a good fit
- Use it for a statically known module whose synchronous initialization is unnecessary until a later interaction or code path.
- Keep ordinary static imports for modules needed immediately or for effects that must occur early.
- Use dynamic
import()when the module should not be loaded until a condition is met, or when the specifier is computed and promise-based loading is acceptable. - Measure your own application if startup performance is the goal. The proposal’s motivation is reducing unnecessary initialization CPU work; the cited sources establish no general benchmark or guaranteed savings.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

