block / block/buzz

[Bug] Desktop app (macOS) pegs GPU at 70-90% while idle — should be near-zero

Open
#2,959 3 comments 1 reaction 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.