Skip to content

[widgets] Add React hooks stub - #50834

Merged
jakex7 merged 1 commit into
mainfrom
@jakex7/widgets/stubReactImports
Sep 30, 2026
Merged

jakex7 merged 1 commit into
mainfrom
@jakex7/widgets/stubReactImports

Conversation

@jakex7

@jakex7 jakex7 commented Sep 30, 2026

Copy link
Copy Markdown
Member

Why

expo-ui used React.memo, which is not available in widgets runtime d49a8bc

How

Stub all React hooks and component utils that can potentially be used.

Test Plan

Tested in widgets app.

Checklist

@expo-bot expo-bot added contributor: internal PR author is a member, owner, or collaborator of the expo org bot: passed checks ExpoBot has nothing to complain about labels Sep 30, 2026
@jakex7
jakex7 merged commit 7c4ea50 into main Sep 30, 2026
38 checks passed
@jakex7
jakex7 deleted the @jakex7/widgets/stubReactImports branch September 30, 2026 16:18
alanjhughes pushed a commit that referenced this pull request Oct 1, 2026
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and publish to npm
yourself or [setup this action to publish
automatically](https://github.com/changesets/action#with-publishing). If
you're not ready to do a release yet, that's fine, whenever you add more
changesets to main, this PR will be updated.


# Releases
## @expo/[email protected]

### Minor Changes

- Emit `{scheme}://?__expo_url={manifestUrl}` development build launch
URLs instead of the legacy
`{scheme}://expo-development-client/?url={manifestUrl}` form.

Add `EXPO_NO_DEV_MENU=1` to append the reserved `__expo_*` params that
keep the dev menu closed to Expo Go and development build launch URLs:
the terminal URL, the QR code, `/_expo/link`, `/_expo/open`, `expo start
--ios/--android` and `expo run:*`.

([#50290](#50290) by
[@gabrieldonadel](https://github.com/gabrieldonadel))

### Patch Changes

- Use development for Xcode configurations with `Debug` in the name and
production otherwise in `expo run:ios`.
([#49555](#49555) by
[@ramonclaudio](https://github.com/ramonclaudio))
- Use React Native's default `debuggableVariants` to pick the mode in
`expo run:android`. ([#50204](#50204)
by [@ramonclaudio](https://github.com/ramonclaudio))
- Note in `expo start --help` that setting `CI=1` turns off file
watching and Fast Refresh, and how to run without the interactive UI
instead. ([#50843](#50843) by
[@huntie](https://github.com/huntie))
- Remove `EXPO_UNSTABLE_TUNNEL_V2` env flag, and instead make Expo
Tunnels the default. `--tunnel ngrok` may be used to switch to the
legacy tunnels. ([#50829](#50829) by
[@kitten](https://github.com/kitten))
- Updated dependencies.
([#49529](#49529))
  - @expo/[email protected]
  - @expo/[email protected]
## @expo/[email protected]

### Patch Changes

- [Android] Only enable LogBox WebView debugging in debuggable apps.
([#49529](#49529) by
[@kosumic](https://github.com/kosumic))
## @expo/[email protected]

### Patch Changes

- Updated dependencies.
([#49529](#49529))
  - @expo/[email protected]
## [email protected]

### Patch Changes

- Bump recommended `@shopify/flash-list` to `2.3.2` and
`@shopify/react-native-skia` to `2.13.1`.
([#50824](#50824) by
[@zoontek](https://github.com/zoontek))
- [Android] Fix animated GIF and WebP images showing only their first
frame in release builds minified with R8. Fresco 3.7.0 creates these
decoders through reflection, and R8 removed their constructors.
([#50815](#50815) by
[@lukmccall](https://github.com/lukmccall))
- Remove the `AbortSignal.timeout` and `AbortSignal.any` polyfills now
that React Native supports them.
([#50770](#50770) by
[@Kudo](https://github.com/Kudo))
- [Internal] [iOS] Simplify the SwiftPM autolinking plugin's internals.
The generated packages are unchanged.
([#50547](#50547) by
[@chrfalch](https://github.com/chrfalch))
- [iOS] Take module identity, deployment target and dependencies from
`expo-modules-autolinking prebuilt-metadata` in the SwiftPM autolinking
plugin. ([#50548](#50548) by
[@chrfalch](https://github.com/chrfalch))
- [iOS] Fix modules that use Expo Swift macros (`@Field`, `@Record`)
failing to build from source with the SwiftPM autolinking plugin.
([#50548](#50548) by
[@chrfalch](https://github.com/chrfalch))
- Updated dependencies.
([#49555](#49555),
[#50204](#50204),
[#50843](#50843),
[#50290](#50290),
[#49529](#49529),
[#50674](#50674),
[#50829](#50829))
  - @expo/[email protected]
  - @expo/[email protected]
  - [email protected]
  - [email protected]
## [email protected]

### Patch Changes

- Updated dependencies.
([#50801](#50801),
[#49986](#49986),
[#50674](#50674),
[#50786](#50786),
[#50851](#50851))
  - @expo/[email protected]
## [email protected]

### Patch Changes

- [iOS] Remove the legacy `metrics.json` file left behind by the JSON
storage that was replaced with SQLite.
([#50752](#50752) by
[@tsapeta](https://github.com/tsapeta))
- [iOS] Add privacy manifest describing required reason API usage.
([#50734](#50734) by
[@enavermate](https://github.com/enavermate))
## [email protected]

### Patch Changes

- [Android] Bind the barcode image analyzer only while barcode scanning
is enabled, so the camera preview and captured photo use the same frame.
([#50808](#50808) by
[@hitanshur](https://github.com/hitanshur))
## [email protected]

### Patch Changes

- Add missing types to `modelId`.
([#50768](#50768) by
[@zoontek](https://github.com/zoontek))
## [email protected]

### Patch Changes

- [iOS] Add privacy manifest describing required reason API usage.
([#50734](#50734) by
[@enavermate](https://github.com/enavermate))
## [email protected]

### Patch Changes

- [Android] Fix `tintColor` not applying to SVG colors set to
`currentColor`. ([#50744](#50744) by
[@apuyou](https://github.com/apuyou))
## [email protected]

### Patch Changes

- Updated dependencies.
([#50734](#50734))
  - [email protected]
## [email protected]

### Patch Changes

- Add a Jest mock for the Android-only `ExpoIntentLauncher` native
module, so importing `expo-intent-launcher` under the
`jest-expo/android` preset no longer throws `Cannot find native module
'ExpoIntentLauncher'`.
([#50796](#50796) by
[@Abdulrahman3fify](https://github.com/Abdulrahman3fify))
## [email protected]

### Patch Changes

- [Web] Fix spaces in the `subject` and `body` of `composeAsync`
appearing as "+" in the mail client.
([#41465](#41465) by
[@jpaas](https://github.com/jpaas))
## [email protected]

### Patch Changes

- Lay out `RNHostView` hosted content at the size SwiftUI or Compose
gives it on an axis that `matchContents` does not match.
([#50674](#50674) by
[@intergalacticspacehighway](https://github.com/intergalacticspacehighway))
- Updated dependencies.
([#50805](#50805),
[#50844](#50844),
[#50806](#50806))
  - [email protected]
## [email protected]

### Patch Changes

- [iOS] Read host object property names through `getPropNameIdData`
instead of building a `std::string` for every access, making property
access from JavaScript up to 14% faster for long names.
([#50805](#50805) by
[@tsapeta](https://github.com/tsapeta))
- [iOS] The `JavaScriptValue`, `JavaScriptObject` and `JavaScriptArray`
initializers now take the runtime as `borrowing`, so callers no longer
retain it for the call, making host functions that return strings or
numbers up to ~15% faster.
([#50844](#50844) by
[@tsapeta](https://github.com/tsapeta))
- [iOS] `JavaScriptValue`, `JavaScriptObject` and `JavaScriptArray` now
hold a strong runtime handle instead of a `weak` reference to the
runtime, which removes the weak reference traffic and slow-path
reference counting from their hot paths (for example `getObject()` ~16×,
`getArray()` ~12× and `getProperty(_:)` ~1.8× faster).
([#50806](#50806) by
[@tsapeta](https://github.com/tsapeta))
## [email protected]

### Patch Changes

- Allow native push token requests to retry after a transient failure
while preserving shared in-flight requests.
([#50848](#50848) by
[@JoaoPauloCMarra](https://github.com/JoaoPauloCMarra))
- [Android] Fix notification action buttons going missing after an app
update that changes R8 minification, until the app is opened again.
([#50799](#50799) by
[@icoric4](https://github.com/icoric4))
## [email protected]

### Patch Changes

- [iOS] Remove legacy `UserDefaults` keys that are no longer read.
([#50752](#50752) by
[@tsapeta](https://github.com/tsapeta))
- [iOS] Add privacy manifest describing required reason API usage and
the collected data types.
([#50734](#50734) by
[@enavermate](https://github.com/enavermate))
- Updated dependencies.
([#50752](#50752),
[#50734](#50734))
  - [email protected]
  - [email protected]
## [email protected]

### Patch Changes

- Fix missing back animation after opening a screen from a link preview
on iOS. ([#50839](#50839) by
[@Ubax](https://github.com/Ubax))
- Allow setting the native header's light or dark interface style per
`Stack` screen on iOS.
([#50765](#50765) by
[@Ubax](https://github.com/Ubax))
- [Internal] Remove the `import-mode` module and read
`process.env.EXPO_ROUTER_IMPORT_MODE` directly in `useScreens`.
([#50826](#50826) by
[@Ubax](https://github.com/Ubax))
- Fix a crash on launch in production when the app has no `scheme`.
([#50708](#50708) by
[@expo-bot](https://github.com/expo-bot))
- Resolve Native Tabs `xcasset` icon names through the iOS asset catalog
so symbol sets render.
([#48301](#48301) by
[@CavalcanteLeo](https://github.com/CavalcanteLeo))
- Fixes a minor grammatical issue in the error message when `NativeTabs`
is used on an unsupported platform.
([#46202](#46202) by
[@hassankhan](https://github.com/hassankhan))
- Updated dependencies.
([#49529](#49529))
  - @expo/[email protected]
  - @expo/[email protected]
## [email protected]

### Patch Changes

- [Android] Fix the splash screen staying visible over the app on
Android 12 and 13 when the activity stops before the splash screen
exits, for example when the app starts while the device is locked. This
removes the workaround added in #44584.
([#50818](#50818) by
[@zoontek](https://github.com/zoontek))
## @expo/[email protected]

### Patch Changes

- [android] Fix `community/picker` `Picker` not updating its displayed
label after a selection or a `selectedValue` change.
([#50801](#50801) by
[@RaddishIoW](https://github.com/RaddishIoW))
- [web] Fix `ListItem` always showing a pointer cursor, even without an
`onPress`, because React Native Web's `Pressable` applies one
unconditionally. A `ListItem` with no `onPress` now shows the default
cursor instead of misleadingly looking clickable.
([#49986](#49986) by
[@timheilman](https://github.com/timheilman))
- [iOS][Android] `RNHostView` `matchContents` accepts `{ horizontal,
vertical }`, so hosted content can take its width from the parent and
its height from the content.
([#50674](#50674) by
[@intergalacticspacehighway](https://github.com/intergalacticspacehighway))
- [iOS] Stop linking WidgetKit into apps that use `@expo/ui` without
widgets. The `widgetURL`, `activityBackgroundTint`,
`widgetAccentedRenderingMode`, and `containerBackground` (`widget`
placement) modifiers and the `AccessoryWidgetBackground` view now take
effect only inside `expo-widgets` widgets and Live Activities.
([#50786](#50786) by
[@intergalacticspacehighway](https://github.com/intergalacticspacehighway))
- [iOS] Added the `preferredColorScheme` modifier, which sets the color
scheme of a presentation such as `BottomSheet`, including its
background. ([#50851](#50851) by
[@intergalacticspacehighway](https://github.com/intergalacticspacehighway))
## [email protected]

### Patch Changes

- Updated dependencies.
([#50734](#50734))
  - [email protected]
## [email protected]

### Patch Changes

- Add React hook and component helper stubs to prevent missing API
errors when rendering widgets, including `memo` and `forwardRef`.
([#50834](#50834) by
[@jakex7](https://github.com/jakex7))
- [iOS] Stop linking WidgetKit into apps that use `@expo/ui` without
widgets. The `widgetURL`, `activityBackgroundTint`,
`widgetAccentedRenderingMode`, and `containerBackground` (`widget`
placement) modifiers and the `AccessoryWidgetBackground` view now take
effect only inside `expo-widgets` widgets and Live Activities.
([#50786](#50786) by
[@intergalacticspacehighway](https://github.com/intergalacticspacehighway))
- Updated dependencies.
([#50801](#50801),
[#49986](#49986),
[#50674](#50674),
[#50786](#50786),
[#50851](#50851))
  - @expo/[email protected]
## [email protected]

### Patch Changes

- Updated dependencies.
([#50824](#50824),
[#50815](#50815),
[#50770](#50770),
[#50547](#50547),
[#50548](#50548))
  - [email protected]
## [email protected]

### Patch Changes

- Updated dependencies.
([#50824](#50824),
[#50815](#50815),
[#50770](#50770),
[#50547](#50547),
[#50548](#50548))
  - [email protected]
## [email protected]

### Patch Changes

- Updated dependencies.
([#50824](#50824),
[#50815](#50815),
[#50770](#50770),
[#50547](#50547),
[#50548](#50548))
  - [email protected]
## [email protected]

### Patch Changes

- Updated dependencies.
([#50824](#50824),
[#50801](#50801),
[#50744](#50744),
[#50815](#50815),
[#50839](#50839),
[#49986](#49986),
[#50765](#50765),
[#50768](#50768),
[#50770](#50770),
[#50674](#50674),
[#50826](#50826),
[#50708](#50708),
[#48301](#48301),
[#46202](#46202),
[#50818](#50818),
[#50547](#50547),
[#50548](#50548),
[#50786](#50786),
[#50851](#50851))
  - [email protected]
  - @expo/[email protected]
  - [email protected]
  - [email protected]
  - [email protected]
  - [email protected]
## [email protected]

### Patch Changes

- Updated dependencies.
([#50824](#50824),
[#50815](#50815),
[#50839](#50839),
[#50765](#50765),
[#50770](#50770),
[#50826](#50826),
[#50708](#50708),
[#48301](#48301),
[#46202](#46202),
[#50818](#50818),
[#50547](#50547),
[#50548](#50548))
  - [email protected]
  - [email protected]
  - [email protected]
## @expo/[email protected]

No changes in this release.
## [email protected]

No changes in this release.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
zxcvbnmmohd added a commit to zxcvbnmmohd/ihsaanly that referenced this pull request Oct 25, 2026
…ub (#48)

expo-widgets 58.0.7 evaluates ExpoWidgets.bundle in JavaScriptCore with a
React stub that lacks memo. @expo/ui/swift-ui calls memo at module scope
(recycling/useRecycledRows), so the bundle threw on load, the extension never
got a JS context and every widget, gallery previews included, rendered a
RedBox in Debug and nothing in Release.

Backport the 58.0.10 stub (expo/expo#50834) as a bun patch, add a test that
fails if the patch is lost, and document it next to the widget notes.
zxcvbnmmohd added a commit to zxcvbnmmohd/ihsaanly that referenced this pull request Oct 25, 2026
…e key alias (#49)

* chore(mobile): replace the lost Android upload key

The previous upload keystore (SHA-1 D4:E6:…) was left behind on the old
Mac. Nothing had been uploaded to Play with it, so it is replaced rather
than recovered.

- New upload key, SHA-1 2F:7B:80:AC:43:D7:9D:A5:D8:06:E4:BD:B7:C2:74:54:9F:8D:22:D7,
  now kept only in 1Password (Private: "Ihsaanly Android upload keystore").
- Both Firebase projects: new SHA-1 and SHA-256 added, the D4:E6 ones removed;
  google-services.json re-downloaded (new hash and Android OAuth client).
- Android API key restrictions updated to the new SHA-1.
- ANDROID_UPLOAD_* secrets reset in the development and production
  environments.
- TODO: step 6.1 marked done, with the key history.

* docs(repo): branch from production, test on development, PR to production

* docs(todo): set up the Apple App IDs, Services IDs, sign-in keys and APNs

Dev and prod each have their own App ID, Services ID and Sign in with Apple
key, configured in their Firebase project. One APNs key serves both
projects. All keys are in 1Password.

* ci(mobile): build the signed Android app in GitHub Actions

build-android.yml runs on pushes to development or production that touch
the app, and by hand. It prebuilds the branch's variant with the
environment's EXPO_PUBLIC_* variables, signs with the upload key from the
environment secrets, fails unless the output's SHA-1 is the upload key's,
and attaches the result to the run: an .apk on development, an .aab on
production.

app.config.ts takes ANDROID_VERSION_CODE (the run number) as the
versionCode, so every build Play receives counts up.

* ci(mobile): read the apk signature with apksigner and stop masking the key alias

An apk for this minSdk has only the v2+ APK signature, which keytool cannot
read. The key alias moves from a secret to a variable, because a secret
'upload' was masked in every log line.

* build(mobile): version 0.1.0 with build numbers counting up from 1

app.json version is the semver marketing version, bumped by hand per
release. BUILD_NUMBER sets both the iOS buildNumber and the Android
versionCode; build-android derives it from the run number, less the two
runs that came before.

* ci(mobile): build the iOS app and upload it to TestFlight in GitHub Actions

Signs automatically with the App Store Connect API key (xcodebuild
-allowProvisioningUpdates) on the macos-26 runner with Xcode 26.6, and
uploads with the run number as the build number.

* fix(ui): draw the selection ring beside the surface so liquid glass can't hide it

On iOS 26 the Surface is an expo-glass-effect GlassView, whose full-bounds
UIVisualEffectView sits above React Native's border layer, so a border on the
Surface never showed. Surface takes a ring colour and draws it from a sibling
overlay; ChoiceRow, the onboarding ChoiceTile, LibraryCard and the glossary
highlight use it.

* fix(ui): draw the entry card's border as a ring beside the surface

The 1pt border on the Today entry card sat under liquid glass the same way the
selection ring did. Surface's ring now takes a width, and the card passes 1pt,
keeping a matching transparent border so its layout is unchanged.

* feat(onboarding): clearer how, pause, reminders and starting-point steps

The how step names the sunnah acts, and its example circle can be ticked
and cleared. The tracking pause says plainly that it is for the days
sisters do not pray, with the privacy line above the choice. Reminders
drop the daily cap and keep only the quiet hours. The starting point
loses the included preview and the counts, so it fits a small phone.

* fix(mobile): reload into right-to-left on ios as well

Choosing Arabic or Urdu flipped the strings but left the iOS layout
left-to-right until the app was reopened by hand. applyDirection now
reloads on iOS through the same delayed reloadAppAsync path as Android.

The native chrome follows the reload because it is told the direction:
expo-router's NavigationContainer reads I18nManager and passes it to the
react-native-screens header config, which forces it onto the navigation
bar, and the root layout now passes the same answer to NativeTabs, whose
iOS tab bar otherwise inherits UIKit's direction and ignores forceRTL.

The reopen alert and its strings are gone; the language note now says
switching restarts the app, in all ten tables.

* feat(ui): tidy the onboarding welcome step

Language and appearance are now two side-by-side dropdowns (a sheet of
options on iOS and Android, a native select on the web), the star grid
shrinks to the height left so the step fits an iPhone SE without
scrolling, and the privacy link is gone (About still has it).

"Already using Ihsaanly? Sign in" moves into the top bar's leading slot,
where Back appears from the second step, so the footer no longer shifts.
The old restore string is split into restorePrompt and restoreAction in
every language.

* fix(mobile): draw the google sign-in button as a pill matching apple's

Google's SDK button is a fixed-shape rectangle that takes no corner radius,
so on iOS it sat square beside Apple's pill. Google's sign-in now uses the
shared branded button (Google's colours, the multicolour G and the approved
title) at Apple's 48pt height with full pill corners, on Account and in
onboarding's restore.

* feat(more): change the starting point after onboarding

A More row and screen offer onboarding's three presets again, each with a
one-line description. The current choice is derived from the enabled items,
so a hand-edited set shows none selected, and replacing one asks first.
Pause-only items are left out of the comparison and kept on apply; history
and marks are never touched. The web companion gets the same screen.

* fix(mobile): render ios widgets by patching the expo-widgets react stub

expo-widgets 58.0.7 evaluates ExpoWidgets.bundle in JavaScriptCore with a
React stub that lacks memo. @expo/ui/swift-ui calls memo at module scope
(recycling/useRecycledRows), so the bundle threw on load, the extension never
got a JS context and every widget, gallery previews included, rendered a
RedBox in Debug and nothing in Release.

Backport the 58.0.10 stub (expo/expo#50834) as a bun patch, add a test that
fails if the patch is lost, and document it next to the widget notes.

* feat(ui): stack the hijri date, civil date and city on today

Today's date line becomes three lines: the Hijri date (in the style the line
had), the civil date under it and the city last, both smaller. The city line
is left out when no place is set. cityOf moves to core's place module so
onboarding, the app's Today route and the companion share one definition.

* fix(mobile): keep the large title in place when search opens on ios

The integrated search button left UISearchController's
hidesNavigationBarDuringPresentation at UIKit's default, so on iOS 27
opening it began the bar's hide presentation and the More and Library
large titles lost their leading inset, jumping to the screen edge.
Set hideNavigationBar to false on both search bars.

* feat(mobile): fill the right now widget and mark done from it

The Right now widget showed only the window and the item. It now also says
how long the moment stays open ("Open for about 3 more hours", "Closing
soon"), how many other things are open ("+2 more now"), and the Hijri date
in the bottom corner on the reading side. Small, medium and large get them
where they fit; Lock Screen families stay as they were. Android's twin gets
the same text from medium up.

The timeline gains an entry wherever a rough distance turns, so neither
that phrase nor Up next's distance goes stale within an entry.

On iOS 17+ a button marks the headline item done without opening the app.
The press appends { id, at } to the widget's own timeline in the App Group,
which shows the item done at once. The expo-widgets patch now merges a
press into every later entry too, not just the pressed one. The app takes
taps in on launch, on returning to the foreground and on a press it hears,
files each with completeItem at the tap's moment and window, and moves a
device-only cursor past them; a republish carries taps not yet taken in.

New strings in all ten languages.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot: fingerprint compatible bot: passed checks ExpoBot has nothing to complain about contributor: internal PR author is a member, owner, or collaborator of the expo org

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants