Context
The APNs-wake background sync uses a 25s timeout (WaveSyncPushHandler → wavesync_background_sync_targeted(..., 25, ...)), chosen to fit inside the historical ~30s background grant. iOS 26 tightened background execution, so the grant may occasionally be shorter.
Task
- Confirm on-device how much background time the silent-push wake actually gets on iOS 26.
- Keep the timeout conservative; ensure a truncated / partial sync returns gracefully (
UIBackgroundFetchResult) and relies on the next foreground resume (already wired via the lifecycle observer).
- Adjust the 25s value if measurements warrant.
References
Context
The APNs-wake background sync uses a 25s timeout (
WaveSyncPushHandler→wavesync_background_sync_targeted(..., 25, ...)), chosen to fit inside the historical ~30s background grant. iOS 26 tightened background execution, so the grant may occasionally be shorter.Task
UIBackgroundFetchResult) and relies on the next foreground resume (already wired via the lifecycle observer).References
docs/research/ios-sync-state-of-the-art.md