[permissions] Remove permissions package (#24081)# Why Removes `expo-permissions` package. That package was deprecated for a long time but never removed. I think we can do it now. # ToDo
[permissions] Remove permissions package (#24081)# Why Removes `expo-permissions` package. That package was deprecated for a long time but never removed. I think we can do it now. # ToDo - [ ] publish new home app - will be done in a separate PR # Test Plan - bare-expo ✅ - expo-go ✅
show more ...
[iOS] Experimental new Video component (#24428)
[blur] Support more blur effects (#24392)
[sensors][iOS] Migrate to Expo Modules API (#24133)
[secure-store][android] Secure store audit (#23804)# Why ENG-6327 Secure-store was using the old modules API. We wanted to add synchronous functions to the API, so it's possible to use SecureSto
[secure-store][android] Secure store audit (#23804)# Why ENG-6327 Secure-store was using the old modules API. We wanted to add synchronous functions to the API, so it's possible to use SecureStore in the global JS scope. During the migration I've also found some bugs/unexpected behaviours which were corrected # How - Migrated `secure-store` to Kotlin and the new modules API - Changed callback-based authentication prompt to Kotlin coroutines - Added `getItemSync` and `setItemSync` functions - Both functions call the same functions as Async versions, but on the main thread - It is now possible to save values which require authentication and ones that don't under one keychain on the JS side. This is archived by creating two separate keys on the native side. - Before it wasn't possible to save a no-authentication value under a keychain, which was initialised with a require-auth value (an exception was thrown). It was possible to save a value which requires authentication into a keychain which was already initialised as no-auth, but it wasn't really encrypted with the necessity of auth and could've been decrypted without authentication (although `secure-store` always asked for biometrics correctly) - It is now possible to save values under different keychains but the same key. `Secure-store` can now differentiate between them. Before saving `value1` under `key1` and `keychain1` and `value2` under `key1` and `keychain2` would overwrite the `value1` under `key1` with a new value. Now they are separate. This archived by saving the items in shared preferences under a key which includes the keychain eq. `keychain1-key1` and `keychain2-key1`. This emulates the `ios` `secure-store` behavior - Backwards compatibility with the current naming scheme of keystore aliases has been kept - Improved invalidated key exception handling. When removing a key from the key store all values under that key will be removed from shared preferences in order to avoid exceptions caused by decryption fails. This doesn't apply to values stored with previous versions of `expo-secure-store` as it is not possible to determine if value was stored with a keychain without making an decryption attempt. - Updated the docs - Removed SDK20 read support # Test Plan Tested in Bare Expo and Expo Go on a physical android 13 and 7 devices (forced api < 23 functions on android 7 only for testing since we don't have such an old device) --------- Co-authored-by: Expo Bot <[email protected]>
[contacts][android] Fix `addContactAsync` failing when e-mail id is provided (#23877)# Why ENG-9682, fixes https://github.com/expo/expo/issues/23828 `addContactAsync` would fail when adding
[contacts][android] Fix `addContactAsync` failing when e-mail id is provided (#23877)# Why ENG-9682, fixes https://github.com/expo/expo/issues/23828 `addContactAsync` would fail when adding a contact with an e-mail of phone with a specified id. # How The ids shouldn't be provided by the user, they are generated by the OS on creation of the contact (on both iOS and Android). Fixed this by ignoring the id when adding a contact on the JS side. Updated the docs # Test Plan Tested on Android 13 Pixel 6 and iOS 16 iPhone 11 --------- Co-authored-by: Expo Bot <[email protected]>
[lint] Upgrade to Prettier v3, typescript-eslint to v6 (#23544)Why --- Prettier 3 is out. Add support for it with this linter config. **Note for reviewer:** the first commit is the one with th
[lint] Upgrade to Prettier v3, typescript-eslint to v6 (#23544)Why --- Prettier 3 is out. Add support for it with this linter config. **Note for reviewer:** the first commit is the one with the actual changes. The rest of this PR are changes to get the linter passing (mostly autofix). How --- Update eslint-config-prettier and eslint-plugin-prettier. To address deprecation warnings, also update typescript-eslint/parser and typescript-eslint/eslint-plugin. Because of an update to typescript-eslint/parser, we need to suppress deprecation warnings (documented in a comment). Regenerated test snapshots. Due to the upgraded dependencies, typecasts and optional chaining are now auto-fixable by lint. This converts warnings into autofixes. Test Plan --- `yarn test` in the linter config. Run `expotools check --all --fix-lint --no-build --no-test --no-uniformity-check` to try this config on the whole repo. --------- Co-authored-by: Expo Bot <[email protected]>
[go] update lottie-react-native to 6.1.2 (#23843)# Why There have been a lot of changes in Lottie React Native and there are some issues for users using Expo Go. May fix: - https://github.c
[go] update lottie-react-native to 6.1.2 (#23843)# Why There have been a lot of changes in Lottie React Native and there are some issues for users using Expo Go. May fix: - https://github.com/lottie-react-native/lottie-react-native/issues/1075 - https://github.com/lottie-react-native/lottie-react-native/issues/999 - https://github.com/lottie-react-native/lottie-react-native/issues/1005 # How - Changed source type to `npm` in expoGoConfig - Ran `et uvm -m lottie-react-native -c 6.1.2` - Updated NCL example # Test Plan versioned expo go + NCL lottie test case --------- Co-authored-by: Kudo Chien <[email protected]>
BREAKING CHANGE(expo-calendar): forbid passing an id to createEventAsync and updateEventAsync (#23810)Co-authored-by: pierrezimmermann <[email protected]> Co-authored-by: Łukasz Kosmaty <kosmatyluk
BREAKING CHANGE(expo-calendar): forbid passing an id to createEventAsync and updateEventAsync (#23810)Co-authored-by: pierrezimmermann <[email protected]> Co-authored-by: Łukasz Kosmaty <[email protected]> # Why <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> I noticed that the `eventData` param of the `createEventAsync` method from `expo-calendar` can have an `id` property but it's not used in the code. What I found out is that we the id will be generated by the OS calendar system so we can't choose it. I think the typing should reflect the fact that id is not used so it should not be allowed to pass an `eventData` object with an `id` property. This is also true for the `updateEventAsync` method. This is a breaking change only when these methods are used with object litterals ```tsx // This will work const eventData = { title: 'title', id: '1', } updateEventAsync(eventId, eventData); // This will trigger an error updateEventAsync(eventId, { title: 'title', id: '1', }); ``` So it doesn't fully prevent passing ids but the type and the docs will indicate that these methods don't do anything with an id if provided # How I updated the typing of `eventData` param of `createEventAsync` and `updateEventAsync` methods to `Omit<Partial<Event>, 'id'>` <!-- How did you build this feature or fix this bug and why? --> # Test Plan I checked that there was no typescript error in the places where these methods are used. <!-- 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. --> # Checklist <!-- Please check the appropriate items below if they apply to your diff. This is required for changes to Expo modules. --> Regarding documentation update I'm not very sure. From what I have understood it should update itself automatically based on the API so there should not be any change needed. When running the docs website locally though I didn't see my changes but I guess it doesn't use my local version? - [X] Documentation is up to date to reflect these changes (eg: https://docs.expo.dev and README.md). - [X] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md) - [X] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin).
[iOS][image] Fix `tintColor` prop not working for some SVGs (#23418)
[document-picker] Remove deprecated fields and warning (#23135)
[workspace] Bump TypeScript version to 5.1.3 (#23143)# Why Closes ENG-9088 # How Bump TypeScript to the latest, and rebuild all required SDK packages Had to update `typeRoots` inside `
[workspace] Bump TypeScript version to 5.1.3 (#23143)# Why Closes ENG-9088 # How Bump TypeScript to the latest, and rebuild all required SDK packages Had to update `typeRoots` inside `expo-module-scripts` due to a change in TypeScript 5.1 where it no longer walks up automatically looking in parent directories ([Release notes](https://devblogs.microsoft.com/typescript/announcing-typescript-5-1-rc/#typeroots-are-consulted-in-module-resolution)) # Test Plan Ensure that `et cp -a` yields no errors, docs and tools build correctly, and that CI is green # Checklist <!-- Please check the appropriate items below if they apply to your diff. This is required for changes to Expo modules. --> - [ ] Documentation is up to date to reflect these changes (eg: https://docs.expo.dev and README.md). - [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md) - [ ] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin).
chore: update react-native-web to 0.19.6 (#23179)# Why bump react-native-web to 0.19.6 for sdk 49 # How - since [the issue](https://github.com/necolas/react-native-web/issues/2523) is fixe
chore: update react-native-web to 0.19.6 (#23179)# Why bump react-native-web to 0.19.6 for sdk 49 # How - since [the issue](https://github.com/necolas/react-native-web/issues/2523) is fixed by [email protected]. it's a good time to bump the version. - [ncl] fix some broken imports - [ncl] fix gesture-handler error # Test Plan - smoke testing ncl on web - ci passed
[expo-image] Add srcset support to expo-image (#22088)Co-authored-by: Expo Bot <[email protected]>
Remove react-native-shared-element from Expo Go (#22970)
[expo-blur] Fix reanimated support for BlurView (#22783)# Why Our demo screen for `BlurView` has stopped working. # How > NOTE: `getAnimatableRef` relies on this reanimated PR: https://gi
[expo-blur] Fix reanimated support for BlurView (#22783)# Why Our demo screen for `BlurView` has stopped working. # How > NOTE: `getAnimatableRef` relies on this reanimated PR: https://github.com/software-mansion/react-native-reanimated/pull/4533. Don't merge this PR until the Reanimated feature gets approved by the Reanimated team. On iOS and Android added the `getAnimatableRef` function, which passes the `NativeBlurView` to `reanimated` as the animatable component when user calls the `Animated.createAnimatedComponent`. On web used `setNativeProps` to add reanimated support (it wasn't working correctly before). It would be too complicated to support both `Animated API` and `react-native-reanimated`, so support for animating intensity with `Animated API` has been dropped. # Test Plan Tested on Android, iOS and web > Demo video might not work on Safari due to my recording settings, it works ok on Google Chrome https://github.com/expo/expo/assets/31368152/a5095c99-12a4-4be2-9e04-0e6b80e7ecb3 --------- Co-authored-by: Expo Bot <[email protected]>
[auth-session] Remove all auth proxy APIs (#22834)# Why Closes ENG-8370 # How Removed all uses of `useProxy` and other related fields. # Test Plan Removed tests that used the old behaviour
[auth-session] Remove all auth proxy APIs (#22834)# Why Closes ENG-8370 # How Removed all uses of `useProxy` and other related fields. # Test Plan Removed tests that used the old behaviour. All others passing
[expo-localization] Add hooks, config plugin changes and more features to expo-localization (#22763)
[go] upgrade @react-native-picker/picker to 2.4.10 (#22919)# Why Upgrade @react-native-picker/picker vendored module. # How Ran `et uvm -m @react-native-picker/picker`. Added `PickerIOS
[go] upgrade @react-native-picker/picker to 2.4.10 (#22919)# Why Upgrade @react-native-picker/picker vendored module. # How Ran `et uvm -m @react-native-picker/picker`. Added `PickerIOS` tests to demo `selectionColor` prop, [the only change](https://github.com/react-native-picker/picker/pull/474) since SDK 48. # Test Plan Build Expo Go unversioned locally, tested NCL on iOS/ Android. # Checklist <!-- Please check the appropriate items below if they apply to your diff. This is required for changes to Expo modules. --> - [x] Documentation is up to date to reflect these changes (eg: https://docs.expo.dev and README.md). - [x] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md) - [x] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin).
[ios][clipboard] Implement UIPasteControl button (#22823)
[cli][packages] unify the default dev server port to 8081 (#22880)# Why for historical reasons, when running `npx expo start` the dev-server listens to port 19000, and running `npx expo start --
[cli][packages] unify the default dev server port to 8081 (#22880)# Why for historical reasons, when running `npx expo start` the dev-server listens to port 19000, and running `npx expo start --dev-client` it listens to port 8081. since we are now on our effort to deprecate `--dev-client` option, it is better to unify the listening port. close ENG-8936 # How - update packages/**/*.ts for port 19000 -> 8081 - search more occurrences for 19000 to 8081 # Test Plan - ci passed - bare-expo - unversioned expo go + ncl
[screen-orientation][ios] Screen Orientation module audit (#22152)
Upgrade react-native 0.72.0-rc.5 (#22588)# Why upgrade react-native 0.72 for sdk 49 close ENG-8011 # How - bump package versions - `react-native 0.71.3 -> 0.72.0-rc.5` - `metro-reac
Upgrade react-native 0.72.0-rc.5 (#22588)# Why upgrade react-native 0.72 for sdk 49 close ENG-8011 # How - bump package versions - `react-native 0.71.3 -> 0.72.0-rc.5` - `metro-react-native-babel-preset 0.73.9 -> 0.76.5` - [bare-expo][templates][fabric-tester] migrate template base on [upgrade-helper](https://react-native-community.github.io/upgrade-helper/?from=0.71.7&to=0.72.0-rc.5) - [expo-template-tabs] remove the metro version overrides for expo-router. - [core][dev-laucher][dev-menu][media-library][screen-orientation][splash-screen][updates-interface][updates] add the `install_modules_dependencies` to support new architecture + use_frameworks! - [core][autolinking] fix some new architecture error on ios - [react-native-lab] update our fork to 0.72.0-rc.5 based - [go][tools] fix **react-native-lab/react-native/packages/react-native** path move because of react-native's repo monorepo changes - [go][android] fix gradle 8 errors - [go][ios] add `RCT_REMOTE_PROFILE=0` to fix the `RCT_ENABLE_INSPECTOR needs to be set to fulfill RCT_REMOTE_PROFILE` build error - [ncl] remove `ProgressViewIOS` / `ProgressBarAndroid` since they are deprecated/removed in 0.72 - [dev-menu][dev-launcher] rebuild bundles # Note - react-native-web is not bumped because of the [issue](https://github.com/necolas/react-native-web/issues/2523), so it's still react-native-web@~0.18.10. - currently disable ci typecheck for @expo/cli because of upstream metro typescript support. i'll have another pr to fix those errors. - updates e2e ci on android is broken at [here](https://github.com/expo/expo/blob/fada3d764957779fbfc3d7b723d185db1d933d95/packages/expo-updates/e2e/fixtures/Updates.e2e.ts#L518). i doubt if that's related to the react scheduler change. i'd disabled the failed test case. - the react-native upstream [migrated away the `@types/jest`](https://github.com/facebook/react-native/pull/36068). i was afraid that will be a breaking change to the existing jest test code since it requires the explicit `@jest/globals` import. i didn't do this in this upgrade. # Test Plan - ✅ fabric-tester (without expo-dev-client) - ✅ ci passed. there are some errors which are known: - updates e2e on android: as mentioned above - ios expo go on eas build: versioned expo go are broken on eas build m1 worker. this is also happening on main. - android client: no space left on the ubuntu worker. this is also happening on main. - ✅ bare-expo - ✅ unversioned expo go + ncl --------- Co-authored-by: Tomasz Sapeta <[email protected]>
[android][image-picker] Use a more modern and streamlined system image picker (#22658)
[gl] provision gl contexts in worklet thread only when explicitly enabled (#22613)
12345678910>>...21