Skip to content

[Docs] Fold WatchConnectivity diagnostics findings into package documentation #89

@leogdion

Description

@leogdion

Context

Examples/Sundial/WATCHCONNECTIVITY_DIAGNOSTICS.md (removed from the tree — full text in git history) captured a resolved 2025-11-10 investigation whose findings are durable and belong in the package docs (e.g. a 'WatchConnectivity behavior notes' DocC article or README section), not in an example directory.

Durable findings to preserve

  1. Asymmetric reachability is NORMAL: watchOS actively monitors iPhone reachability; iOS passively monitors the watch (battery). The iPhone routinely reports isReachable: false while messages still deliver — WatchConnectivity determines actual reachability during the send, not at observation time.
  2. isPairedAppInstalled degrades with Xcode installs: apps side-loaded via Xcode don't register properly with WatchConnectivity's app database (com.apple.wcd logs 'Application context data is nil'). Status display is wrong (false), but sends still work. Production installs via the Watch app report correctly. Worth documenting as a development-build caveat.
  3. Live-state-before-send pattern: cached/@published connectivity state goes stale across async boundaries; read isReachable/activationState from the actor immediately before sending and log the actual transport from the send result, not the predicted one.
  4. Platform cheat-sheet: watchOS — isPaired implicitly true, pairedUpdates() unavailable, reachability reported more consistently; iOS — conservative reachability reporting.

Task

Write these into proper SundialKitConnectivity/SundialKitStream documentation and link from the demo README.

Metadata

Metadata

Assignees

No one assigned

    Labels

    component:docsDocumentation and examplesdocumentationImprovements or additions to documentation

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions