# fix\(mobile\): update Expo 58 to restore widgets and Live Activities · PR \#14734 · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/pull/14734)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

State: merged

Source repository: pingdotgg/t3code

Source branch: mobile/sdk58-widget-regressions

Target branch: main

Head commit: 5f8beb94ab14398147572091b75e732aa6c2ccdf

[Discussion and reviews](https://git.cafe/pingdotgg/t3code/pull/14734)

[Commits](https://git.cafe/pingdotgg/t3code/pull/14734/commits?format=markdown)

[Files changed](https://git.cafe/pingdotgg/t3code/pull/14734/diffs?format=markdown)

## Description

---

Build 97's widgets and Live Activities cannot render because Expo UI calls `React.memo`, which Expo Widgets 58.0.9 does not provide in its isolated runtime. The SDK's recommended package versions have moved ahead as well.

Upgrade Expo to 58.0.2 and its recommended package set, including Expo UI and Expo Widgets 58.0.11. This adopts the upstream runtime fix from [expo/expo#50834](https://github.com/expo/expo/pull/50834), first released in Expo Widgets 58.0.10, and removes our duplicate `memo` patch. Carry forward the remaining audio, blur, sharing, and widget patches to their new package versions. Exclude the repo's intentionally selected TypeScript compiler from Expo's version recommendation check.

Validation:
- `expo install --check` passes. React Native and React versions remain at the SDK 58 versions already on main.
- Mobile typecheck and 72 focused widget/registration tests pass.
- Both iOS and Android widget runtime bundles build and initialize. The installed React stub matches the published upstream package exactly.
- Rebuilt and installed the iOS native client on an iOS 26.5 simulator. The usage widget renders; Live Activity creation and updates work with `staleDate`, and the updated content renders on the Lock Screen.

The simulator verification uses fixture data through a temporary diagnostic screen, exercising the real native factories and extension rendering. It bypasses the normal thread-start and relay-registration path; physical-device relay/APNs delivery remains unverified. The screen is not included in the change.

A new native build is required. OTA updates cannot replace the extension runtime. Expo displays the red error box only in DEBUG builds; TestFlight renders the same error node as an empty view.

| Presentation | Before: main | After: upstream Expo releases |
| --- | --- | --- |
| Subscription usage | ![Before: widget runtime initialization error](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b815b9ba57e53818/t3-widget-before.png) | ![After: session and weekly quotas render](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/dc33eea50de11379/t3-upstream-widget-after.png) |
| Live Activity | ![Before: Live Activity runtime initialization error](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/b78f82d75ca1ae20/t3-live-activity-before.png) | ![After: updated content renders on the Lock Screen](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/f0f7070d9569a5c8/t3-upstream-live-activity-after.png) |

Model: GPT-6.1 Sol. Harness: Codex in T3 Code.

