Intersection Observer & Efficient Scroll Handling

What is the most efficient way to track element visibility for analytics?
const analyticsObserver = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const timeVisible = entry.time;
      const visiblePercentage = Math.round(entry.intersectionRatio * 100);
      if (!entry.target.dataset.tracked) {
        trackElementView({
          elementId: entry.target.id,
          timeVisible,
          visiblePercentage
        });
        entry.target.dataset.tracked = 'true';
      }
    }
  });
}, {
  threshold: [0, 0.25, 0.5, 0.75, 1]
});
Next Question (20/20)