IntersectionObserver for a single DOM node

Development11 jun 2026

Never write code like:

new IntersectionObserver((entries) => {
  const entry = entries[0];

… even if you only care about a single node. Why? Because, it turned out, sometimes browsers queue multiple events (for the same DOM node) and invoke the callback with multiple entries. Only the last item has a non-stale data inside. So the correct approach is:

new IntersectionObserver((entries) => {
  const entry = entries.at(-1);