exo icon indicating copy to clipboard operation
exo copied to clipboard

resolve issue #1025

Open samiamjidkhan opened this issue 2 months ago • 0 comments

Motivation

https://github.com/exo-explore/exo/issues/1025

Changes

  • Add JSON comparison in AppStore before state updates - only triggers Svelte reactivity when data actually changes
  • Add visibility-based polling - skips fetches when browser tab is hidden
  • Reduce poll interval from 1s to 2s
  • Add hash-based render check in TopologyGraph to prevent unnecessary D3 re-renders
  • Add will-change CSS hints and prefers-reduced-motion support
  • Pause all CSS animations when page is hidden

Why It Works

The root cause was Svelte reactivity triggering full re-renders on every 1s poll, even when data hadn't changed. By comparing JSON before state assignment, Svelte's reactivity system is only triggered when something actually changed. The TopologyGraph hash check provides an additional guard against unnecessary D3 SVG redraws.

Test Plan

Manual Testing

Hardware: MacBook Pro

  • Tested with fake nodes only, some more testing with real nodes would be nice @AlexCheema :)

Automated Testing

N/A

samiamjidkhan avatar Jan 01 '26 04:01 samiamjidkhan