Building iOS Live Activities for a motorcycle ride app and keep hitting the same wall: expo-widgets@56.0.15 doesn't let me pass staleDate to ActivityKit. Native side hardcodes staleDate: nil when it builds ActivityContent, no way to set it from JS.
The lock screen shows current speed + distance + elapsed time, fed by a background location task running every ~10s. Rider goes into a tunnel, GPS dies, OS may suspend the bg task entirely. The activity just freezes on whatever the last reading was. Phone shows "47 mph" for 30 minutes while the rider's at lunch. Apple's whole answer to this is ActivityContent.staleDate (https://developer.apple.com/documentation/activitykit/activitycontent/staledate). Once the wall clock passes it, iOS dims the UI and pauses native timers automatically.
What I'd want exposed: an optional staleDate?: Date | null parameter on both LiveActivityFactory.start(props, url?, staleDate?) and LiveActivity.update(props, staleDate?). Nil keeps current behavior. We've been carrying a ~50-line pnpm patch since May doing exactly this. PR with the implementation: https://github.com/expo/expo/pull/46343
One gotcha that bit us: the PR has a prerequisite (https://github.com/expo/expo/pull/46340) because expo-modules-core's Date: Convertible extension throws on Double timestamps, which is what someDate.getTime() gives you over the JSI bridge. Without the core fix the staleDate plumbing crashes at runtime with ArgumentCastException. Found that one the hard way before patching.
Open to a different API shape if I missed an existing convention.

Photo Viewer

View photos in a modal