Environment
- Device: MacBook Air (M3, 2024), 16 GB RAM
- macOS: [ex: Sequoia 15.1]
- Figma desktop app: [126.6.12]
Summary
The Figma desktop app appears to create ScreenCaptureKit (SCStream) capture sessions and never tears them down, leaking them over time. After ~10 days of uptime, dozens of screen-capture sessions accumulate, many still actively capturing at ~30 fps, driving WindowServer memory to ~20 GB, exhausting RAM, forcing 14 GB of swap, and freezing the whole machine. The sessions persist even after Figma is quit (they become orphaned in replayd) and are only cleared by a reboot.
Suspected trigger
The on-screen color picker / eyedropper (which samples pixels from the screen and requires Screen Recording). It froze on every use; each invocation appears to leave an open capture stream behind instead of closing it.
Impact
WindowServer resident/footprint memory grew to 20 GB (normal baseline ~100–500 MB).- RAM (16 GB) exhausted → 13.5 GB swap used → sustained swap thrashing → system-wide freezing, independent of how many windows are open.
- Worsens with uptime; quitting Figma does not release the leaked sessions (orphaned), only a reboot does.
Evidence
macOS Control Center → Privacy showed Figma → Screen Recording active even with no Figma window open.
Live capture session counts via replayd health logs:
sudo log show --last 5s --predicate 'process=="replayd"' | grep "setupHealthMonitor" \
| grep -oE "screenframeCount=[0-9]+" | sort | uniq -c
29 screenframeCount=0 # orphaned/dead sessions
2 screenframeCount=73
40 screenframeCount=74 # ~50 sessions ACTIVELY capturing at ~30fps
8 screenframeCount=75Total ~316 setupHealthMonitor log lines per 20 s window. One session reported _screenTimeSeconds=825444 (~9.5 days continuous), matching system uptime — i.e. a capture stream opened near boot and was never closed.
replayd logged repeated session creation (-[SCCaptureSession initWithStreamID:...clientBundleID:...]) and requireApprovalForScreenCaptureUsage, with new sessions still being created days into the session.
Actual behavior
Capture sessions accumulate (50+ active, 29+ orphaned), keep capturing at ~30 fps continuously, and survive app quit, leaking into WindowServer until reboot.
Workaround
Revoke Figma's Screen Recording permission (System Settings → Privacy & Security → Screen Recording), or quit/relaunch Figma frequently instead of leaving it open for days.
