[task-manager][Android] Migrated codebase to use Expo modules API (#24157)# Why Migrated codebase to use Expo modules API # Test Plan - bare-expo ✅
[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 ...
[android] [application] migrate to sweet API (#24568)# Why Improved version of https://github.com/expo/expo/pull/22585.
[notifications][Android] Convert all exported modules to new API (#24499)# Why Converts all exported modules to new API in `expo-notifications`. # Test Plan - bare-expo ✅ - expo go ✅
[go][Android] Fix `NavigationBarModule` not found
[go] Improve the incompatible SDK version error screen (#24310)# Why We want to improve the incompatible SDK error screen in Expo Go, because we will be supporting only two SDK versions, so mor
[go] Improve the incompatible SDK version error screen (#24310)# Why We want to improve the incompatible SDK error screen in Expo Go, because we will be supporting only two SDK versions, so more people will see it. # How - The header is now descriptive instead of generic "Something went wrong" - Updated the message to provide more information - The message now contains a link to a docs page - On iOS it was created with attributed string and replacing the UILabel with UITextView - On Android we embed html hyperlink into the message and then render the text as HTML - Added update instructions into the docs page. Also added instructions on how to install an older version of Expo Go. # Test Plan Tested in Go on iOS 16 and Android SDK 33, 34 <img width="190" alt="image" src="https://github.com/expo/expo/assets/31368152/c79ec613-8f19-4aef-91d0-99c682124f31"> <img width="190" alt="image" src="https://github.com/expo/expo/assets/31368152/292d8fcd-5532-4ac9-828a-6d870c396040"> <img width="190" alt="image" src="https://github.com/expo/expo/assets/31368152/d94eff4e-0113-4cea-a5ee-64a9284fb254"> <img width="190" alt="image" src="https://github.com/expo/expo/assets/31368152/6c819e52-2cc5-4e6f-9614-0bb22427e61c"> --------- Co-authored-by: Brent Vatne <[email protected]>
[android] Remove unnecessary version checks (#24203)# Why This PR is related to #24201, it removes unnecessary version checks # How Remove version check logic for SDK's < 23 # Test Pla
[android] Remove unnecessary version checks (#24203)# Why This PR is related to #24201, it removes unnecessary version checks # How Remove version check logic for SDK's < 23 # Test Plan Tested in Bare Expo in Android 13 simulator
[notifications][Android] Convert remaining modules to Kotlin (#24494)# Why Converts remaining modules to Kotlin. # Test Plan - bare-expo ✅
[notifications][Android] Convert almost all exported modules to Kotlin (#24462)# Why I'm in the middle of rewriting the expo-notifications to a new API. I decided to split the work across multip
[notifications][Android] Convert almost all exported modules to Kotlin (#24462)# Why I'm in the middle of rewriting the expo-notifications to a new API. I decided to split the work across multiple PRs. Converts almost all exported modules to Kotlin, besides those with more complicated scoping logic. # Test Plan - expo-go ✅
[go] Load embedded bundle and manifest in release builds (#24412)
[tools] Switch expo home publishing to EAS update (#24216)
[go] try to fix android expo go top crash (#24307)# Why it turns out #23974 doesn't fix all the call paths to the top one crash. it still happens on expo-go 2.29.6. the stacktrace is slightly di
[go] try to fix android expo go top crash (#24307)# Why it turns out #23974 doesn't fix all the call paths to the top one crash. it still happens on expo-go 2.29.6. the stacktrace is slightly different. # How prevent crash when the `experienceKey` is null
[android] Fix compilation issues on main (#24311)
[calendar][Android] Migrate to use Expo Modules API (#24103)# Why Migrate to use Expo Modules API. This PR needs https://github.com/expo/expo/pull/24137 to work. # Test Plan - bare-expo
[calendar][Android] Migrate to use Expo Modules API (#24103)# Why Migrate to use Expo Modules API. This PR needs https://github.com/expo/expo/pull/24137 to work. # Test Plan - bare-expo ✅
[background-fetch][Android] Migrated codebase to use Expo modules API (#23903)# Why Migrated codebase to use Expo modules API # Test Plan - bare-expo ✅
[local-authentication][Android] Migrate to use Expo Modules API (#24083)# Why Migrate to use Expo Modules API # Test Plan - bare-expo ✅
[gl][Android] Migrate to use Expo Modules API (#24017)# Why Migrate to use Expo Modules API # Test Plan - bare-expo ✅
[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]>
[font][Android] Migrate to new API (#24015)# Why Migrate to the new API # Test Plan - bare-expo ✅ - expo go ✅
[go] add keep-awake module (#24016)
[av][Android] Migrate `AVModule` to new API (#23902)# Why `Migrate AVModule to new API` Needs https://github.com/expo/expo/pull/23942 to work. # Test Plan - bare-expo and NCL ✅
[expo-updates][android] Bare update manifest non-nullability parity (#23166)
[sensors][Android] Migrate to new API (#23906)# Why Migrate to new API # Test Plan - bare-expo with NCL ✅
[go] fix top crash for android expo-go (#23974)# Why try to fix the top crash for android expo-go: https://console.firebase.google.com/project/exponent-5dd6d/crashlytics/app/android:host.exp.exp
[go] fix top crash for android expo-go (#23974)# Why try to fix the top crash for android expo-go: https://console.firebase.google.com/project/exponent-5dd6d/crashlytics/app/android:host.exp.exponent/issues/9d584f4d6540e6fccac254f6f72db478 ``` Fatal Exception: java.lang.RuntimeException: Unable to resume activity {host.exp.exponent/host.exp.exponent.experience.HomeActivity}: java.lang.NullPointerException at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4756) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4788) at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2221) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:268) at android.app.ActivityThread.main(ActivityThread.java:8101) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:627) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:997) Caused by java.lang.NullPointerException: at host.exp.exponent.experience.ReactNativeActivity.shouldShowErrorScreen(ReactNativeActivity.kt:517) at host.exp.exponent.experience.BaseExperienceActivity.consumeErrorQueue$lambda$2(BaseExperienceActivity.kt:140) at android.app.Activity.runOnUiThread(Activity.java:7146) at host.exp.exponent.experience.BaseExperienceActivity.consumeErrorQueue(BaseExperienceActivity.kt:135) at host.exp.exponent.experience.BaseExperienceActivity.onResume(BaseExperienceActivity.kt:49) at host.exp.exponent.experience.HomeActivity.onResume(HomeActivity.kt:83) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1456) at android.app.Activity.performResume(Activity.java:8229) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4741) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4788) at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2221) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:268) at android.app.ActivityThread.main(ActivityThread.java:8101) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:627) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:997) ``` # How i cannot reproduce the crash but the `manifestUrl` is null in the `HomeActivity`. not sure if the pr fixes the problem correctly but it would prevent expo-go from crash.
[battery][Android] Migrated codebase to use Expo modules API (#23883)# Why Migrated codebase to use Expo modules API # Test Plan - bare-expo ✅
12345678910>>...53