[ Package conformance ]
Expo SDK · >=55.0.0
expo-background-task
native-seam: upstream expo-background-task JS (BackgroundTaskStatus/Result enums, task-name validation, the Restricted-status iOS-Simulator warning path) runs unchanged from the bundle; only the ExpoBackgroundTask expo module is ours, mirroring BackgroundTaskScheduler.swift/BackgroundTaskModule.swift on the reference iOS Simulator EXACTLY — getStatusAsync returns Restricted (the upstream "if we're on emulator we should definitely return restricted" path) and register/unregisterTaskAsync throw the verbatim simulator exception ("Background Task is not available on simulators. Use a device to test it."). this IS the complete faithful contract on the reference device: BGTaskScheduler does not run on the iOS Simulator at all, so an app calling expo-background-task there already gets exactly this (the upstream JS even has a dedicated Simulator-restricted warning branch). same faithful "the Simulator genuinely cannot do this, and that is correct" tier as expo-sms / react-native-exit-app.85%
API coverage


← iOS 26.4|Peach →
expo-background-taskExpo Background Taskexpo-background-task restricted-simulator lifecycle across six proof stages: status, expiration listener, task definition, skipped registration, absent-task unregister, and debug trigger.
Diff0.19%
DeviceiPhone 16
OracleiOS 26.4
CapturedAug 20, 2026
iOS 26.4PeachDiff
Expo Background TaskiOS 26.4
Expo Background TaskiOS 26.4
Expo Background TaskiOS 26.4
Expo Background TaskiOS 26.4
Expo Background TaskiOS 26.4
Expo Background TaskiOS 26.4
Working (4)
getStatusAsync (Restricted — exact upstream emulator path)registerTaskAsync/unregisterTaskAsync (throw the verbatim upstream simulator exception)triggerTaskWorkerForTestingAsync (void)onTasksExpired listener support; upstream enums + task-name validation + the Restricted-status warning path run from the bundle
Missing (1)
real OS background execution windows (BGTaskScheduler/WorkManager) and physical-device "available" status — but these never work on the reference iOS Simulator either (it reports Restricted by design); a real execution path needs a physical device the Simulator and browser alike do not provide