Conversation
# Why Closes #46133. The typed `expo-widgets/plugin` helper currently requires `supportedFamilies` to be `WidgetFamily[]`, where `WidgetFamily` is a string enum. That means valid runtime values such as `"systemMedium"` are rejected by TypeScript when app config uses `withWidgets(...)`. # How Changed the plugin's `WidgetFamily` export from a TypeScript enum to an enum-like `as const` object plus a string-literal type. This keeps existing enum-style usage working: ```ts WidgetFamily.systemMedium ``` and also allows plain string values in typed config: ```ts supportedFamilies: ["systemMedium", "systemLarge", "accessoryRectangular"] ``` Runtime validation remains unchanged because `Object.values(WidgetFamily)` still returns the same allowed string values. # Test Plan - `pnpm install --filter expo-widgets... --ignore-scripts` - `pnpm --filter expo-widgets build:plugin` - `pnpm --filter expo-widgets lint` - `pnpm --filter expo-widgets test` - Verified the issue repro before/after by copying the rebuilt `WidgetFamily.type` output into https://github.com/eliotgevers/expo-widget-family-repro: - before: `bun run typecheck` rejects string widget families - after: `bun run typecheck` passes - after: `bun run config` still loads `expo-widgets` # Checklist - [x] I added a `changelog.md` entry and rebuilt the package sources according to [this short guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting) - [x] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin). - [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# Why This PR adds the initial Android package for `expo-widgets`, nothing fancy yet, just laying the foundation for widgets support. <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> # How Create a basic module with jetpack glance provider <!-- How did you build this feature or fix this bug and why? --> # Test Plan Nothing to test yet. <!-- Please describe how you tested this change and how a reviewer could reproduce your test, especially if this PR does not include automated tests! If possible, please also provide terminal output and/or screenshots demonstrating your test/reproduction. --> # Checklist <!-- Please check the appropriate items below if they apply to your diff. --> - [ ] I added a `changelog.md` entry and rebuilt the package sources according to [this short guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting) - [ ] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin). - [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# How
- Moved config plugin to `/ios`
- Added `/android` config plugin
<!--
How did you build this feature or fix this bug and why?
-->
# Test Plan
This config plugin should:
- create `widget_${widget.name}_info.xml` in `app/src/main/res/xml`
- create `${widget.name}Provider.kt` in app catalog
- add widget receiver to manifest
<!--
Please describe how you tested this change and how a reviewer could
reproduce your test, especially if this PR does not include automated
tests! If possible, please also provide terminal output and/or
screenshots demonstrating your test/reproduction.
-->
# Checklist
<!--
Please check the appropriate items below if they apply to your diff.
-->
- [ ] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
…arget (#46175) # Why Bumping the deployment target to 16.4 in SDK 56 is causing issues for consumers of `ExpoModulesCore` [issues](https://github.com/search?q=%22compiling+for+iOS+15.1%2C+but+module+%27ExpoModulesCore%27+has+a+minimum+deployment+target+of+iOS+16.4%22&type=issues) - "Compiling for iOS 15.1, but module 'ExpoModulesCore' has a minimum deployment target of iOS 16.4". Usually people offer [this kind ](https://github.com/EvanBacon/expo-quick-actions/pull/58/changes#diff-e33aa8a237150b7b621dcf3d4b96411fa475be3429816ef2f12badf2512fa900L13)of fix but that's breaking. <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> # How In expo-modules-autolinking's pod install post-install hook, after CocoaPods has finished, we read ExpoModulesCore's iOS deployment target off its already-loaded spec and raise every autolinked Expo module's IPHONEOS_DEPLOYMENT_TARGET (and macOS/tvOS equivalents) to at least that value if it's currently lower. edit: RN core does similar thing [here](https://github.com/facebook/react-native/blob/09fc0432d1eb799c3c1c2ae2ef0dc3acb2944e35/packages/react-native/scripts/cocoapods/utils.rb#L362) <!-- How did you build this feature or fix this bug and why? --> # Test Plan <details> <summary>Details</summary> # Autolinking fix — staged verification > Paths in **angle brackets** below need to be filled in by you: > - `<scratch-dir>` — any directory you don't mind creating a throwaway project in > - `<expo-checkout>` — your local clone of `expo/expo` with the fix applied (e.g. the branch/PR being reviewed) ## Stage 1 — Create project and reproduce bug ```bash cd <scratch-dir> rm -rf deployment-target-test npx create-expo-app@latest deployment-target-test --template default@sdk-56 cd deployment-target-test npx expo install expo-quick-actions expo-build-properties npx expo prebuild -p ios --clean cd ios && pod install && cd .. ``` **Check 1:** ```bash grep EXPO_USE_PRECOMPILED_MODULES ios/Podfile.properties.json ``` Expect: `"EXPO_USE_PRECOMPILED_MODULES": "false"` (that's another bug resolved by #46159) **Check 2:** ```bash cd ios && ruby -rxcodeproj -e ' p = Xcodeproj::Project.open("Pods/Pods.xcodeproj") %w[ExpoQuickActions ExpoModulesCore].each { |n| t = p.targets.find { |x| x.name == n } puts "#{n}: #{t.build_configurations.first.build_settings["IPHONEOS_DEPLOYMENT_TARGET"]}" }' && cd .. ``` Expect: ``` ExpoQuickActions: 15.1 ExpoModulesCore: 16.4 ``` **Check 3:** ```bash cd ios && xcodebuild -workspace deploymenttargettest.xcworkspace \ -scheme ExpoQuickActions -configuration Debug \ -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' build 2>&1 \ | grep -E "error:|BUILD (FAILED|SUCCEEDED)" | head -3 cd .. ``` Expect: `error: compiling for iOS 15.1, but module 'ExpoModulesCore' has a minimum deployment target of iOS 16.4` + `** BUILD FAILED **` If any check fails, stop — bug isn't reproducing. ## Stage 2 — Apply fix ```bash cp <expo-checkout>/packages/expo-modules-autolinking/scripts/ios/autolinking_manager.rb \ node_modules/expo-modules-autolinking/scripts/ios/autolinking_manager.rb cp <expo-checkout>/packages/expo-modules-autolinking/scripts/ios/cocoapods/installer.rb \ node_modules/expo-modules-autolinking/scripts/ios/cocoapods/installer.rb ``` ## Stage 3 — Verify ```bash cd ios && pod install 2>&1 | grep "Raised deployment target" ``` **Check 4** — expect: `[Expo] Raised deployment target to 16.4 for 1 Expo modules (matching ExpoModulesCore)` **Check 5:** ```bash ruby -rxcodeproj -e ' p = Xcodeproj::Project.open("Pods/Pods.xcodeproj") %w[ExpoQuickActions ExpoModulesCore React-Core Yoga RCTRequired].each { |n| t = p.targets.find { |x| x.name == n } next puts "#{n}: (not found)" unless t puts "#{n}: #{t.build_configurations.first.build_settings["IPHONEOS_DEPLOYMENT_TARGET"]}" }' ``` Expect: ``` ExpoQuickActions: 16.4 ExpoModulesCore: 16.4 React-Core: 15.1 Yoga: 15.1 RCTRequired: 15.1 ``` **Check 6:** ```bash xcodebuild -workspace deploymenttargettest.xcworkspace \ -scheme ExpoQuickActions -configuration Debug \ -sdk iphonesimulator -destination 'generic/platform=iOS Simulator' build 2>&1 \ | grep -E "error:|BUILD (FAILED|SUCCEEDED)" | head -3 cd .. ``` Expect: `** BUILD SUCCEEDED **` ## Pass criteria All 6 checks match. If Check 5 shows `React-Core`/`Yoga`/`RCTRequired` at 16.4 → filter over-broad. If Check 6 fails despite Check 5 passing → hook ran but didn't fix root cause. </details> # Checklist <!-- Please check the appropriate items below if they apply to your diff. --> - [x] I added a `changelog.md` entry and rebuilt the package sources according to [this short guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting) - [ ] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin). - [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# Why Add the same zstd, Brotli, and gzip response decompression support to Android update downloads that Android fetch now uses. # How - same work from #45458 but for updates - Added a local `CompressionInterceptor` for `expo-updates`, wired it into `FileDownloader`, and updated the Android dependencies and ProGuard keep rule for zstd. --------- Co-authored-by: Alan Hughes <30924086+alanjhughes@users.noreply.github.com>
# Why `ImageRef` cannot be passed to `SharedRef` as it is an instance of `SharedRef` # How Use `SharedRefType` # Test Plan <!-- Please describe how you tested this change and how a reviewer could reproduce your test, especially if this PR does not include automated tests! If possible, please also provide terminal output and/or screenshots demonstrating your test/reproduction. --> # Checklist <!-- Please check the appropriate items below if they apply to your diff. --> - [ ] I added a `changelog.md` entry and rebuilt the package sources according to [this short guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting) - [ ] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin). - [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
…are provided (#46218) # Why Fixes #46154 <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> # How SwiftUI's labeled Slider(value:in:step:label:minimumValueLabel:maximumValueLabel:onEditingChanged:) initializer reserves a dotted line beneath the track even when all label closures resolve to nil. SliderView.swift always called this initializer, so every unlabeled slider got a stray gray line on iOS 17+. Compute hasAnyLabel from the three slot() lookups in SliderView.sliderContent and branch to the unlabeled Slider(...) initializer when none of the slots are provided, across all four (range, range+step, step-only, default) cases. <!-- How did you build this feature or fix this bug and why? --> # Test Plan Tested in NCL sliderscreen <!-- Please describe how you tested this change and how a reviewer could reproduce your test, especially if this PR does not include automated tests! If possible, please also provide terminal output and/or screenshots demonstrating your test/reproduction. --> # Checklist <!-- Please check the appropriate items below if they apply to your diff. --> - [ ] I added a `changelog.md` entry and rebuilt the package sources according to [this short guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting) - [ ] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin). - [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
…46211) Co-authored-by: Yamin Yassin <Yamin.Yassin+CAG@cagtechhub.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
# Why fix precompile error for #46122 # How add macro plugin tool to Package.swift when linking # Test Plan precompile ci passed # Checklist - [x] I added a `changelog.md` entry and rebuilt the package sources according to [this short guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting) - [x] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin). - [x] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# Why dogfooding OptimizedFunction # How - migrate randomUUID to use `@OptimizedFunction` # Test Plan - test `randomUUID` returns expected random uuid - benchmark (keep the change in git history). <img width="1205" height="751" alt="Simulator Screenshot - iPhone 17 Pro - 2026-05-22 at 03 08 23" src="https://github.com/user-attachments/assets/580790a6-2352-4493-ac5f-f6503f708df6" /> # Checklist - [x] I added a `changelog.md` entry and rebuilt the package sources according to [this short guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting) - [x] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin). - [x] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# Why The new minimum as claimed in https://expo.dev/changelog/sdk-56-beta#tool-version-bumps is 26.4. I'd like to bump so that CI can build some features that depend on using xcode 26 without workarounds (not critical though in case we want to keep mac 15 runners longer for some reason). <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> # How <!-- How did you build this feature or fix this bug and why? --> # Test Plan - green CI # Checklist <!-- Please check the appropriate items below if they apply to your diff. --> - [ ] I added a `changelog.md` entry and rebuilt the package sources according to [this short guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting) - [ ] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin). - [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
…tive-C (#46227) # Why Host apps written in Objective-C currently can't call `ReactNativeHostManager.shared.initialize(...)` directly. The class has no`@objc` exposure, so integrators have been forced to add a small Swift shim # How `ReactNativeHostManager` now inherits from `NSObject` and its public surface (`shared`, `initialize(turboModuleClasses:)`, `loadView(...)`, `cleanupPreviousInstance()`) is annotated `@objc`, so it bridges to Objective-C without any wrapper. # Test Plan - Verified that an Objective-C host app can call `[ReactNativeHostManager.shared initializeWithTurboModuleClasses:@{}]`, `[[ReactNativeHostManager shared] loadView…]`, and `[[ReactNativeHostManager shared] cleanupPreviousInstance]` directly, with no Swift wrapper. - Ran the brownfield-tester isolated iOS target
# Why closes #44453 <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> # How add a warning # Test Plan - bare expo # Checklist <!-- Please check the appropriate items below if they apply to your diff. --> - [x] I added a `changelog.md` entry and rebuilt the package sources according to [this short guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting) - [ ] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin). - [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# Why To recreate props in Widgets, we need to be able to create ComposeProps without a view. <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> # How Added `createComposeProps` function <!-- How did you build this feature or fix this bug and why? --> # Test Plan Not yet. <!-- Please describe how you tested this change and how a reviewer could reproduce your test, especially if this PR does not include automated tests! If possible, please also provide terminal output and/or screenshots demonstrating your test/reproduction. --> # Checklist <!-- Please check the appropriate items below if they apply to your diff. --> - [x] I added a `changelog.md` entry and rebuilt the package sources according to [this short guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting) - [ ] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin). - [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# Why `shape` prop does not work on TextField. Reported by discord user (hard265) <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> # How Use `parseJSXShape` to process the shape prop. <!-- How did you build this feature or fix this bug and why? --> # Test Plan Added shape example in NCL <!-- Please describe how you tested this change and how a reviewer could reproduce your test, especially if this PR does not include automated tests! If possible, please also provide terminal output and/or screenshots demonstrating your test/reproduction. --> # Checklist <!-- Please check the appropriate items below if they apply to your diff. --> - [ ] I added a `changelog.md` entry and rebuilt the package sources according to [this short guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting) - [ ] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin). - [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md) --------- Co-authored-by: Aman Mittal <amandeepmittal@live.com>
# Why Fix `Platform` import in `bare-expo` benchmark module. # How - # Test Plan <!-- Please describe how you tested this change and how a reviewer could reproduce your test, especially if this PR does not include automated tests! If possible, please also provide terminal output and/or screenshots demonstrating your test/reproduction. --> # Checklist <!-- Please check the appropriate items below if they apply to your diff. --> - [ ] I added a `changelog.md` entry and rebuilt the package sources according to [this short guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting) - [ ] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin). - [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )