🐛 - Fix EAS Update scheme validation#641
Conversation
EAS Update's manifest validator requires URL schemes to match ^[a-z][a-z0-9+.-]*$ (lowercase only). The "liveActivity" scheme failed validation due to its uppercase A, blocking eas update. - Rename scheme to "liveactivity" in app.config.ts - Update the Live Activity deep-link URL to liveactivity:// - Make the JS deep-link handler case-insensitive so it handles both old (already-installed) and new builds Claude-Session: https://claude.ai/code/session_015RHnt2t7dXS9c5PAqLNkgM
There was a problem hiding this comment.
Code Review
This pull request updates the deep link scheme for live activities from camelCase ("liveActivity") to lowercase ("liveactivity") to comply with EAS Update manifest validation. This change is applied across the app configuration, deep-linking hook, and Swift widget code. The review feedback recommends a more robust check in the deep-linking hook by using startsWith instead of includes to prevent potential false positives.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| trackEvent("deep_link_widget") | ||
| } | ||
| if (url.includes("liveActivity")) { | ||
| if (url.toLowerCase().includes("liveactivity")) { |
There was a problem hiding this comment.
Using .includes() to match the deep link scheme can lead to false positives if the string "liveactivity" appears elsewhere in the URL (for example, in a query parameter or path of a different URL). It is safer and more robust to check if the URL starts with the scheme.
| if (url.toLowerCase().includes("liveactivity")) { | |
| if (url.toLowerCase().startsWith("liveactivity://")) { |
Problem
eas updatewas failing with a manifest validation error:EAS Update's manifest validator requires URL schemes to be lowercase (
^[a-z][a-z0-9+.-]*$). OurliveActivityscheme (scheme/2) failed because of the uppercaseA. This surfaced only oneas update—eas buildand the OS treat schemes case-insensitively, so it never complained before.Changes
app.config.ts— rename schemeliveActivity→liveactivity(the actual fix).BetterRailLiveActivity.swift— Live Activity deep-link URL now usesliveactivity://to match the registered scheme.use-deep-linking.ts— deep-link handler matches case-insensitively, so it correctly handles both old (already-installed) builds emittingliveActivity://and new builds emittingliveactivity://.Safety
The Swift change only takes effect in a new native build, but the current production binary still emits
liveActivity://. Because the JS handler is now case-insensitive, this is safe to ship as an OTA update right now — both casings are handled.https://claude.ai/code/session_015RHnt2t7dXS9c5PAqLNkgM