Microtasks vs Macrotasks

Key Differences
AspectMicrotasksMacrotasks
PriorityHighLow
ExamplesPromises, queueMicrotask, MutationObserversetTimeout, setInterval, setImmediate, I/O, UI rendering
ExecutionAfter current task, before next macrotaskAfter all microtasks are cleared
Queue TypeMicrotask Queue (Job Queue)Callback Queue (Task Queue)

Example 1: Execution Order Demonstration

JavaScript Editor
Microtask Sources
  • Promise.then/catch/finally
  • queueMicrotask()
  • MutationObserver callbacks
  • process.nextTick() (Node.js)
  • Some browser-specific APIs
Macrotask Sources
  • setTimeout/setInterval
  • setImmediate (Node.js)
  • I/O operations
  • UI rendering
  • Event listeners (click, scroll, etc.)
  • requestAnimationFrame

Example 2: Mutation Observer (Microtask)

JavaScript Editor

Example 3: queueMicrotask API

JavaScript Editor
⚠️ Common Pitfalls
Microtask Starvation

If you keep adding microtasks recursively, macrotasks never get a chance to run.

JavaScript Editor
Blocking Between Microtasks

Microtasks run to completion - long-running microtasks block rendering.

JavaScript Editor
Exercise: Fix the Task Ordering Issue
JavaScript Editor