DEV Community

Mohsen Fallahnejad
Mohsen Fallahnejad

Posted on Edited on Originally published at bitlyst.blog

queueMicrotask Explained: The Smallest Async Queue in JavaScript

queueMicrotask Explained

queueMicrotask is a low-level JavaScript API that lets you schedule a function to run in the microtask queue.

It runs:

  • After the current synchronous code
  • Before any macrotasks (setTimeout, setInterval, requestAnimationFrame)
  • Before rendering

🧠 What Is a Microtask?

JavaScript has two main async queues:

Queue Examples
Microtask queueMicrotask, Promise.then, await
Macrotask setTimeout, events

JavaScript always drains the microtask queue fully before moving on.


⚙️ Basic Usage

queueMicrotask(() => {
  console.log("microtask");
});

console.log("sync");
Enter fullscreen mode Exit fullscreen mode

Output:

sync
microtask
Enter fullscreen mode Exit fullscreen mode

🔍 queueMicrotask vs Promise.then

Feature queueMicrotask Promise.then
Creates Promise ❌ ✅
Intent clarity ✅ ⚠️
Error handling Global Promise-based

⚠️ Error Behavior

queueMicrotask(() => {
  throw new Error("boom");
});
Enter fullscreen mode Exit fullscreen mode

This becomes a global error, not a rejected Promise.


🔁 Execution Order Example

console.log("start");

setTimeout(() => console.log("timeout"), 0);
queueMicrotask(() => console.log("microtask"));
Promise.resolve().then(() => console.log("promise"));

console.log("end");
Enter fullscreen mode Exit fullscreen mode

Output:

start → end → microtask → promise → timeout
  ├─ Sync code runs first
  ├─ Microtasks drain next
  └─ Macrotasks (setTimeout) run last
Enter fullscreen mode Exit fullscreen mode

🚨 Microtask Starvation

function loop() {
  queueMicrotask(loop);
}
loop();
Enter fullscreen mode Exit fullscreen mode

This freezes the page because microtasks never finish.


🧩 When to Use

✅ Precise scheduling

✅ Libraries / frameworks

❌ Delays or animations


✅ Summary

Concept Meaning
queueMicrotask Schedules microtask
Priority Higher than timers
Use carefully Yes

✨ Final Takeaway

queueMicrotask is powerful but sharp — use it only when you need microtask precision.


Originally published on Bitlyst.

Top comments (0)