Add iOS local network permission description - #255
Open
Techdox wants to merge 1 commit into
Open
Conversation
Declare the required Info.plist usage string so iOS can prompt before Substreamer connects to LAN-hosted music servers.
Techdox
marked this pull request as ready for review
July 28, 2026 02:15
Author
|
Related to - #243 |
Owner
|
Yep I have that on my todo list, thanks for the PR |
ghenry22
added a commit
that referenced
this pull request
Aug 16, 2026
… servers Fresh iOS installs could not connect to a self-hosted server on the local network, and Chromecast discovery found no devices. One cause for both. expo-dev-launcher injects NSLocalNetworkUsageDescription at prebuild and then adds an Xcode run-script phase that deletes it again from every non-Debug build, gated on the value containing the literal "Expo Dev Launcher". Being a devDependency doesn't keep it out of release builds — EAS installs those and the plugin is auto-applied. So production shipped with no reason string at all, while still declaring NSBonjourServices for Cast: the app announced it browses the local network and was never able to ask for permission. On iOS 14-17 the system prompted anyway, without an explanation, which is why existing users kept working and only fresh installs broke; iOS 18+ turns that into a silent denial of both the server connection and the mDNS browse. Setting our own description defeats the strip simply by not matching its literal. That is load-bearing and invisible, so the explanation lives in the plugin that already documents the phase rather than in app.json, which the release script JSON.parses and rewrites. Also declares the two Cast Bonjour types ourselves. No plist delta today — RNQP already supplied them and the strip preserves them — but it stops the array being deleted outright when the strip removes _expo._tcp, and states the app's own capabilities in the app's own manifest instead of inheriting whatever a dependency injects, which is the failure mode above. Diagnosis and fix from #255 by Techdox.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
NSLocalNetworkUsageDescriptionto the Expo-managed iOS Info.plist configurationWhy
iOS requires this usage description before an app can prompt for permission to connect to LAN hosts. Without it, Substreamer does not appear under Settings > Privacy & Security > Local Network, and direct connections to self-hosted music servers can fail.
Validation
npx tsc --noEmitnpx jest --no-coverage --no-watchman