feat(webclient): warn users when browser version is below minimum requirement#687
Conversation
…imum Adds checkBrowserVersion() to BrowserCapabilities.ts that detects the current browser from the user-agent and returns a warning when it is below the documented CloudXR.js minimum versions: - Meta Quest Browser: OculusBrowser < 40 (proxy for Quest OS v79 era) - Pico Browser: Chrome < 125 in the Pico UA - Desktop Chrome: Chrome < 125 Pico is detected before Quest because Pico UAs include an "OculusBrowser/7.0" compat token that would otherwise trigger the Quest path. Safari and Firefox are not warned since they work with IWER and are not officially tested respectively. The warning is non-blocking: it is injected at the top of the checkCapabilities() warnings array and surfaced as an info notice in the 2D UI, without disabling the Connect button. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughA new exported function Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Warning Review ran into problems🔥 ProblemsGit: Failed to clone repository. Please run the Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@deps/cloudxr/webxr_client/helpers/BrowserCapabilities.ts`:
- Around line 61-69: The Chrome version regex pattern on line 62 matches any UA
containing "Chrome/<version>" which causes false positives for Edge, Opera, and
other Chromium-based browsers that also contain this string in their user agent.
Before returning the Chrome-specific warning message, add a check to exclude
common non-Chrome Chromium tokens (such as "Edge", "Opera", "OPR", "Edg", etc.)
from the UA string. This verification should happen after confirming chromeMatch
is valid but before returning the message indicating Chrome was detected.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: dcbf6193-d83d-491f-b029-6c8ef222f9e2
📒 Files selected for processing (1)
deps/cloudxr/webxr_client/helpers/BrowserCapabilities.ts
…BrowserVersion Chrome/(\d+) also matches Edge (Edg/) and Opera (OPR/) UAs since they include "Chrome/" as a Chromium compat token. Guard the version check with a non-Chrome-Chromium exclusion so those browsers aren't warned about an outdated Chrome version. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…checking globals Replace window.IWER global check and UA string heuristics with an explicit emulated parameter on checkBrowserVersion() and checkCapabilities(). App.tsx reads iwerWasLoaded from sessionStorage (already set during IWER initialisation) and passes it through, so the browser version check is skipped cleanly when running under an XR emulator without any window/any casts. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
LGTM. We should test on all combinations of browsers and devices (and public vs private PICO browser released) |
…ported Previous wording "recommended for optimal streaming quality" didn't make it clear that AV1 was actually missing on the device. New wording explicitly states AV1 is not supported and that streaming quality may be reduced. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
AV1 is the default but HEVC (H.265) is a selectable alternative. Add a separate optional capability check for HEVC so users see explicitly which codecs are available on their device, mirroring the existing AV1 check pattern. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…read Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…curate Both messages now use the same phrasing and list H.264 as the guaranteed fallback. Previously AV1 gave no action guidance and HEVC said "use AV1" which could be wrong if AV1 is also unsupported. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Summary
checkBrowserVersion()toBrowserCapabilities.tsthat parses the user-agent and returns a warning when the browser is below the documented CloudXR.js minimum versionsOculusBrowsermajor version < 40 (approximate proxy for Quest OS v79; browser 41.2 was the first to declare OS v81 as its minimum — 40 is the conservative lower bound for the v79 era)Chromein the Pico UA < 125 (Pico UA is detected first since it includes anOculusBrowser/7.0compat token that would otherwise trigger the Quest path)checkCapabilities()warnings, shown as an info notice in the 2D UI without disabling the Connect buttonTest plan
OculusBrowser/39.x— confirm warning appearscheckBrowserVersion()is exported and callable independently🤖 Generated with Claude Code
Summary by CodeRabbit
Release Notes