Skip to content

[pull] main from expo:main#907

Merged
pull[bot] merged 7 commits into
code:mainfrom
expo:main
May 27, 2026
Merged

[pull] main from expo:main#907
pull[bot] merged 7 commits into
code:mainfrom
expo:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented May 27, 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 : )

kota113 and others added 7 commits May 27, 2026 12:15
# Why

Add Material 3 `NavigationBar` support to `@expo/ui` Jetpack Compose so
Android apps can build native bottom navigation using Expo UI
primitives, which is equivalent to `TabView` in Swift UI.

# How
Implemented `NavigationBar` and `NavigationBarItem` for Jetpack Compose.

- Added JS exports for `NavigationBar` / `NavigationBarItem`.
- Added Android Compose bindings backed by Material 3 `NavigationBar`
and `NavigationBarItem`.
- Added API docs and generated docs API data.
- Added a `native-component-list` demo screen.
- Added a changelog entry.

# Test Plan

Ran successfully:
```sh
pnpm build
pnpm lint
./gradlew :expo-ui:compileDebugKotlin
node tools/bin/expotools.js gdad -p expo-ui/jetpack-compose/navigationbar
pnpm --filter native-component-list tsc
```
```sh
./gradlew assembleDebug
./gradlew assembleRelease
```

# 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)
…umentation (#46290)

# Why

<!--
Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests.
-->

EAS CLI 19.1.0 adds `eas build --refresh-ad-hoc-provisioning-profile`, so non-interactive CI builds can refresh ad hoc provisioning profiles when an App Store Connect API key is set up. Our docs still say you must run `eas build` interactively after registering a device; this PR documents the new workflow.

# How

<!--
How did you build this feature or fix this bug and why?
-->

- Document the flag, prerequisites, and an example in [internal distribution](https://docs.expo.dev/build/internal-distribution/) (Automation on CI).
- Cross-link from [building on CI](https://docs.expo.dev/build/building-on-ci/).

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

Verified it renders correctly:

<img width="1146" height="672" alt="Screenshot 2026-05-26 at 15 05 47" src="https://github.com/user-attachments/assets/a33778ff-a76d-4766-afb7-43e7a57e1a2a" />


# 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).
- [x] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
…parameter documentation (#46291)

# Why

<!--
Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests.
-->

The base branch documents `eas build --refresh-ad-hoc-provisioning-profile` for internal iOS ad hoc builds on CI and links to EAS Workflows, but the workflows docs did not yet document `refresh_ad_hoc_provisioning_profile` on the build job.

# How

<!--
How did you build this feature or fix this bug and why?
-->

- Document `refresh_ad_hoc_provisioning_profile` on the `build job in pre-packaged-jobs.mdx` and `syntax.mdx` (syntax, parameters table, CLI flag mapping).
- Add an example workflow for an internal iOS build with profile refresh.

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

Verified it renders correctly:

<img width="1140" height="131" alt="image" src="https://github.com/user-attachments/assets/17bed5f7-a96f-4ab0-9795-2dda3c32f1b8" />

<img width="1126" height="523" alt="image" src="https://github.com/user-attachments/assets/db675229-fce7-4bfb-8ef9-2a3f52b614fe" />

# 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).
- [x] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# Why

<!--
Please describe the motivation for this PR, and link to relevant GitHub
issues, forums posts, or feature requests.
-->
Inspired by #44359. The current implementation of `File.write()` could
block JS thread when writing a lot of data. The async `File.write()`
could make the app more responsive.
Plus, the legacy expo FileSystem API `writeAsStringAsync()` and the
`write()` in `react-native-fs` are also async. I think the async API
will help users migrating to the new `expo-file-system`

# How

1. Extract common private function `writeToFile()` for the write logic
for the iOS/Android native code
2. Wrap it with `AsyncFunction("write")`/`Function("writeSync")`
3. Update type definitions and comments in `expo-file-system` package
4. Replace all the old sync `File.write()` with `File.writeSync()`in
tests
5. Add test cases for the new async `File.write()`, with/without
different optiions
6. Update downstream calls of `File.write()` in this repo
7. Update docs

This PR is largely based on the changes in #44359, as this is my first
contribution to `expo` and I need reference implementations.
# 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.
-->
1. `CI=1 pnpm build`, `pnpm lint --fix` and `CI=1 pnpm test` passed in
`packages/expo-file-system`

<details><summary>Output</summary>

```
> expo-module test

PASS Android src/__tests__/FSNetworkTasks-test.native.ts
PASS Android src/__tests__/FileSystem-test.native.ts
PASS Node src/__tests__/FileSystemWatcher-test.ts
PASS Web src/__tests__/FileSystemWatcher-test.ts
PASS Android src/__tests__/FileSystemWatcher-test.ts
PASS Android src/legacy/__tests__/FileSystem-test.native.ts
PASS iOS src/__tests__/FileSystem-test.native.ts
PASS iOS src/__tests__/FSNetworkTasks-test.native.ts
PASS iOS src/__tests__/FileSystemWatcher-test.ts
PASS iOS src/legacy/__tests__/FileSystem-test.native.ts

Test Suites: 10 passed, 10 total
Tests:       14 skipped, 204 passed, 218 total
Snapshots:   0 total
Time:        1.713 s
Ran all test suites in 4 projects.
```

</details> 

2. `pnpm test:ios` passed in `apps/bare-expo`

<details><summary>Screenshot</summary>

<img width="100%" height="100%" alt="image"
src="https://github.com/user-attachments/assets/2bae9a4b-9798-4a5f-bdf5-1b4da449d64b"
/>

</details> 

3. `pnpm et check expo-file-system` passed in project root (tested on
e81ba4c)

<details><summary>Output</summary>

```
 🛠  Rebuilding expotools
 ✨ Successfully built expotools

🔍 Checking expo-file-system package
🏃‍♀️ Running pnpm run clean
🏃‍♀️ Running pnpm run build
🏃‍♀️ Running pnpm run test --watch false --passWithNoTests
🏃‍♀️ Running pnpm run lint --max-warnings 0
✨ expo-file-system checks passed
🔌 Checking expo-file-system plugin
🏃‍♀️ Running pnpm run clean plugin
🏃‍♀️ Running pnpm run build plugin
🏃‍♀️ Running pnpm run test plugin --watch false --passWithNoTests
🏃‍♀️ Running pnpm run lint plugin --max-warnings 0
✨ expo-file-system checks passed

🏁 All packages passed.
```

</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)
…tion (#46296)

# Why

<!--
Please describe the motivation for this PR, and link to relevant GitHub
issues, forums posts, or feature requests.
-->

EAS Workflows supports an `apple-device-registration-request`
pre-packaged job that pauses a run until a tester enrolls an iOS device
and a team member approves it on expo.dev. That flow is useful for
[internal distribution](/build/internal-distribution/) but was not
documented alongside other workflow jobs.

This PR documents the job so teams can automate device registration in
workflows instead of running `eas device:create` manually and
coordinating builds separately.

# How

<!--
How did you build this feature or fix this bug and why?
-->

- Added an Apple device registration request section to pre-packaged
jobs docs.
- Added a short `apple-device-registration-request` entry in workflow
syntax jobs and listed it among jobs that do not run on a VM (so `env`
does not apply).
- Cross-linked from internal distribution under "Managing devices",
pointing readers to this job and pairing it with a `build` job that
refreshes the ad hoc provisioning profile.

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

<img width="1143" height="1238" alt="image"
src="https://github.com/user-attachments/assets/fee92240-3517-4c01-9010-2a00b1c91955"
/>

# 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).
- [x] 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 May 27, 2026
@pull pull Bot added the ⤵️ pull label May 27, 2026
@pull pull Bot merged commit b47d7b3 into code:main May 27, 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.

5 participants