Repository navigation
feat(network): log the network path and name cellular-denied failures - #999
Merged
Merged
Conversation
A user on 5G saw every request fail with ENETDOWN until they force-quit the app. The log had no record of what iOS reported about the network, so the cause couldn't be pinned down. NetworkPathMonitor logs each NWPath change: status, unsatisfied reason, interfaces, and IPv4/IPv6/DNS support. When iOS reports cellularDenied, connection-error dialogs now say Cellular Data is off for Flipcash and offer Open Settings instead of "We couldn't reach the network". Session.showConnectionFailure(_:) picks the dialog for the send, tip, conversation, deep-link and username-lookup error paths.
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.
A user on 5G had every request fail with
Network is down(ENETDOWN) until they force-quit. Cellular Data was on and no VPN was active. Our logs record nothing about what iOS thinks of the network, so the cause is still open.Changes
NetworkPathMonitorlogs everyNWPathchange underflipcash.network-path: status,unsatisfiedReason, interfaces, expensive/constrained, and IPv4/IPv6/DNS support. The next report will show whether iOS considered the path usable while requests failed..cellularDenied, connection-error dialogs say Cellular Data is off for Flipcash and offer Open Settings. Otherwise they show the existing copy.Session.showConnectionFailure(_:)chooses between the two. Send, tip, conversation, deep-link and username-lookup errors use it.The cellular-denied dialog was checked on a device with Wi-Fi off and Flipcash's Cellular Data switch off.
Not in this PR
I tried re-resolving gRPC hosts on path changes (plan in
.claude/plans/2026-10-06-grpc-reresolve-on-path-change.md) and reverted it: on device, lookups on Wi-Fi and cellular returned the same addresses, including the one the user was stuck on, and it worked over cellular. If the new logging shows a satisfied path during the failures, the next candidate is rebuilding the gRPC clients after repeated ENETDOWN.