Skip to content

[pull] main from expo:main#27

Merged
pull[bot] merged 20 commits into
code:mainfrom
expo:main
Jul 22, 2025
Merged

[pull] main from expo:main#27
pull[bot] merged 20 commits into
code:mainfrom
expo:main

Conversation

@pull

@pull pull Bot commented Jul 22, 2025

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.3)

Can you help keep this open source service alive? 💖 Please sponsor : )

aleqsio and others added 20 commits July 22, 2025 12:02
Co-authored-by: Jakub Grzywacz <jaqbgrzy@gmail.com>
Co-authored-by: aleqsio <mikucki@gmail.com>
# Why

Changed a suspicious comparison in the `NativeResponse` class where
string comparison was using the identity operator (`===`) instead of the
equality operator (`==`) when checking for a "Canceled" message in the
`onFailure` method.

Suggesting this change after the same kind of change fixed a bug here
https://github.com/expo/expo/pull/38227/files#diff-6b0bfb15514c6b82838a22b104375e1d3aced131d9c552d5af01c04862902028

# How

Changed the string comparison

# Test Plan

I did not test this

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

I was running into weird behaviors with `downloadAsync` producing empty files. Tracked it down to `===` used instead of `==`.


# How


# Test Plan

- expo go locally
- added a test that exposed the bug

# 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

This PR adds a check to prevent loading empty font files on Android. This normally wouldn't happen but if it did, Android TypeFace throws `ArrayIndexOutOfBoundsException` which is pretty useless for debugging.

# How

Added a simple check in the `FontLoaderModule.kt` file that verifies if the font file has a non-zero length before attempting to create a Typeface from it. If the file is empty (length is 0), it throws a `CodedException` with a error message that's better than `ArrayIndexOutOfBoundsException`.

# Test Plan

- bare expo

# 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)
- [ ] 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)
…38208)

# Why

The `get-app-config-ios` script allows users to set a custom location
for the root of their project, especially useful for brownfield apps
that don't follow the typical /ios folder structure, but right now, you
can't set it through CocoaPods because Pods env vars are not injected
into build scripts.


https://github.com/expo/expo/blob/9c0cb80ee362fe1468e205ba9e7af59917e48227/packages/expo-constants/scripts/get-app-config-ios.sh#L19-L21

To fix this, we need to forward the `PROJECT_ROOT` env var to app config
script

# How

Forward the `PROJECT_ROOT` environment variable to `app-config-ios`
script

# Test Plan

Set a custom `PROJECT_ROOT` path inside a Podfile, install pods and
build a project

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

In order to allow users to use a custom native folder structure, we
should support setting a custom source directory, similar to what
`react-native.config.js` supports. Currently, we just assume that users
use `/ios` and `/android` and this makes it impossible to use a custom
project structure

# How

Add `--source-dir` option to `expo-modules-autolinking` CLI

# Test Plan

Use `expo-modules-autolinking` in a BrownField project using a custom
native structure

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

# Why

Follow-up of
#38071 (comment)

# How

Added input and output files to the build script phase in order to
support `ENABLE_USER_SCRIPT_SANDBOXING=true`

# Test Plan

This only changes modules core autolinking and in order to use script
sandboxing users still need additional changes on the "Bundle React
Native code and images" script and this will be addressed a follow up PR
updating our templates

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

`use_expo_modules!` does not work as expected when an iOS project is not
using the standard `/ios` folder structure. This happens because the
`initialize()` function of `AutolinkingManager` calls
`expo-modules-autolinking` `resolve` command without providing the
custom `--project-root` flag, which will lead to one of two errors:

- `Error: Couldn't find "package.json" up from path
"/Users/gabriel/xzy"`

or

- Mistakenly reading the root `package.json` in the monorepo and not
detecting `extraDependencies`, `coreFeatures`, and `modules` correctly.


When calling the CLI manually and providing `--project-root` (`npx
expo-modules-autolinking resolve --json --project-root ./exp1`) this
works as expected


# How

Add `:projectRoot` option to `use_expo_modules!` allowing users to
configure custom project root folder from a `Podfile`

> Another approach that we could use is reading this value from
`ENV['PROJECT_ROOT']`

# Test Plan

```
target 'BrownApp' do
  use_expo_modules!({projectRoot: project_dir})
```

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

While working on improvements for brownfield apps, I stumbled upon some
dead code on Android for supporting react-native 0.74

# How

Remove react-native 0.74 support files in modules-core and the main expo
package

# Test Plan

Run BareExpo on Android

# 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>
@pull pull Bot locked and limited conversation to collaborators Jul 22, 2025
@pull pull Bot added the ⤵️ pull label Jul 22, 2025
@pull pull Bot merged commit 7e7657f into code:main Jul 22, 2025
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.

8 participants