Using await at the Top Level in ES Modules

The article explains top-level await
, a feature introduced in ES2022 that allows using await
directly in ES modules without wrapping it in an async
function. It highlights practical uses like fetching config files, dynamically importing modules, and loading WebAssembly at the top level—making async code cleaner and more readable. The article also covers limitations: it only works in modules (.mjs
or .js
with "type": "module"
), introduces blocking behavior for importing modules, can break in circular dependencies, and isn’t supported in CommonJS or traditional scripts