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