Reproduction steps
1 Use an account with Higher Video Quality, so Custom mode offers 90/120 fps.
2 Screen share settings: Custom, 120 fps, motion.
3 Share a game running well above 120 fps. I used League of Legends at ~230 fps on a 240 Hz monitor.
4 Check the frame rate the stream actually delivers.
Expected behaviour
about 120 fps.
Actual behaviour
60 fps, every time.
Build information
Fluxer desktop 2026.1106.11400.0 (Electron 44.10.0, livekit-client 2.22.3), Windows 11 Pro (build 26200)
NVIDIA GeForce RTX 5080 (driver 32.0.16.2101), main display 3840×2160 at 240 Hz. A second display (1080×1920, 100 Hz) runs on the CPU's integrated AMD graphics.
Self-hosted instance via rexctl 2026.1105.30754, bundled LiveKit server v1.12.0
Higher Video Quality on for the account; max_screen_share_bitrate at its default (9 Mbit/s)
Platform
Windows, Linux
Evidence
I counted frames arriving at the LiveKit server (RTP marker bits on the incoming video track) over 12–15 seconds:
Custom 120, source resolution (3840×2160), H.265: 59.6 fps, 7.3 Mbit/s (layer max 9 Mbit/s), no loss
Custom 120, 720p, H.265, game in motion: 60.0 fps, 4.6 Mbit/s, no loss
In the 4K case the bitrate was below the layer's limit and nothing was lost, yet the frame rate sat at 60. A flat 60.0 against a 230 fps source looks like a capture ceiling rather than encoder rate control or bandwidth.
With 120 selected, buildScreenShareOptions in fluxer_app/src/features/voice/utils/ScreenShareOptions.ts requests resolution.frameRate: 120 and screenShareEncoding.maxFramerate: 120. So the app asks for 120, and the limit seems to be applied further down, in the desktop capture path (Electron's screen capture on Windows). The two-GPU, mixed-refresh-rate display setup might be relevant.