Skip to content

Conversation

@pull
Copy link

@pull pull bot commented Jan 30, 2026

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 : )

kitten and others added 6 commits January 30, 2026 16:17
…ementation (#42706)

# Why

We were previously relying on an implementation in
`whatwg-url-without-unicode`, which is a fork of `whatwg-url` with
`tr46` removed. However, it's missing support for some newer features,
some fixes in accuracies from upstream (which has since seen a few major
version bumps), and the unicode removal isn't quite accurate.

**New:**
- `URL.parse` added
- `URLSearchParams#size` added
- `URL.canParse` added (removed from `expo/winter`)
- Iterators extend global `Iterator` if it's available (Web platform
compliance)

**Changed/Fixed:**
- New implementation complies with a higher number of Web Platform tests
- Performance of the URL parser should be higher and bundlesize impact
is slightly lower
- `tr64` replacement code was added for higher accuracy (e.g. missing
lower-casing, NFC normalization)
- USVString normalisation is skipped as it's rarely relevant

This removes `buffer`, `webidl-conversions`, and `punycode` from output
bundles and our dependencies. This might also impact Hermes bytecode
outputs positively.

The test suite should protect us from edge cases since it's mainly WPT
tests, like the upstream `whatwg-url`:
[https://github.com/kitten/whatwg-url-minimum/tree/main/src/__tests__](https://github.com/kitten/whatwg-url-minimum/tree/main/src/__tests__/)

# How

- Remove `whatwg-url-without-unicode`
- Replace implementation with `whatwg-url-minimum`
- Remove `URL.canParse` override

# Test Plan

- Validate an app that relies on URLs; at a minimum `expo-router` relies
on `URL` and `URLSearchParams` and `router-e2e` boots up normally
- Edit: Verified more behaviour manually with devtools REPL

# 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

Remove the deprecated `edgeToEdgeEnabled` property from Android
configuration as edge to edge is mandatory when targeting Android 16+.

# How

- Removed the `edgeToEdgeEnabled` property from all template app.json
files
- Removed the property from gradle.properties files in various apps
- Removed the related Gradle property configuration code in
prebuild-config
- Updated the ExpoConfig type definitions to remove the deprecated
property
- Added a warning when users still have the property in their config

# Test Plan

- green CI, successful example project prebuild+build

# Checklist

- [x] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
# Why

This won't have the biggest impact, but in theory, it may be dropped
when `@expo/xcpretty` is updated to drop `find-up` and Jest & Eslint
aren't in use in a project. Mainly, the motivation here is to remove it,
since it's trivially replaced.

# How

- Add `utils/Concurrency.ts` with `createLimiter` utility and tests
- Replace `p-limit` with `createLimiter`
- Fix some typing issues

# Test Plan

- Tests added for `createLimiter`
- Existing tests and E2E tests should pass

# 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

following up #41622 and improve integration for jetpack-compose

# How

- [js] use ColorValue type for colors
- [js] move modifiers into `@expo/ui/jetpack-compose/modifiers` as
swift-ui
- [core] rename `ExpoViewComposableScope` to
`FunctionalComposableScope`. it's confusing between ComposableScope and
ExpoViewComposableScope
- [ui] introduce `ExpoUIView` DSL as swift-ui. currently it's the same
as View DSL. keeping that allows us to introduce more expo-ui dedicated
features.
- [ui] fix broken scoped modifiers like `matchParentSize`.
- [ui] make ModifierRegistry extensible. each modifier can have it's own
parameter convertible (Record).
- [core] add `recordFromMap` that allows Record conversion from Map.
…o-install of `expo-router@latest`, `@expo/log-box` causing auto-install of `react-dom`/`react-native-web` (#42728)

# Why

The `expo-router` peer in `@expo/router-server` wasn't marked as
optional, but `@expo/router-server` is installed in `@expo/cli` as a
regular dependency. This means that it then auto-installs
`expo-router@latest`

# How

- Add missing versions and mark `expo-router` as an optional dependency
in `@expo/router-server`

# Test Plan

- n/a

# 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)

---------

Co-authored-by: Cedric van Putten <me@bycedric.com>
@pull pull bot locked and limited conversation to collaborators Jan 30, 2026
@pull pull bot added the ⤵️ pull label Jan 30, 2026
@pull pull bot merged commit 3acedb8 into code:main Jan 30, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants