Skip to content

[pull] main from expo:main#642

Merged
pull[bot] merged 7 commits intocode:mainfrom
expo:main
Mar 2, 2026
Merged

[pull] main from expo:main#642
pull[bot] merged 7 commits intocode:mainfrom
expo:main

Conversation

@pull
Copy link

@pull pull bot commented Mar 2, 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 : )

amandeepmittal and others added 7 commits March 2, 2026 21:43
…3356)

# Why

Currently we only support building RN from sources and thus, we lose the
huge optimization potential that comes with using prebuilts. As
discussed now it's too late to make it the default behavior, so it
should be hidden behind an optional flag. Enabling those seems to reduce
the compilation time (during the first "clean" build, after a prebuild)
by around a half, while making the pod installation steps only slightly
longer to download prebuilt frameworks

# How

- Extended config plugin with an additional option
`ios.usePrebuiltReactNative` to optionally enable this
- Updated CLI to:
- Better separate shipping as standalone frameworks or as Swift Packages
- Look for additional frameworks (React core and dependencies) and
include them in artifacts directory/Swift Package if present
- If `hermesvm.xcframework` is not found in Pods we throw an error, for
the React frameworks we just proceed assuming that we're in
build-from-sources setup then
- Infer the iOS deployment target from the brownfield target build
settings and default to v15 if it can't be inferred

# Test Plan

Validated scenarios (randomly using Debug and Release build
configurations):

- usePrebuiltReactNative + ship standalone frameworks ✅ 
- usePrebuiltReactNative + ship as Swift Package (both with name and
without) ✅
- build from sources + ship standalone frameworks ✅
- build from sources + ship as Swift Package (both with name and
without) ✅

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

Partial fix of #43210 

Continuation of #37395

# How

When no track has been selected after loading, but tracks are available,
select the first available audio track to keep the video from being
silent.

# Test Plan

Tested in BareExpo on iOS  with a custom HLS source (no default tracks)

---------

Co-authored-by: Vitor <vitorclelis96@gmail.com>
Co-authored-by: vitorclelis96 <52633598+vitorclelis96@users.noreply.github.com>
Co-authored-by: Expo Bot <34669131+expo-bot@users.noreply.github.com>
# Why

We were using 3rd party media sources for testing. For the last two
weeks most of them became unavailable and caused our tests to fail (only
came back around 2 days ago). This has prompted me to set up our own
media bucket, which hosts the sources. I only uploaded media that I was
sure had an appropriate copyright.

The main advantage is that we are now independent and loading of stuff
is much faster.

# How

Create an R2 bucket at domain `expo-test-media.com` with the following: 

- `https://expo-test-media.com/ncl_assets/` - contains all of our assets
from `native-component-list/assets`
- `https://expo-test-media.com/big_buck_bunny/bbb_<resolution_code>.mp4`
with the following available resolutions: `1080p` `720p` `480p` `240p`
`144p`

- `https://expo-test-media.com/elephants_dream/ed_<resolution_code>.mp4`
with the following available resolutions: `1080p` `720p` `480p` `240p`
`144p`

- `https://expo-test-media.com/tos_hls/master.m3u8` - contains a HLS
track of Tears Of Steel, I created from available mp4, subtitle and
audio files myself. It allows for resolution switching, has two audio
tracks and 4 subtitle tracks

- `https://expo-test-media.com/tos_dash/manifest.mpd` - Same as HLS just
DASH

- `https://expo-test-media.com/tos_widevine/master.m3u8` - A widevine
DRM source I created, It is the same as the DASH source but is encrypted
and needs to fetch the license from a public test server (not ours,
custom one would be too much work to set up)

- `https://expo-test-media.com/audio/por_una_cabeza.mp3` - Contains the
mp3 file we used for testing audio - I just downloaded from the current
source and re-uploaded it

I also updated e2e tests as the new big buck bunny source starts
slightly differently to the previous one.

For now everything is public, we may need to limit the public access to
mp4 sources if we start hitting the free tier usage limits.

# Test Plan

Tested in BareExpo on Android and iOS
@pull pull bot locked and limited conversation to collaborators Mar 2, 2026
@pull pull bot added the ⤵️ pull label Mar 2, 2026
@pull pull bot merged commit 41d6a25 into code:main Mar 2, 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.

4 participants