← flaviocopes.com

How to use top-level await in JavaScript

Updated Jun 26 2021

Usually can use await only inside async functions. So it’s common to declare an immediately invoked async function expression to wrap it:

(async () => {
  await fetch(/* ... */)

or also declare a function and then call it:

const doSomething = async () => {
  await fetch(/* ... */)


Top-level await will allow us to simply run

await fetch(/* ... */)

without all this boilerplate code.

With a caveat: this only works in ES modules.

For a single JavaScript file, without a bundler, you can save it with the .mjs extension and you can use top-level await.

Wanna go from noobie to expert?

I wrote an entire book on this topic πŸ‘‡

I also got a super cool course πŸ‘‡

© 2023 Flavio Copes Flavio Copes using Notion to Site Notion to Site

Interested in solopreneurship?