[Bug] Desktop app (macOS) pegs GPU at 70-90% while idle — should be near-zero
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
Buzz Desktop (v0.4.26, `xyz.block.buzz.app`, Tauri + React) continuously consumes **70-90% GPU on an M1 Pro (MacBookPro18,1) while the window is simply open and idle** — no scrolling, no typing, no huddle active. GPU drops to **0% immediately when the window is minimized**, confirming it's active rendering/compositing rather than a background task.
For a chat app displaying mostly static text, idle GPU should be in the single digits. 70-90% sustained is a significant resource drain (battery, fan noise, energy) on Apple Silicon.
**Likely contributors found in code:**
- `src/shared/ui/SpoilerParticles.tsx` — a 2D canvas that calls `requestAnimationFrame(frame)` every frame regardless of whether content changed (lines 135/144), gated only by `prefers-reduced-motion`.
- `src/shared/theme/ThemeProvider.tsx` — macOS window **vibrancy** (`set_window_vibrancy`, material `sidebar`) is force-applied by "Buzz" themes with no user opt-out (line 324, 348). Full-window `NSVisualEffectView` blur forces continuous GPU compositing. Switching to a non-Buzz theme did not reduce idle GPU in my testing.
- `tauri.conf.json` sets `"backgroundThrottling": "disabled"` — worth revisiting given the above.
**Repro:**
1. Open Buzz Desktop on macOS (Apple Silicon), any channel, leave idle.
2. Observe GPU usage (Activity Monitor ▸ GPU History, or a stats tool): 70-90%.
3. Minimize window → drops to 0%.
**Expected:** GPU near-idle (single digits) when no visible content is animating. The particle canvas should pause when its content hasn't changed, and vibrancy should be a user-toggleable setting rather than theme-mandated.
**Workaround:** enabling macOS Reduce Motion helps (disables the particle loop) but shouldn't be required to use the app without excessive GPU draw.
Contributor guide
Research direction
Start by reproducing the idle GPU usage on macOS with Activity Monitor, then inspect src/shared/ui/SpoilerParticles.tsx, src/shared/theme/ThemeProvider.tsx, and tauri.conf.json. Compare behavior with Reduce Motion, minimized windows, and different themes. Done means idle GPU usage is near-single-digit without requiring Reduce Motion, while visible animations and vibrancy behavior remain intentional and testable.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, react, rust
- Domain
- desktop, frontend, performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100