From f3d0d6d9c9cac3d1dfdbd87124d88153ea523467 Mon Sep 17 00:00:00 2001 From: Gabriel Donadel Dall'Agnol Date: Fri, 15 Mar 2024 15:59:50 -0300 Subject: [PATCH] [sdk-50] upgrade react-native 0.73.6 (#27641) # Why Follow up https://github.com/expo/expo/pull/27502 for react-native 0.73 upgrade Template Bare Minimum Diffs will be addressed in a follow-up PR because of https://github.com/expo/expo/pull/27502#discussion_r1517751278 # How - update package versions - `react-native 0.73.5 -> 0.73.6` # Test Plan - bare-expo ios / android - Expo Go - fabric ios / android - ci passed # Checklist - [ ] 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). --- .github/workflows/test-suite.yml | 2 + apps/bare-expo/ios/Podfile.lock | 464 ++++++++--------- apps/bare-expo/package.json | 2 +- apps/eas-expo-go/eas.json | 2 +- apps/fabric-tester/ios/Podfile.lock | 464 ++++++++--------- apps/fabric-tester/package.json | 2 +- apps/jest-expo-mock-generator/package.json | 2 +- apps/native-component-list/package.json | 2 +- apps/native-tests/ios/Podfile.lock | 460 ++++++++--------- apps/native-tests/package.json | 2 +- apps/router-e2e/package.json | 2 +- apps/sandbox/package.json | 2 +- apps/test-suite/package.json | 2 +- .../diffs/template-bare-minimum/diffInfo.json | 2 +- .../template-bare-minimum/raw/45..49.diff | 4 +- .../template-bare-minimum/raw/45..50.diff | 6 +- .../raw/45..unversioned.diff | 96 ++-- .../template-bare-minimum/raw/46..49.diff | 4 +- .../template-bare-minimum/raw/46..50.diff | 6 +- .../raw/46..unversioned.diff | 96 ++-- .../template-bare-minimum/raw/47..49.diff | 4 +- .../template-bare-minimum/raw/47..50.diff | 6 +- .../raw/47..unversioned.diff | 101 +++- .../template-bare-minimum/raw/48..49.diff | 4 +- .../template-bare-minimum/raw/48..50.diff | 6 +- .../raw/48..unversioned.diff | 102 +++- .../template-bare-minimum/raw/49..50.diff | 8 +- .../raw/49..unversioned.diff | 110 +++- .../raw/50..unversioned.diff | 158 +++++- home/package.json | 2 +- ios/Podfile.lock | 478 +++++++++--------- package.json | 2 +- packages/expo-dev-launcher/CHANGELOG.md | 4 + .../assets/expo_dev_launcher_android.bundle | 10 +- packages/expo-dev-launcher/ios/main.jsbundle | 10 +- packages/expo-dev-launcher/package.json | 2 +- packages/expo-dev-menu/CHANGELOG.md | 4 + .../assets/EXDevMenuApp.android.js | 2 +- .../expo-dev-menu/assets/EXDevMenuApp.ios.js | 2 +- packages/expo-dev-menu/package.json | 2 +- packages/expo/CHANGELOG.md | 4 + packages/expo/bundledNativeModules.json | 2 +- packages/expo/package.json | 2 +- react-native-lab/react-native | 2 +- .../expo-template-bare-minimum/package.json | 2 +- .../package.json | 2 +- templates/expo-template-blank/package.json | 2 +- templates/expo-template-tabs/package.json | 2 +- yarn.lock | 114 +---- 49 files changed, 1545 insertions(+), 1226 deletions(-) diff --git a/.github/workflows/test-suite.yml b/.github/workflows/test-suite.yml index ef626c7fd201b..b07f1e19cd56c 100644 --- a/.github/workflows/test-suite.yml +++ b/.github/workflows/test-suite.yml @@ -199,6 +199,8 @@ jobs: uses: actions/setup-node@v3 with: node-version: 18 + - name: ๐Ÿงน Cleanup GitHub Linux runner disk space + uses: ./.github/actions/cleanup-linux-disk-space - name: ๐Ÿ”จ Use JDK 17 uses: actions/setup-java@v3 with: diff --git a/apps/bare-expo/ios/Podfile.lock b/apps/bare-expo/ios/Podfile.lock index 34c5c86d9af59..b11456e75d710 100644 --- a/apps/bare-expo/ios/Podfile.lock +++ b/apps/bare-expo/ios/Podfile.lock @@ -43,7 +43,7 @@ PODS: - React-Core - EXNotifications (0.27.6): - ExpoModulesCore - - Expo (50.0.11): + - Expo (50.0.12): - ExpoModulesCore - expo-dev-client (3.3.9): - EXManifests @@ -209,14 +209,14 @@ PODS: - ExpoModulesCore - GoogleMaps (= 7.3.0) - GooglePlaces (= 7.3.0) - - ExpoModulesCore (1.11.10): + - ExpoModulesCore (1.11.11): - glog - RCT-Folly (= 2022.05.16.00) - React-Core - React-NativeModulesApple - React-RCTAppDelegate - ReactCommon/turbomodule/core - - ExpoModulesCore/Tests (1.11.10): + - ExpoModulesCore/Tests (1.11.11): - ExpoModulesTestCore - glog - RCT-Folly (= 2022.05.16.00) @@ -278,14 +278,14 @@ PODS: - ExpoModulesCore - UMAppLoader - EXUpdatesInterface (0.15.3) - - FBLazyVector (0.73.5) - - FBReactNativeSpec (0.73.5): + - FBLazyVector (0.73.6) + - FBReactNativeSpec (0.73.6): - RCT-Folly (= 2022.05.16.00) - - RCTRequired (= 0.73.5) - - RCTTypeSafety (= 0.73.5) - - React-Core (= 0.73.5) - - React-jsi (= 0.73.5) - - ReactCommon/turbomodule/core (= 0.73.5) + - RCTRequired (= 0.73.6) + - RCTTypeSafety (= 0.73.6) + - React-Core (= 0.73.6) + - React-jsi (= 0.73.6) + - ReactCommon/turbomodule/core (= 0.73.6) - fmt (6.2.1) - glog (0.3.5) - GoogleMaps (7.3.0): @@ -294,9 +294,9 @@ PODS: - GoogleMaps/Maps (7.3.0): - GoogleMaps/Base - GooglePlaces (7.3.0) - - hermes-engine (0.73.5): - - hermes-engine/Pre-built (= 0.73.5) - - hermes-engine/Pre-built (0.73.5) + - hermes-engine (0.73.6): + - hermes-engine/Pre-built (= 0.73.6) + - hermes-engine/Pre-built (0.73.6) - libaom (3.0.0): - libvmaf (>= 2.2.0) - libavif (0.11.1): @@ -356,26 +356,26 @@ PODS: - fmt (~> 6.2.1) - glog - libevent - - RCTRequired (0.73.5) - - RCTTypeSafety (0.73.5): - - FBLazyVector (= 0.73.5) - - RCTRequired (= 0.73.5) - - React-Core (= 0.73.5) - - React (0.73.5): - - React-Core (= 0.73.5) - - React-Core/DevSupport (= 0.73.5) - - React-Core/RCTWebSocket (= 0.73.5) - - React-RCTActionSheet (= 0.73.5) - - React-RCTAnimation (= 0.73.5) - - React-RCTBlob (= 0.73.5) - - React-RCTImage (= 0.73.5) - - React-RCTLinking (= 0.73.5) - - React-RCTNetwork (= 0.73.5) - - React-RCTSettings (= 0.73.5) - - React-RCTText (= 0.73.5) - - React-RCTVibration (= 0.73.5) - - React-callinvoker (0.73.5) - - React-Codegen (0.73.5): + - RCTRequired (0.73.6) + - RCTTypeSafety (0.73.6): + - FBLazyVector (= 0.73.6) + - RCTRequired (= 0.73.6) + - React-Core (= 0.73.6) + - React (0.73.6): + - React-Core (= 0.73.6) + - React-Core/DevSupport (= 0.73.6) + - React-Core/RCTWebSocket (= 0.73.6) + - React-RCTActionSheet (= 0.73.6) + - React-RCTAnimation (= 0.73.6) + - React-RCTBlob (= 0.73.6) + - React-RCTImage (= 0.73.6) + - React-RCTLinking (= 0.73.6) + - React-RCTNetwork (= 0.73.6) + - React-RCTSettings (= 0.73.6) + - React-RCTText (= 0.73.6) + - React-RCTVibration (= 0.73.6) + - React-callinvoker (0.73.6) + - React-Codegen (0.73.6): - DoubleConversion - FBReactNativeSpec - glog @@ -390,11 +390,11 @@ PODS: - React-rncore - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-Core (0.73.5): + - React-Core (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.5) + - React-Core/Default (= 0.73.6) - React-cxxreact - React-hermes - React-jsi @@ -404,7 +404,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/CoreModulesHeaders (0.73.5): + - React-Core/CoreModulesHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -418,7 +418,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/Default (0.73.5): + - React-Core/Default (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -431,23 +431,23 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/DevSupport (0.73.5): + - React-Core/DevSupport (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.5) - - React-Core/RCTWebSocket (= 0.73.5) + - React-Core/Default (= 0.73.6) + - React-Core/RCTWebSocket (= 0.73.6) - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - - React-jsinspector (= 0.73.5) + - React-jsinspector (= 0.73.6) - React-perflogger - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTActionSheetHeaders (0.73.5): + - React-Core/RCTActionSheetHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -461,7 +461,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTAnimationHeaders (0.73.5): + - React-Core/RCTAnimationHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -475,7 +475,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTBlobHeaders (0.73.5): + - React-Core/RCTBlobHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -489,7 +489,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTImageHeaders (0.73.5): + - React-Core/RCTImageHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -503,7 +503,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTLinkingHeaders (0.73.5): + - React-Core/RCTLinkingHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -517,7 +517,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTNetworkHeaders (0.73.5): + - React-Core/RCTNetworkHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -531,7 +531,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTSettingsHeaders (0.73.5): + - React-Core/RCTSettingsHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -545,7 +545,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTTextHeaders (0.73.5): + - React-Core/RCTTextHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -559,7 +559,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTVibrationHeaders (0.73.5): + - React-Core/RCTVibrationHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -573,11 +573,11 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTWebSocket (0.73.5): + - React-Core/RCTWebSocket (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.5) + - React-Core/Default (= 0.73.6) - React-cxxreact - React-hermes - React-jsi @@ -587,33 +587,33 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-CoreModules (0.73.5): + - React-CoreModules (0.73.6): - RCT-Folly (= 2022.05.16.00) - - RCTTypeSafety (= 0.73.5) + - RCTTypeSafety (= 0.73.6) - React-Codegen - - React-Core/CoreModulesHeaders (= 0.73.5) - - React-jsi (= 0.73.5) + - React-Core/CoreModulesHeaders (= 0.73.6) + - React-jsi (= 0.73.6) - React-NativeModulesApple - React-RCTBlob - - React-RCTImage (= 0.73.5) + - React-RCTImage (= 0.73.6) - ReactCommon - SocketRocket (= 0.6.1) - - React-cxxreact (0.73.5): + - React-cxxreact (0.73.6): - boost (= 1.83.0) - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.5) - - React-debug (= 0.73.5) - - React-jsi (= 0.73.5) - - React-jsinspector (= 0.73.5) - - React-logger (= 0.73.5) - - React-perflogger (= 0.73.5) - - React-runtimeexecutor (= 0.73.5) - - React-debug (0.73.5) - - React-Fabric (0.73.5): + - React-callinvoker (= 0.73.6) + - React-debug (= 0.73.6) + - React-jsi (= 0.73.6) + - React-jsinspector (= 0.73.6) + - React-logger (= 0.73.6) + - React-perflogger (= 0.73.6) + - React-runtimeexecutor (= 0.73.6) + - React-debug (0.73.6) + - React-Fabric (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -624,20 +624,20 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/animations (= 0.73.5) - - React-Fabric/attributedstring (= 0.73.5) - - React-Fabric/componentregistry (= 0.73.5) - - React-Fabric/componentregistrynative (= 0.73.5) - - React-Fabric/components (= 0.73.5) - - React-Fabric/core (= 0.73.5) - - React-Fabric/imagemanager (= 0.73.5) - - React-Fabric/leakchecker (= 0.73.5) - - React-Fabric/mounting (= 0.73.5) - - React-Fabric/scheduler (= 0.73.5) - - React-Fabric/telemetry (= 0.73.5) - - React-Fabric/templateprocessor (= 0.73.5) - - React-Fabric/textlayoutmanager (= 0.73.5) - - React-Fabric/uimanager (= 0.73.5) + - React-Fabric/animations (= 0.73.6) + - React-Fabric/attributedstring (= 0.73.6) + - React-Fabric/componentregistry (= 0.73.6) + - React-Fabric/componentregistrynative (= 0.73.6) + - React-Fabric/components (= 0.73.6) + - React-Fabric/core (= 0.73.6) + - React-Fabric/imagemanager (= 0.73.6) + - React-Fabric/leakchecker (= 0.73.6) + - React-Fabric/mounting (= 0.73.6) + - React-Fabric/scheduler (= 0.73.6) + - React-Fabric/telemetry (= 0.73.6) + - React-Fabric/templateprocessor (= 0.73.6) + - React-Fabric/textlayoutmanager (= 0.73.6) + - React-Fabric/uimanager (= 0.73.6) - React-graphics - React-jsi - React-jsiexecutor @@ -646,7 +646,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/animations (0.73.5): + - React-Fabric/animations (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -665,7 +665,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/attributedstring (0.73.5): + - React-Fabric/attributedstring (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -684,7 +684,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistry (0.73.5): + - React-Fabric/componentregistry (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -703,7 +703,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistrynative (0.73.5): + - React-Fabric/componentregistrynative (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -722,7 +722,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components (0.73.5): + - React-Fabric/components (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -733,17 +733,17 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/components/inputaccessory (= 0.73.5) - - React-Fabric/components/legacyviewmanagerinterop (= 0.73.5) - - React-Fabric/components/modal (= 0.73.5) - - React-Fabric/components/rncore (= 0.73.5) - - React-Fabric/components/root (= 0.73.5) - - React-Fabric/components/safeareaview (= 0.73.5) - - React-Fabric/components/scrollview (= 0.73.5) - - React-Fabric/components/text (= 0.73.5) - - React-Fabric/components/textinput (= 0.73.5) - - React-Fabric/components/unimplementedview (= 0.73.5) - - React-Fabric/components/view (= 0.73.5) + - React-Fabric/components/inputaccessory (= 0.73.6) + - React-Fabric/components/legacyviewmanagerinterop (= 0.73.6) + - React-Fabric/components/modal (= 0.73.6) + - React-Fabric/components/rncore (= 0.73.6) + - React-Fabric/components/root (= 0.73.6) + - React-Fabric/components/safeareaview (= 0.73.6) + - React-Fabric/components/scrollview (= 0.73.6) + - React-Fabric/components/text (= 0.73.6) + - React-Fabric/components/textinput (= 0.73.6) + - React-Fabric/components/unimplementedview (= 0.73.6) + - React-Fabric/components/view (= 0.73.6) - React-graphics - React-jsi - React-jsiexecutor @@ -752,7 +752,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/inputaccessory (0.73.5): + - React-Fabric/components/inputaccessory (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -771,7 +771,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/legacyviewmanagerinterop (0.73.5): + - React-Fabric/components/legacyviewmanagerinterop (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -790,7 +790,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/modal (0.73.5): + - React-Fabric/components/modal (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -809,7 +809,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/rncore (0.73.5): + - React-Fabric/components/rncore (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -828,7 +828,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/root (0.73.5): + - React-Fabric/components/root (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -847,7 +847,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/safeareaview (0.73.5): + - React-Fabric/components/safeareaview (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -866,7 +866,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/scrollview (0.73.5): + - React-Fabric/components/scrollview (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -885,7 +885,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/text (0.73.5): + - React-Fabric/components/text (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -904,7 +904,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/textinput (0.73.5): + - React-Fabric/components/textinput (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -923,7 +923,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/unimplementedview (0.73.5): + - React-Fabric/components/unimplementedview (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -942,7 +942,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/view (0.73.5): + - React-Fabric/components/view (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -962,7 +962,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - Yoga - - React-Fabric/core (0.73.5): + - React-Fabric/core (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -981,7 +981,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/imagemanager (0.73.5): + - React-Fabric/imagemanager (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -1000,7 +1000,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/leakchecker (0.73.5): + - React-Fabric/leakchecker (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -1019,7 +1019,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/mounting (0.73.5): + - React-Fabric/mounting (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -1038,7 +1038,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/scheduler (0.73.5): + - React-Fabric/scheduler (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -1057,7 +1057,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/telemetry (0.73.5): + - React-Fabric/telemetry (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -1076,7 +1076,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/templateprocessor (0.73.5): + - React-Fabric/templateprocessor (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -1095,7 +1095,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/textlayoutmanager (0.73.5): + - React-Fabric/textlayoutmanager (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -1115,7 +1115,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/uimanager (0.73.5): + - React-Fabric/uimanager (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -1134,42 +1134,42 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-FabricImage (0.73.5): + - React-FabricImage (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly/Fabric (= 2022.05.16.00) - - RCTRequired (= 0.73.5) - - RCTTypeSafety (= 0.73.5) + - RCTRequired (= 0.73.6) + - RCTTypeSafety (= 0.73.6) - React-Fabric - React-graphics - React-ImageManager - React-jsi - - React-jsiexecutor (= 0.73.5) + - React-jsiexecutor (= 0.73.6) - React-logger - React-rendererdebug - React-utils - ReactCommon - Yoga - - React-graphics (0.73.5): + - React-graphics (0.73.6): - glog - RCT-Folly/Fabric (= 2022.05.16.00) - - React-Core/Default (= 0.73.5) + - React-Core/Default (= 0.73.6) - React-utils - - React-hermes (0.73.5): + - React-hermes (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - RCT-Folly/Futures (= 2022.05.16.00) - - React-cxxreact (= 0.73.5) + - React-cxxreact (= 0.73.6) - React-jsi - - React-jsiexecutor (= 0.73.5) - - React-jsinspector (= 0.73.5) - - React-perflogger (= 0.73.5) - - React-ImageManager (0.73.5): + - React-jsiexecutor (= 0.73.6) + - React-jsinspector (= 0.73.6) + - React-perflogger (= 0.73.6) + - React-ImageManager (0.73.6): - glog - RCT-Folly/Fabric - React-Core/Default @@ -1178,31 +1178,31 @@ PODS: - React-graphics - React-rendererdebug - React-utils - - React-jserrorhandler (0.73.5): + - React-jserrorhandler (0.73.6): - RCT-Folly/Fabric (= 2022.05.16.00) - React-debug - React-jsi - React-Mapbuffer - - React-jsi (0.73.5): + - React-jsi (0.73.6): - boost (= 1.83.0) - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-jsiexecutor (0.73.5): + - React-jsiexecutor (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-cxxreact (= 0.73.5) - - React-jsi (= 0.73.5) - - React-perflogger (= 0.73.5) - - React-jsinspector (0.73.5) - - React-logger (0.73.5): + - React-cxxreact (= 0.73.6) + - React-jsi (= 0.73.6) + - React-perflogger (= 0.73.6) + - React-jsinspector (0.73.6) + - React-logger (0.73.6): - glog - - React-Mapbuffer (0.73.5): + - React-Mapbuffer (0.73.6): - glog - React-debug - react-native-netinfo (11.1.0): @@ -1223,8 +1223,8 @@ PODS: - glog - RCT-Folly (= 2022.05.16.00) - React-Core - - React-nativeconfig (0.73.5) - - React-NativeModulesApple (0.73.5): + - React-nativeconfig (0.73.6) + - React-NativeModulesApple (0.73.6): - glog - hermes-engine - React-callinvoker @@ -1234,10 +1234,10 @@ PODS: - React-runtimeexecutor - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-perflogger (0.73.5) - - React-RCTActionSheet (0.73.5): - - React-Core/RCTActionSheetHeaders (= 0.73.5) - - React-RCTAnimation (0.73.5): + - React-perflogger (0.73.6) + - React-RCTActionSheet (0.73.6): + - React-Core/RCTActionSheetHeaders (= 0.73.6) + - React-RCTAnimation (0.73.6): - RCT-Folly (= 2022.05.16.00) - RCTTypeSafety - React-Codegen @@ -1245,7 +1245,7 @@ PODS: - React-jsi - React-NativeModulesApple - ReactCommon - - React-RCTAppDelegate (0.73.5): + - React-RCTAppDelegate (0.73.6): - RCT-Folly - RCTRequired - RCTTypeSafety @@ -1259,7 +1259,7 @@ PODS: - React-RCTNetwork - React-runtimescheduler - ReactCommon - - React-RCTBlob (0.73.5): + - React-RCTBlob (0.73.6): - hermes-engine - RCT-Folly (= 2022.05.16.00) - React-Codegen @@ -1269,7 +1269,7 @@ PODS: - React-NativeModulesApple - React-RCTNetwork - ReactCommon - - React-RCTFabric (0.73.5): + - React-RCTFabric (0.73.6): - glog - hermes-engine - RCT-Folly/Fabric (= 2022.05.16.00) @@ -1287,7 +1287,7 @@ PODS: - React-runtimescheduler - React-utils - Yoga - - React-RCTImage (0.73.5): + - React-RCTImage (0.73.6): - RCT-Folly (= 2022.05.16.00) - RCTTypeSafety - React-Codegen @@ -1296,14 +1296,14 @@ PODS: - React-NativeModulesApple - React-RCTNetwork - ReactCommon - - React-RCTLinking (0.73.5): + - React-RCTLinking (0.73.6): - React-Codegen - - React-Core/RCTLinkingHeaders (= 0.73.5) - - React-jsi (= 0.73.5) + - React-Core/RCTLinkingHeaders (= 0.73.6) + - React-jsi (= 0.73.6) - React-NativeModulesApple - ReactCommon - - ReactCommon/turbomodule/core (= 0.73.5) - - React-RCTNetwork (0.73.5): + - ReactCommon/turbomodule/core (= 0.73.6) + - React-RCTNetwork (0.73.6): - RCT-Folly (= 2022.05.16.00) - RCTTypeSafety - React-Codegen @@ -1311,7 +1311,7 @@ PODS: - React-jsi - React-NativeModulesApple - ReactCommon - - React-RCTSettings (0.73.5): + - React-RCTSettings (0.73.6): - RCT-Folly (= 2022.05.16.00) - RCTTypeSafety - React-Codegen @@ -1319,25 +1319,25 @@ PODS: - React-jsi - React-NativeModulesApple - ReactCommon - - React-RCTText (0.73.5): - - React-Core/RCTTextHeaders (= 0.73.5) + - React-RCTText (0.73.6): + - React-Core/RCTTextHeaders (= 0.73.6) - Yoga - - React-RCTVibration (0.73.5): + - React-RCTVibration (0.73.6): - RCT-Folly (= 2022.05.16.00) - React-Codegen - React-Core/RCTVibrationHeaders - React-jsi - React-NativeModulesApple - ReactCommon - - React-rendererdebug (0.73.5): + - React-rendererdebug (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - RCT-Folly (= 2022.05.16.00) - React-debug - - React-rncore (0.73.5) - - React-runtimeexecutor (0.73.5): - - React-jsi (= 0.73.5) - - React-runtimescheduler (0.73.5): + - React-rncore (0.73.6) + - React-runtimeexecutor (0.73.6): + - React-jsi (= 0.73.6) + - React-runtimescheduler (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -1348,48 +1348,48 @@ PODS: - React-rendererdebug - React-runtimeexecutor - React-utils - - React-utils (0.73.5): + - React-utils (0.73.6): - glog - RCT-Folly (= 2022.05.16.00) - React-debug - - ReactCommon (0.73.5): - - React-logger (= 0.73.5) - - ReactCommon/turbomodule (= 0.73.5) - - ReactCommon/turbomodule (0.73.5): + - ReactCommon (0.73.6): + - React-logger (= 0.73.6) + - ReactCommon/turbomodule (= 0.73.6) + - ReactCommon/turbomodule (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.5) - - React-cxxreact (= 0.73.5) - - React-jsi (= 0.73.5) - - React-logger (= 0.73.5) - - React-perflogger (= 0.73.5) - - ReactCommon/turbomodule/bridging (= 0.73.5) - - ReactCommon/turbomodule/core (= 0.73.5) - - ReactCommon/turbomodule/bridging (0.73.5): + - React-callinvoker (= 0.73.6) + - React-cxxreact (= 0.73.6) + - React-jsi (= 0.73.6) + - React-logger (= 0.73.6) + - React-perflogger (= 0.73.6) + - ReactCommon/turbomodule/bridging (= 0.73.6) + - ReactCommon/turbomodule/core (= 0.73.6) + - ReactCommon/turbomodule/bridging (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.5) - - React-cxxreact (= 0.73.5) - - React-jsi (= 0.73.5) - - React-logger (= 0.73.5) - - React-perflogger (= 0.73.5) - - ReactCommon/turbomodule/core (0.73.5): + - React-callinvoker (= 0.73.6) + - React-cxxreact (= 0.73.6) + - React-jsi (= 0.73.6) + - React-logger (= 0.73.6) + - React-perflogger (= 0.73.6) + - ReactCommon/turbomodule/core (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.5) - - React-cxxreact (= 0.73.5) - - React-jsi (= 0.73.5) - - React-logger (= 0.73.5) - - React-perflogger (= 0.73.5) + - React-callinvoker (= 0.73.6) + - React-cxxreact (= 0.73.6) + - React-jsi (= 0.73.6) + - React-logger (= 0.73.6) + - React-perflogger (= 0.73.6) - RNCAsyncStorage (1.18.2): - React-Core - RNCMaskedView (0.3.0): @@ -1953,7 +1953,7 @@ SPEC CHECKSUMS: EXManifests: 5e8c29f36c716af768a4ea47ec05e1b89ab93091 EXMediaLibrary: 59077ec70ec8b0460447fadebaa1ba7361a18efe EXNotifications: e11f0e9a5b657c064a481a5d522f3bc5a07bf7cd - Expo: bbffa600c41f904151a925e5a214d1f4c5a79794 + Expo: 586874ad360bc2516adf68ae591911b54b7e7c73 expo-dev-client: dbc8e8a81d17a9d92e083a2856d056ba9a58984d expo-dev-launcher: e83a9d87530cb79a6525a700c216791c2db018b0 expo-dev-menu: b964921baa1bda2a7ff42a407d1d7698ce215faf @@ -1982,7 +1982,7 @@ SPEC CHECKSUMS: ExpoLocalization: f5f5d71dc0c9514d3d77b2771144f6fed6398d04 ExpoMailComposer: 078adb05f97c26d4a131a47dc9003eacb6879ef2 ExpoMaps: 3b04ed21d9989ea1216591a9013e2f561e750db8 - ExpoModulesCore: b2ae7a3fc6193556273c5db90065fbe7e11c7a60 + ExpoModulesCore: 304ccb25e6365959e4d23a683f6c3fd425f96b1f ExpoModulesTestCore: b7729fdcea4e82dbef9722dc1e84e29ed0d281b0 ExpoNetwork: 97d7774ab8f62e35f08db77fbef0388d5e1f2c76 ExpoPrint: 206723b8e7dd9b37a2b8e70d23485ace6d248bb4 @@ -2005,13 +2005,13 @@ SPEC CHECKSUMS: EXStructuredHeaders: 5b0f47259db047dc1fdfa84752e292c2bfa68ecd EXTaskManager: 3e446dbf75cd662aa6e7d6828be5bc26265241c3 EXUpdatesInterface: 3e444e2093e25b7ca0999a7d8c16e8392dee70c3 - FBLazyVector: 56e0e498dbb513b96c40bac6284729ba4e62672d - FBReactNativeSpec: 38fe3f8129dc980837e569aece04891f65d6578d + FBLazyVector: f64d1e2ea739b4d8f7e4740cde18089cd97fe864 + FBReactNativeSpec: 6d7217d26340b7560ab3d270477ae54e1aad9f58 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2 GoogleMaps: a146f275ee429d14822178c7a841c03366ec92a1 GooglePlaces: 0609463845250bbadafa1739938181e54dece439 - hermes-engine: 1d1835b2cc54c381909d94d1b3c8e0a2f1a94a0e + hermes-engine: 9cecf9953a681df7556b8cc9c74905de8f3293c0 libaom: 144606b1da4b5915a1054383c3a4459ccdb3c661 libavif: 84bbb62fb232c3018d6f1bab79beea87e35de7b7 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 @@ -2021,26 +2021,26 @@ SPEC CHECKSUMS: OHHTTPStubs: 90eac6d8f2c18317baeca36698523dc67c513831 Quick: d32871931c05547cb4e0bc9009d66a18b50d8558 RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0 - RCTRequired: 2544c0f1081a5fa12e108bb8cb40e5f4581ccd87 - RCTTypeSafety: 50efabe2b115c11ed03fbf3fd79e2f163ddb5d7c - React: 84221d5e0ce297bc57c4b6af539a62d812d89f10 - React-callinvoker: 5d17577ecc7f784535ebedf3aad4bcbf8f4b5117 - React-Codegen: 857e7984fc277aadde2a7a427288b6918ece7b2b - React-Core: 8e782e7e24c7843871a0d9c3c8d7c5b3ebb73832 - React-CoreModules: 7875ee247e3e6e0e683b52cd1cdda1b71618bd55 - React-cxxreact: 788cd771c6e94d44f8d472fdfae89b67226067ea - React-debug: 55c7f2b8463bfe85567c9f4ede904085601130c9 - React-Fabric: 8cb43853496bb8032420edf62e7281c53109e682 - React-FabricImage: fbdc0ef7ed58a87c77600017c19a751932de3e47 - React-graphics: dc8307b615f14e13f1081ac23ea66697808bcd29 - React-hermes: d9acaa4ebf2118d9bd8a541af8c620c467b356b6 - React-ImageManager: 2a97ddc9b1f459121697d629cfbe69712997d76f - React-jserrorhandler: b97b16674258ccaeff5a70047a097a140e76d12d - React-jsi: 1d59d0a148c76641ac577729e0268bafa494152c - React-jsiexecutor: 262b66928ad948491d03fd328bb5b822cce94647 - React-jsinspector: 32db5e364bcae8fca8cdf8891830636275add0c5 - React-logger: 0331362115f0f5b392bd7ed14636d1a3ea612479 - React-Mapbuffer: 7c35cd53a22d0be04d3f26f7881c7fb7dd230216 + RCTRequired: ca1d7414aba0b27efcfa2ccd37637edb1ab77d96 + RCTTypeSafety: 678e344fb976ff98343ca61dc62e151f3a042292 + React: e296bcebb489deaad87326067204eb74145934ab + React-callinvoker: d0b7015973fa6ccb592bb0363f6bc2164238ab8c + React-Codegen: f034a5de6f28e15e8d95d171df17e581d5309268 + React-Core: 44c936d0ab879e9c32e5381bd7596a677c59c974 + React-CoreModules: 558228e12cddb9ca00ff7937894cc5104a21be6b + React-cxxreact: 1fcf565012c203655b3638f35aa03c13c2ed7e9e + React-debug: d444db402065cca460d9c5b072caab802a04f729 + React-Fabric: 7d11905695e42f8bdaedddcf294959b43b290ab8 + React-FabricImage: 6e06a512d2fb5f55669c721578736785d915d4f5 + React-graphics: 5500206f7c9a481456365403c9fcf1638de108b7 + React-hermes: 783023e43af9d6be4fbaeeb96b5beee00649a5f7 + React-ImageManager: df193215ff3cf1a8dad297e554c89c632e42436c + React-jserrorhandler: a4d0f541c5852cf031db2f82f51de90be55b1334 + React-jsi: ae102ccb38d2e4d0f512b7074d0c9b4e1851f402 + React-jsiexecutor: bd12ec75873d3ef0a755c11f878f2c420430f5a9 + React-jsinspector: 85583ef014ce53d731a98c66a0e24496f7a83066 + React-logger: 3eb80a977f0d9669468ef641a5e1fabbc50a09ec + React-Mapbuffer: 84ea43c6c6232049135b1550b8c60b2faac19fab react-native-netinfo: 3aa5637c18834966e0c932de8ae1ae56fea20a97 react-native-pager-view: d5f3adb58a4e6e0d200055e9a4afdcda9b9022ce react-native-safe-area-context: 0ee144a6170530ccc37a0fd9388e28d06f516a89 @@ -2048,26 +2048,26 @@ SPEC CHECKSUMS: react-native-slider: 33b8d190b59d4f67a541061bb91775d53d617d9d react-native-view-shot: 6b7ed61d77d88580fed10954d45fad0eb2d47688 react-native-webview: ff06d1fe175ff827882ec88b696a7efcafa7e98d - React-nativeconfig: 1166714a4f7ea57a0df5c2cb44fbc70f98d580f9 - React-NativeModulesApple: 726664e9829eb5eed8170241000e46ead269a05f - React-perflogger: 0dd9f1725d55f8264b81efadd373fe1d9cca7dc2 - React-RCTActionSheet: 05656d2102b0d0a2676d58bad4d80106af5367b2 - React-RCTAnimation: 6c66beae98730fb7615df28caf651e295f2401e5 - React-RCTAppDelegate: 891b80c596fffcb3f90431739495d606a9a0d610 - React-RCTBlob: 8ecee445ec5fa9ed8a8621a136183c1045165100 - React-RCTFabric: f291e06bc63fef26cdd105537bae5c6a8d3bdca8 - React-RCTImage: 585b16465146cb839da02f3179ce7cb19d332642 - React-RCTLinking: 09ba11f7df62946e7ddca1b51aa3bf47b230e008 - React-RCTNetwork: e070f8d2fca60f1e9571936ce54d165e77129e76 - React-RCTSettings: b08c7ff191f0a5421aab198ea1086c9a8d513bde - React-RCTText: f6cc5a3cf0f1a4f3d1256657dca1025e4cfe45e0 - React-RCTVibration: d9948962139f9924ef87f23ab240e045e496213b - React-rendererdebug: ee05480666415f7a76e6cf0a7a50363423f44809 - React-rncore: a162dc821b8f313ab82dd17f7113ce3b96029142 - React-runtimeexecutor: 56f562a608056fb0c1711d900a992e26f375d817 - React-runtimescheduler: 814b644a5f456c7df1fba7bcd9914707152527c6 - React-utils: 987a4526a2fc0acdfaf87888adfe0bf9d0452066 - ReactCommon: 2947b0bffd82ea0e58ca7928881152d4c6dae9af + React-nativeconfig: b4d4e9901d4cabb57be63053fd2aa6086eb3c85f + React-NativeModulesApple: cd26e56d56350e123da0c1e3e4c76cb58a05e1ee + React-perflogger: 5f49905de275bac07ac7ea7f575a70611fa988f2 + React-RCTActionSheet: 37edf35aeb8e4f30e76c82aab61f12d1b75c04ec + React-RCTAnimation: a69de7f3daa8462743094f4736c455e844ea63f7 + React-RCTAppDelegate: 51fb96b554a6acd0cd7818acecd5aa5ca2f3ab9f + React-RCTBlob: d91771caebf2d015005d750cd1dc2b433ad07c99 + React-RCTFabric: c5b9451d1f2b546119b7a0353226a8a26247d4a9 + React-RCTImage: a0bfe87b6908c7b76bd7d74520f40660bd0ad881 + React-RCTLinking: 5f10be1647952cceddfa1970fdb374087582fc34 + React-RCTNetwork: a0bc3dd45a2dc7c879c80cebb6f9707b2c8bbed6 + React-RCTSettings: 28c202b68afa59afb4067510f2c69c5a530fb9e3 + React-RCTText: 4119d9e53ca5db9502b916e1b146e99798986d21 + React-RCTVibration: 55bd7c48487eb9a2562f2bd3fdc833274f5b0636 + React-rendererdebug: 5fa97ba664806cee4700e95aec42dff1b6f8ea36 + React-rncore: e2e7f6d16769cd956663fc658c3d490f21396c66 + React-runtimeexecutor: bb328dbe2865f3a550df0240df8e2d8c3aaa4c57 + React-runtimescheduler: 9636eee762c699ca7c85751a359101797e4c8b3b + React-utils: d16c1d2251c088ad817996621947d0ac8167b46c + ReactCommon: 2aa35648354bd4c4665b9a5084a7d37097b89c10 RNCAsyncStorage: ddc4ee162bfd41b0d2c68bf2d95acd81dd7f1f93 RNCMaskedView: f7c74478c83c4fdfc5cf4df51f80c0dd5cf125c6 RNCPicker: b18aaf30df596e9b1738e7c1f9ee55402a229dca @@ -2084,7 +2084,7 @@ SPEC CHECKSUMS: SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 sqlite3: f163dbbb7aa3339ad8fc622782c2d9d7b72f7e9c UMAppLoader: 5df85360d65cabaef544be5424ac64672e648482 - Yoga: 9e6a04eacbd94f97d94577017e9f23b3ab41cf6c + Yoga: d17d2cc8105eed528474683b42e2ea310e1daf61 ZXingObjC: fdbb269f25dd2032da343e06f10224d62f537bdb PODFILE CHECKSUM: f25025f67ea11b94e7d9346c35ac31dfcd6677fc diff --git a/apps/bare-expo/package.json b/apps/bare-expo/package.json index 28c82a41beb80..84736f730799f 100644 --- a/apps/bare-expo/package.json +++ b/apps/bare-expo/package.json @@ -81,7 +81,7 @@ "native-component-list": "*", "react": "18.2.0", "react-dom": "18.2.0", - "react-native": "0.73.5", + "react-native": "0.73.6", "react-native-gesture-handler": "~2.14.0", "react-native-pager-view": "6.2.3", "react-native-reanimated": "~3.6.0", diff --git a/apps/eas-expo-go/eas.json b/apps/eas-expo-go/eas.json index a23c28354d880..5ddaae9f51b1e 100644 --- a/apps/eas-expo-go/eas.json +++ b/apps/eas-expo-go/eas.json @@ -23,7 +23,7 @@ }, "ios": { "cache": { - "key": "sdk50-0.73.5", + "key": "sdk50-0.73.6", "customPaths": ["../../ios/Pods"] }, "image": "macos-ventura-13.6-xcode-15.2", diff --git a/apps/fabric-tester/ios/Podfile.lock b/apps/fabric-tester/ios/Podfile.lock index 0c95901f23bb6..3a825b5ca0ac9 100644 --- a/apps/fabric-tester/ios/Podfile.lock +++ b/apps/fabric-tester/ios/Podfile.lock @@ -11,7 +11,7 @@ PODS: - EXJSONUtils (0.12.3) - EXManifests (0.13.2): - ExpoModulesCore - - Expo (50.0.11): + - Expo (50.0.12): - ExpoModulesCore - expo-dev-client (3.3.9): - EXManifests @@ -220,7 +220,7 @@ PODS: - ExpoModulesCore - ExpoLinearGradient (12.7.2): - ExpoModulesCore - - ExpoModulesCore (1.11.10): + - ExpoModulesCore (1.11.11): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -261,12 +261,12 @@ PODS: - ReactCommon/turbomodule/core - Yoga - EXUpdatesInterface (0.15.3) - - FBLazyVector (0.73.5) + - FBLazyVector (0.73.6) - fmt (6.2.1) - glog (0.3.5) - - hermes-engine (0.73.5): - - hermes-engine/Pre-built (= 0.73.5) - - hermes-engine/Pre-built (0.73.5) + - hermes-engine (0.73.6): + - hermes-engine/Pre-built (= 0.73.6) + - hermes-engine/Pre-built (0.73.6) - libaom (3.0.0): - libvmaf (>= 2.2.0) - libavif (0.11.1): @@ -311,26 +311,26 @@ PODS: - fmt (~> 6.2.1) - glog - libevent - - RCTRequired (0.73.5) - - RCTTypeSafety (0.73.5): - - FBLazyVector (= 0.73.5) - - RCTRequired (= 0.73.5) - - React-Core (= 0.73.5) - - React (0.73.5): - - React-Core (= 0.73.5) - - React-Core/DevSupport (= 0.73.5) - - React-Core/RCTWebSocket (= 0.73.5) - - React-RCTActionSheet (= 0.73.5) - - React-RCTAnimation (= 0.73.5) - - React-RCTBlob (= 0.73.5) - - React-RCTImage (= 0.73.5) - - React-RCTLinking (= 0.73.5) - - React-RCTNetwork (= 0.73.5) - - React-RCTSettings (= 0.73.5) - - React-RCTText (= 0.73.5) - - React-RCTVibration (= 0.73.5) - - React-callinvoker (0.73.5) - - React-Codegen (0.73.5): + - RCTRequired (0.73.6) + - RCTTypeSafety (0.73.6): + - FBLazyVector (= 0.73.6) + - RCTRequired (= 0.73.6) + - React-Core (= 0.73.6) + - React (0.73.6): + - React-Core (= 0.73.6) + - React-Core/DevSupport (= 0.73.6) + - React-Core/RCTWebSocket (= 0.73.6) + - React-RCTActionSheet (= 0.73.6) + - React-RCTAnimation (= 0.73.6) + - React-RCTBlob (= 0.73.6) + - React-RCTImage (= 0.73.6) + - React-RCTLinking (= 0.73.6) + - React-RCTNetwork (= 0.73.6) + - React-RCTSettings (= 0.73.6) + - React-RCTText (= 0.73.6) + - React-RCTVibration (= 0.73.6) + - React-callinvoker (0.73.6) + - React-Codegen (0.73.6): - DoubleConversion - glog - hermes-engine @@ -349,11 +349,11 @@ PODS: - React-utils - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-Core (0.73.5): + - React-Core (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.5) + - React-Core/Default (= 0.73.6) - React-cxxreact - React-hermes - React-jsi @@ -363,7 +363,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/CoreModulesHeaders (0.73.5): + - React-Core/CoreModulesHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -377,7 +377,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/Default (0.73.5): + - React-Core/Default (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -390,23 +390,23 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/DevSupport (0.73.5): + - React-Core/DevSupport (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.5) - - React-Core/RCTWebSocket (= 0.73.5) + - React-Core/Default (= 0.73.6) + - React-Core/RCTWebSocket (= 0.73.6) - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - - React-jsinspector (= 0.73.5) + - React-jsinspector (= 0.73.6) - React-perflogger - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTActionSheetHeaders (0.73.5): + - React-Core/RCTActionSheetHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -420,7 +420,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTAnimationHeaders (0.73.5): + - React-Core/RCTAnimationHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -434,7 +434,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTBlobHeaders (0.73.5): + - React-Core/RCTBlobHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -448,7 +448,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTImageHeaders (0.73.5): + - React-Core/RCTImageHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -462,7 +462,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTLinkingHeaders (0.73.5): + - React-Core/RCTLinkingHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -476,7 +476,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTNetworkHeaders (0.73.5): + - React-Core/RCTNetworkHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -490,7 +490,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTSettingsHeaders (0.73.5): + - React-Core/RCTSettingsHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -504,7 +504,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTTextHeaders (0.73.5): + - React-Core/RCTTextHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -518,7 +518,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTVibrationHeaders (0.73.5): + - React-Core/RCTVibrationHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -532,11 +532,11 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTWebSocket (0.73.5): + - React-Core/RCTWebSocket (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.5) + - React-Core/Default (= 0.73.6) - React-cxxreact - React-hermes - React-jsi @@ -546,33 +546,33 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-CoreModules (0.73.5): + - React-CoreModules (0.73.6): - RCT-Folly (= 2022.05.16.00) - - RCTTypeSafety (= 0.73.5) + - RCTTypeSafety (= 0.73.6) - React-Codegen - - React-Core/CoreModulesHeaders (= 0.73.5) - - React-jsi (= 0.73.5) + - React-Core/CoreModulesHeaders (= 0.73.6) + - React-jsi (= 0.73.6) - React-NativeModulesApple - React-RCTBlob - - React-RCTImage (= 0.73.5) + - React-RCTImage (= 0.73.6) - ReactCommon - SocketRocket (= 0.6.1) - - React-cxxreact (0.73.5): + - React-cxxreact (0.73.6): - boost (= 1.83.0) - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.5) - - React-debug (= 0.73.5) - - React-jsi (= 0.73.5) - - React-jsinspector (= 0.73.5) - - React-logger (= 0.73.5) - - React-perflogger (= 0.73.5) - - React-runtimeexecutor (= 0.73.5) - - React-debug (0.73.5) - - React-Fabric (0.73.5): + - React-callinvoker (= 0.73.6) + - React-debug (= 0.73.6) + - React-jsi (= 0.73.6) + - React-jsinspector (= 0.73.6) + - React-logger (= 0.73.6) + - React-perflogger (= 0.73.6) + - React-runtimeexecutor (= 0.73.6) + - React-debug (0.73.6) + - React-Fabric (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -583,20 +583,20 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/animations (= 0.73.5) - - React-Fabric/attributedstring (= 0.73.5) - - React-Fabric/componentregistry (= 0.73.5) - - React-Fabric/componentregistrynative (= 0.73.5) - - React-Fabric/components (= 0.73.5) - - React-Fabric/core (= 0.73.5) - - React-Fabric/imagemanager (= 0.73.5) - - React-Fabric/leakchecker (= 0.73.5) - - React-Fabric/mounting (= 0.73.5) - - React-Fabric/scheduler (= 0.73.5) - - React-Fabric/telemetry (= 0.73.5) - - React-Fabric/templateprocessor (= 0.73.5) - - React-Fabric/textlayoutmanager (= 0.73.5) - - React-Fabric/uimanager (= 0.73.5) + - React-Fabric/animations (= 0.73.6) + - React-Fabric/attributedstring (= 0.73.6) + - React-Fabric/componentregistry (= 0.73.6) + - React-Fabric/componentregistrynative (= 0.73.6) + - React-Fabric/components (= 0.73.6) + - React-Fabric/core (= 0.73.6) + - React-Fabric/imagemanager (= 0.73.6) + - React-Fabric/leakchecker (= 0.73.6) + - React-Fabric/mounting (= 0.73.6) + - React-Fabric/scheduler (= 0.73.6) + - React-Fabric/telemetry (= 0.73.6) + - React-Fabric/templateprocessor (= 0.73.6) + - React-Fabric/textlayoutmanager (= 0.73.6) + - React-Fabric/uimanager (= 0.73.6) - React-graphics - React-jsi - React-jsiexecutor @@ -605,7 +605,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/animations (0.73.5): + - React-Fabric/animations (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -624,7 +624,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/attributedstring (0.73.5): + - React-Fabric/attributedstring (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -643,7 +643,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistry (0.73.5): + - React-Fabric/componentregistry (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -662,7 +662,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistrynative (0.73.5): + - React-Fabric/componentregistrynative (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -681,7 +681,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components (0.73.5): + - React-Fabric/components (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -692,17 +692,17 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/components/inputaccessory (= 0.73.5) - - React-Fabric/components/legacyviewmanagerinterop (= 0.73.5) - - React-Fabric/components/modal (= 0.73.5) - - React-Fabric/components/rncore (= 0.73.5) - - React-Fabric/components/root (= 0.73.5) - - React-Fabric/components/safeareaview (= 0.73.5) - - React-Fabric/components/scrollview (= 0.73.5) - - React-Fabric/components/text (= 0.73.5) - - React-Fabric/components/textinput (= 0.73.5) - - React-Fabric/components/unimplementedview (= 0.73.5) - - React-Fabric/components/view (= 0.73.5) + - React-Fabric/components/inputaccessory (= 0.73.6) + - React-Fabric/components/legacyviewmanagerinterop (= 0.73.6) + - React-Fabric/components/modal (= 0.73.6) + - React-Fabric/components/rncore (= 0.73.6) + - React-Fabric/components/root (= 0.73.6) + - React-Fabric/components/safeareaview (= 0.73.6) + - React-Fabric/components/scrollview (= 0.73.6) + - React-Fabric/components/text (= 0.73.6) + - React-Fabric/components/textinput (= 0.73.6) + - React-Fabric/components/unimplementedview (= 0.73.6) + - React-Fabric/components/view (= 0.73.6) - React-graphics - React-jsi - React-jsiexecutor @@ -711,7 +711,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/inputaccessory (0.73.5): + - React-Fabric/components/inputaccessory (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -730,7 +730,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/legacyviewmanagerinterop (0.73.5): + - React-Fabric/components/legacyviewmanagerinterop (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -749,7 +749,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/modal (0.73.5): + - React-Fabric/components/modal (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -768,7 +768,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/rncore (0.73.5): + - React-Fabric/components/rncore (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -787,7 +787,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/root (0.73.5): + - React-Fabric/components/root (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -806,7 +806,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/safeareaview (0.73.5): + - React-Fabric/components/safeareaview (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -825,7 +825,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/scrollview (0.73.5): + - React-Fabric/components/scrollview (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -844,7 +844,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/text (0.73.5): + - React-Fabric/components/text (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -863,7 +863,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/textinput (0.73.5): + - React-Fabric/components/textinput (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -882,7 +882,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/unimplementedview (0.73.5): + - React-Fabric/components/unimplementedview (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -901,7 +901,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/view (0.73.5): + - React-Fabric/components/view (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -921,7 +921,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - Yoga - - React-Fabric/core (0.73.5): + - React-Fabric/core (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -940,7 +940,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/imagemanager (0.73.5): + - React-Fabric/imagemanager (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -959,7 +959,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/leakchecker (0.73.5): + - React-Fabric/leakchecker (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -978,7 +978,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/mounting (0.73.5): + - React-Fabric/mounting (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -997,7 +997,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/scheduler (0.73.5): + - React-Fabric/scheduler (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -1016,7 +1016,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/telemetry (0.73.5): + - React-Fabric/telemetry (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -1035,7 +1035,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/templateprocessor (0.73.5): + - React-Fabric/templateprocessor (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -1054,7 +1054,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/textlayoutmanager (0.73.5): + - React-Fabric/textlayoutmanager (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -1074,7 +1074,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/uimanager (0.73.5): + - React-Fabric/uimanager (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -1093,42 +1093,42 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-FabricImage (0.73.5): + - React-FabricImage (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly/Fabric (= 2022.05.16.00) - - RCTRequired (= 0.73.5) - - RCTTypeSafety (= 0.73.5) + - RCTRequired (= 0.73.6) + - RCTTypeSafety (= 0.73.6) - React-Fabric - React-graphics - React-ImageManager - React-jsi - - React-jsiexecutor (= 0.73.5) + - React-jsiexecutor (= 0.73.6) - React-logger - React-rendererdebug - React-utils - ReactCommon - Yoga - - React-graphics (0.73.5): + - React-graphics (0.73.6): - glog - RCT-Folly/Fabric (= 2022.05.16.00) - - React-Core/Default (= 0.73.5) + - React-Core/Default (= 0.73.6) - React-utils - - React-hermes (0.73.5): + - React-hermes (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - RCT-Folly/Futures (= 2022.05.16.00) - - React-cxxreact (= 0.73.5) + - React-cxxreact (= 0.73.6) - React-jsi - - React-jsiexecutor (= 0.73.5) - - React-jsinspector (= 0.73.5) - - React-perflogger (= 0.73.5) - - React-ImageManager (0.73.5): + - React-jsiexecutor (= 0.73.6) + - React-jsinspector (= 0.73.6) + - React-perflogger (= 0.73.6) + - React-ImageManager (0.73.6): - glog - RCT-Folly/Fabric - React-Core/Default @@ -1137,37 +1137,37 @@ PODS: - React-graphics - React-rendererdebug - React-utils - - React-jserrorhandler (0.73.5): + - React-jserrorhandler (0.73.6): - RCT-Folly/Fabric (= 2022.05.16.00) - React-debug - React-jsi - React-Mapbuffer - - React-jsi (0.73.5): + - React-jsi (0.73.6): - boost (= 1.83.0) - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-jsiexecutor (0.73.5): + - React-jsiexecutor (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-cxxreact (= 0.73.5) - - React-jsi (= 0.73.5) - - React-perflogger (= 0.73.5) - - React-jsinspector (0.73.5) - - React-jsitracing (0.73.5): + - React-cxxreact (= 0.73.6) + - React-jsi (= 0.73.6) + - React-perflogger (= 0.73.6) + - React-jsinspector (0.73.6) + - React-jsitracing (0.73.6): - React-jsi - - React-logger (0.73.5): + - React-logger (0.73.6): - glog - - React-Mapbuffer (0.73.5): + - React-Mapbuffer (0.73.6): - glog - React-debug - - React-nativeconfig (0.73.5) - - React-NativeModulesApple (0.73.5): + - React-nativeconfig (0.73.6) + - React-NativeModulesApple (0.73.6): - glog - hermes-engine - React-callinvoker @@ -1177,10 +1177,10 @@ PODS: - React-runtimeexecutor - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-perflogger (0.73.5) - - React-RCTActionSheet (0.73.5): - - React-Core/RCTActionSheetHeaders (= 0.73.5) - - React-RCTAnimation (0.73.5): + - React-perflogger (0.73.6) + - React-RCTActionSheet (0.73.6): + - React-Core/RCTActionSheetHeaders (= 0.73.6) + - React-RCTAnimation (0.73.6): - RCT-Folly (= 2022.05.16.00) - RCTTypeSafety - React-Codegen @@ -1188,7 +1188,7 @@ PODS: - React-jsi - React-NativeModulesApple - ReactCommon - - React-RCTAppDelegate (0.73.5): + - React-RCTAppDelegate (0.73.6): - RCT-Folly - RCTRequired - RCTTypeSafety @@ -1210,7 +1210,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon - - React-RCTBlob (0.73.5): + - React-RCTBlob (0.73.6): - hermes-engine - RCT-Folly (= 2022.05.16.00) - React-Codegen @@ -1220,7 +1220,7 @@ PODS: - React-NativeModulesApple - React-RCTNetwork - ReactCommon - - React-RCTFabric (0.73.5): + - React-RCTFabric (0.73.6): - glog - hermes-engine - RCT-Folly/Fabric (= 2022.05.16.00) @@ -1238,7 +1238,7 @@ PODS: - React-runtimescheduler - React-utils - Yoga - - React-RCTImage (0.73.5): + - React-RCTImage (0.73.6): - RCT-Folly (= 2022.05.16.00) - RCTTypeSafety - React-Codegen @@ -1247,14 +1247,14 @@ PODS: - React-NativeModulesApple - React-RCTNetwork - ReactCommon - - React-RCTLinking (0.73.5): + - React-RCTLinking (0.73.6): - React-Codegen - - React-Core/RCTLinkingHeaders (= 0.73.5) - - React-jsi (= 0.73.5) + - React-Core/RCTLinkingHeaders (= 0.73.6) + - React-jsi (= 0.73.6) - React-NativeModulesApple - ReactCommon - - ReactCommon/turbomodule/core (= 0.73.5) - - React-RCTNetwork (0.73.5): + - ReactCommon/turbomodule/core (= 0.73.6) + - React-RCTNetwork (0.73.6): - RCT-Folly (= 2022.05.16.00) - RCTTypeSafety - React-Codegen @@ -1262,7 +1262,7 @@ PODS: - React-jsi - React-NativeModulesApple - ReactCommon - - React-RCTSettings (0.73.5): + - React-RCTSettings (0.73.6): - RCT-Folly (= 2022.05.16.00) - RCTTypeSafety - React-Codegen @@ -1270,23 +1270,23 @@ PODS: - React-jsi - React-NativeModulesApple - ReactCommon - - React-RCTText (0.73.5): - - React-Core/RCTTextHeaders (= 0.73.5) + - React-RCTText (0.73.6): + - React-Core/RCTTextHeaders (= 0.73.6) - Yoga - - React-RCTVibration (0.73.5): + - React-RCTVibration (0.73.6): - RCT-Folly (= 2022.05.16.00) - React-Codegen - React-Core/RCTVibrationHeaders - React-jsi - React-NativeModulesApple - ReactCommon - - React-rendererdebug (0.73.5): + - React-rendererdebug (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - RCT-Folly (= 2022.05.16.00) - React-debug - - React-rncore (0.73.5) - - React-RuntimeApple (0.73.5): + - React-rncore (0.73.6) + - React-RuntimeApple (0.73.6): - hermes-engine - RCT-Folly/Fabric (= 2022.05.16.00) - React-callinvoker @@ -1303,7 +1303,7 @@ PODS: - React-runtimeexecutor - React-RuntimeHermes - React-utils - - React-RuntimeCore (0.73.5): + - React-RuntimeCore (0.73.6): - glog - hermes-engine - RCT-Folly/Fabric (= 2022.05.16.00) @@ -1313,16 +1313,16 @@ PODS: - React-jsiexecutor - React-runtimeexecutor - React-runtimescheduler - - React-runtimeexecutor (0.73.5): - - React-jsi (= 0.73.5) - - React-RuntimeHermes (0.73.5): + - React-runtimeexecutor (0.73.6): + - React-jsi (= 0.73.6) + - React-RuntimeHermes (0.73.6): - hermes-engine - RCT-Folly/Fabric (= 2022.05.16.00) - React-jsi - React-jsitracing - React-nativeconfig - React-utils - - React-runtimescheduler (0.73.5): + - React-runtimescheduler (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -1333,48 +1333,48 @@ PODS: - React-rendererdebug - React-runtimeexecutor - React-utils - - React-utils (0.73.5): + - React-utils (0.73.6): - glog - RCT-Folly (= 2022.05.16.00) - React-debug - - ReactCommon (0.73.5): - - React-logger (= 0.73.5) - - ReactCommon/turbomodule (= 0.73.5) - - ReactCommon/turbomodule (0.73.5): + - ReactCommon (0.73.6): + - React-logger (= 0.73.6) + - ReactCommon/turbomodule (= 0.73.6) + - ReactCommon/turbomodule (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.5) - - React-cxxreact (= 0.73.5) - - React-jsi (= 0.73.5) - - React-logger (= 0.73.5) - - React-perflogger (= 0.73.5) - - ReactCommon/turbomodule/bridging (= 0.73.5) - - ReactCommon/turbomodule/core (= 0.73.5) - - ReactCommon/turbomodule/bridging (0.73.5): + - React-callinvoker (= 0.73.6) + - React-cxxreact (= 0.73.6) + - React-jsi (= 0.73.6) + - React-logger (= 0.73.6) + - React-perflogger (= 0.73.6) + - ReactCommon/turbomodule/bridging (= 0.73.6) + - ReactCommon/turbomodule/core (= 0.73.6) + - ReactCommon/turbomodule/bridging (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.5) - - React-cxxreact (= 0.73.5) - - React-jsi (= 0.73.5) - - React-logger (= 0.73.5) - - React-perflogger (= 0.73.5) - - ReactCommon/turbomodule/core (0.73.5): + - React-callinvoker (= 0.73.6) + - React-cxxreact (= 0.73.6) + - React-jsi (= 0.73.6) + - React-logger (= 0.73.6) + - React-perflogger (= 0.73.6) + - ReactCommon/turbomodule/core (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.5) - - React-cxxreact (= 0.73.5) - - React-jsi (= 0.73.5) - - React-logger (= 0.73.5) - - React-perflogger (= 0.73.5) + - React-callinvoker (= 0.73.6) + - React-cxxreact (= 0.73.6) + - React-jsi (= 0.73.6) + - React-logger (= 0.73.6) + - React-perflogger (= 0.73.6) - SDWebImage (5.17.0): - SDWebImage/Core (= 5.17.0) - SDWebImage/Core (5.17.0) @@ -1638,7 +1638,7 @@ SPEC CHECKSUMS: EXFont: f20669cb266ef48b004f1eb1f2b20db96cd1df9f EXJSONUtils: 5c42959e87be238b045ef37cc5268b16a6c0ad4a EXManifests: 5e8c29f36c716af768a4ea47ec05e1b89ab93091 - Expo: bbffa600c41f904151a925e5a214d1f4c5a79794 + Expo: 586874ad360bc2516adf68ae591911b54b7e7c73 expo-dev-client: dbc8e8a81d17a9d92e083a2856d056ba9a58984d expo-dev-launcher: c71f380e56e3d4ecd9cdf81779f04b3ca59aa406 expo-dev-menu: 22990e65d4174c59a7e0686ea3345b4319cca3d9 @@ -1650,69 +1650,69 @@ SPEC CHECKSUMS: ExpoImage: 8cf2d51de3d03b7e984e9b0ba8f19c0c22057001 ExpoKeepAwake: 0f5cad99603a3268e50af9a6eb8b76d0d9ac956c ExpoLinearGradient: 4ad1449a2408e0435ac959076562b3921f2e32a1 - ExpoModulesCore: 55a54d98a059b8acae3ae54eeaa7cef2c3c2ec00 + ExpoModulesCore: 8e105a0de1111b43e355cfdacd6d7f95e77d2ae0 EXSplashScreen: b9973a1dffda33b646d58283125af5332d3fa84a EXUpdatesInterface: 3e444e2093e25b7ca0999a7d8c16e8392dee70c3 - FBLazyVector: 56e0e498dbb513b96c40bac6284729ba4e62672d + FBLazyVector: f64d1e2ea739b4d8f7e4740cde18089cd97fe864 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2 - hermes-engine: 1d1835b2cc54c381909d94d1b3c8e0a2f1a94a0e + hermes-engine: 9cecf9953a681df7556b8cc9c74905de8f3293c0 libaom: 144606b1da4b5915a1054383c3a4459ccdb3c661 libavif: 84bbb62fb232c3018d6f1bab79beea87e35de7b7 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 libvmaf: 27f523f1e63c694d14d534cd0fddd2fab0ae8711 libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009 RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0 - RCTRequired: 2544c0f1081a5fa12e108bb8cb40e5f4581ccd87 - RCTTypeSafety: 50efabe2b115c11ed03fbf3fd79e2f163ddb5d7c - React: 84221d5e0ce297bc57c4b6af539a62d812d89f10 - React-callinvoker: 5d17577ecc7f784535ebedf3aad4bcbf8f4b5117 - React-Codegen: ebf759090abb7e69ed6853244d4793b00f1660e0 - React-Core: 8e782e7e24c7843871a0d9c3c8d7c5b3ebb73832 - React-CoreModules: 7875ee247e3e6e0e683b52cd1cdda1b71618bd55 - React-cxxreact: 788cd771c6e94d44f8d472fdfae89b67226067ea - React-debug: 55c7f2b8463bfe85567c9f4ede904085601130c9 - React-Fabric: 8cb43853496bb8032420edf62e7281c53109e682 - React-FabricImage: fbdc0ef7ed58a87c77600017c19a751932de3e47 - React-graphics: dc8307b615f14e13f1081ac23ea66697808bcd29 - React-hermes: d9acaa4ebf2118d9bd8a541af8c620c467b356b6 - React-ImageManager: 2a97ddc9b1f459121697d629cfbe69712997d76f - React-jserrorhandler: b97b16674258ccaeff5a70047a097a140e76d12d - React-jsi: 1d59d0a148c76641ac577729e0268bafa494152c - React-jsiexecutor: 262b66928ad948491d03fd328bb5b822cce94647 - React-jsinspector: 32db5e364bcae8fca8cdf8891830636275add0c5 - React-jsitracing: 42912570ecc01b07e29894a1a05a54f270e683ce - React-logger: 0331362115f0f5b392bd7ed14636d1a3ea612479 - React-Mapbuffer: 7c35cd53a22d0be04d3f26f7881c7fb7dd230216 - React-nativeconfig: 1166714a4f7ea57a0df5c2cb44fbc70f98d580f9 - React-NativeModulesApple: 726664e9829eb5eed8170241000e46ead269a05f - React-perflogger: 0dd9f1725d55f8264b81efadd373fe1d9cca7dc2 - React-RCTActionSheet: 05656d2102b0d0a2676d58bad4d80106af5367b2 - React-RCTAnimation: 6c66beae98730fb7615df28caf651e295f2401e5 - React-RCTAppDelegate: d78fa6bcb3c823201b77bb86a967a0efd2dd4eed - React-RCTBlob: 8ecee445ec5fa9ed8a8621a136183c1045165100 - React-RCTFabric: 43929bf7439754d75bd9a88f97c990bfb98c90fd - React-RCTImage: 585b16465146cb839da02f3179ce7cb19d332642 - React-RCTLinking: 09ba11f7df62946e7ddca1b51aa3bf47b230e008 - React-RCTNetwork: e070f8d2fca60f1e9571936ce54d165e77129e76 - React-RCTSettings: b08c7ff191f0a5421aab198ea1086c9a8d513bde - React-RCTText: f6cc5a3cf0f1a4f3d1256657dca1025e4cfe45e0 - React-RCTVibration: d9948962139f9924ef87f23ab240e045e496213b - React-rendererdebug: ee05480666415f7a76e6cf0a7a50363423f44809 - React-rncore: a93b592afe8ff28029a3c4009e52da14a0516c90 - React-RuntimeApple: 95172dcfb260834a2bf1c8302b27ef0bc276e079 - React-RuntimeCore: 404f636cf4144ead99c1bf46fad1cbecede27876 - React-runtimeexecutor: 56f562a608056fb0c1711d900a992e26f375d817 - React-RuntimeHermes: 4a505ba2d60c4c8523d28f1d69dd5d115d81a6d3 - React-runtimescheduler: 814b644a5f456c7df1fba7bcd9914707152527c6 - React-utils: 987a4526a2fc0acdfaf87888adfe0bf9d0452066 - ReactCommon: 2947b0bffd82ea0e58ca7928881152d4c6dae9af + RCTRequired: ca1d7414aba0b27efcfa2ccd37637edb1ab77d96 + RCTTypeSafety: 678e344fb976ff98343ca61dc62e151f3a042292 + React: e296bcebb489deaad87326067204eb74145934ab + React-callinvoker: d0b7015973fa6ccb592bb0363f6bc2164238ab8c + React-Codegen: 2e954aa87c8a0c6fba13ab709ee1613b95fe1052 + React-Core: 44c936d0ab879e9c32e5381bd7596a677c59c974 + React-CoreModules: 558228e12cddb9ca00ff7937894cc5104a21be6b + React-cxxreact: 1fcf565012c203655b3638f35aa03c13c2ed7e9e + React-debug: d444db402065cca460d9c5b072caab802a04f729 + React-Fabric: 7d11905695e42f8bdaedddcf294959b43b290ab8 + React-FabricImage: 6e06a512d2fb5f55669c721578736785d915d4f5 + React-graphics: 5500206f7c9a481456365403c9fcf1638de108b7 + React-hermes: 783023e43af9d6be4fbaeeb96b5beee00649a5f7 + React-ImageManager: df193215ff3cf1a8dad297e554c89c632e42436c + React-jserrorhandler: a4d0f541c5852cf031db2f82f51de90be55b1334 + React-jsi: ae102ccb38d2e4d0f512b7074d0c9b4e1851f402 + React-jsiexecutor: bd12ec75873d3ef0a755c11f878f2c420430f5a9 + React-jsinspector: 85583ef014ce53d731a98c66a0e24496f7a83066 + React-jsitracing: 4fed160d939e93a39049481f47744af246a7ac2c + React-logger: 3eb80a977f0d9669468ef641a5e1fabbc50a09ec + React-Mapbuffer: 84ea43c6c6232049135b1550b8c60b2faac19fab + React-nativeconfig: b4d4e9901d4cabb57be63053fd2aa6086eb3c85f + React-NativeModulesApple: cd26e56d56350e123da0c1e3e4c76cb58a05e1ee + React-perflogger: 5f49905de275bac07ac7ea7f575a70611fa988f2 + React-RCTActionSheet: 37edf35aeb8e4f30e76c82aab61f12d1b75c04ec + React-RCTAnimation: a69de7f3daa8462743094f4736c455e844ea63f7 + React-RCTAppDelegate: 5d3238045cfc5d6b157550e62c3cb6e2f7f2a5a6 + React-RCTBlob: d91771caebf2d015005d750cd1dc2b433ad07c99 + React-RCTFabric: 910a000f2470943ef39edc606f065fb61b138401 + React-RCTImage: a0bfe87b6908c7b76bd7d74520f40660bd0ad881 + React-RCTLinking: 5f10be1647952cceddfa1970fdb374087582fc34 + React-RCTNetwork: a0bc3dd45a2dc7c879c80cebb6f9707b2c8bbed6 + React-RCTSettings: 28c202b68afa59afb4067510f2c69c5a530fb9e3 + React-RCTText: 4119d9e53ca5db9502b916e1b146e99798986d21 + React-RCTVibration: 55bd7c48487eb9a2562f2bd3fdc833274f5b0636 + React-rendererdebug: 5fa97ba664806cee4700e95aec42dff1b6f8ea36 + React-rncore: a3534bcdcf253f7ecc1f0ee36bfe8f4035ea1432 + React-RuntimeApple: c9886b8729f1e2fd5a551e54c617391d5172140e + React-RuntimeCore: 17e41e15c4933e0a127317e8ba0e582210a24fdc + React-runtimeexecutor: bb328dbe2865f3a550df0240df8e2d8c3aaa4c57 + React-RuntimeHermes: a4a1f5e24555292aa6a5f176fc41ad51878220d3 + React-runtimescheduler: 9636eee762c699ca7c85751a359101797e4c8b3b + React-utils: d16c1d2251c088ad817996621947d0ac8167b46c + ReactCommon: 2aa35648354bd4c4665b9a5084a7d37097b89c10 SDWebImage: 750adf017a315a280c60fde706ab1e552a3ae4e9 SDWebImageAVIFCoder: 8348fef6d0ec69e129c66c9fe4d74fbfbf366112 SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c SDWebImageWebPCoder: af09429398d99d524cae2fe00f6f0f6e491ed102 SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 - Yoga: 9e6a04eacbd94f97d94577017e9f23b3ab41cf6c + Yoga: d17d2cc8105eed528474683b42e2ea310e1daf61 ZXingObjC: 8898711ab495761b2dbbdec76d90164a6d7e14c5 PODFILE CHECKSUM: 71426e037432f85589759f1a9cee661a7b991aff diff --git a/apps/fabric-tester/package.json b/apps/fabric-tester/package.json index 9c82254737dd9..bd02f124ceee8 100644 --- a/apps/fabric-tester/package.json +++ b/apps/fabric-tester/package.json @@ -21,7 +21,7 @@ "expo-status-bar": "~1.11.0", "react": "18.2.0", "react-dom": "18.2.0", - "react-native": "0.73.5", + "react-native": "0.73.6", "react-native-web": "~0.19.6" }, "devDependencies": { diff --git a/apps/jest-expo-mock-generator/package.json b/apps/jest-expo-mock-generator/package.json index d91ce998cff7b..1d5691397dac5 100644 --- a/apps/jest-expo-mock-generator/package.json +++ b/apps/jest-expo-mock-generator/package.json @@ -12,6 +12,6 @@ "expo": "~50.0.0-alpha.0", "expo-clipboard": "~5.0.0", "react": "18.2.0", - "react-native": "0.73.5" + "react-native": "0.73.6" } } diff --git a/apps/native-component-list/package.json b/apps/native-component-list/package.json index a6a632d659bc2..d8480b814baae 100644 --- a/apps/native-component-list/package.json +++ b/apps/native-component-list/package.json @@ -140,7 +140,7 @@ "processing-js": "^1.6.6", "react": "18.2.0", "react-dom": "18.2.0", - "react-native": "0.73.5", + "react-native": "0.73.6", "react-native-dropdown-picker": "^5.3.0", "react-native-gesture-handler": "~2.14.0", "react-native-maps": "1.8.0", diff --git a/apps/native-tests/ios/Podfile.lock b/apps/native-tests/ios/Podfile.lock index eec72dfdc6833..53122c9a2addd 100644 --- a/apps/native-tests/ios/Podfile.lock +++ b/apps/native-tests/ios/Podfile.lock @@ -116,14 +116,14 @@ PODS: - ExpoFileSystem/Tests (16.0.8): - ExpoModulesCore - ExpoModulesTestCore - - ExpoModulesCore (1.11.10): + - ExpoModulesCore (1.11.11): - glog - RCT-Folly (= 2022.05.16.00) - React-Core - React-NativeModulesApple - React-RCTAppDelegate - ReactCommon/turbomodule/core - - ExpoModulesCore/Tests (1.11.10): + - ExpoModulesCore/Tests (1.11.11): - ExpoModulesTestCore - glog - RCT-Folly (= 2022.05.16.00) @@ -162,19 +162,19 @@ PODS: - React-Core - sqlite3 (~> 3.42.0) - EXUpdatesInterface (0.15.3) - - FBLazyVector (0.73.5) - - FBReactNativeSpec (0.73.5): + - FBLazyVector (0.73.6) + - FBReactNativeSpec (0.73.6): - RCT-Folly (= 2022.05.16.00) - - RCTRequired (= 0.73.5) - - RCTTypeSafety (= 0.73.5) - - React-Core (= 0.73.5) - - React-jsi (= 0.73.5) - - ReactCommon/turbomodule/core (= 0.73.5) + - RCTRequired (= 0.73.6) + - RCTTypeSafety (= 0.73.6) + - React-Core (= 0.73.6) + - React-jsi (= 0.73.6) + - ReactCommon/turbomodule/core (= 0.73.6) - fmt (6.2.1) - glog (0.3.5) - - hermes-engine (0.73.5): - - hermes-engine/Pre-built (= 0.73.5) - - hermes-engine/Pre-built (0.73.5) + - hermes-engine (0.73.6): + - hermes-engine/Pre-built (= 0.73.6) + - hermes-engine/Pre-built (0.73.6) - libevent (2.1.12) - Nimble (13.0.0) - OHHTTPStubs (9.1.0): @@ -213,27 +213,27 @@ PODS: - fmt (~> 6.2.1) - glog - libevent - - RCTRequired (0.73.5) - - RCTTypeSafety (0.73.5): - - FBLazyVector (= 0.73.5) - - RCTRequired (= 0.73.5) - - React-Core (= 0.73.5) + - RCTRequired (0.73.6) + - RCTTypeSafety (0.73.6): + - FBLazyVector (= 0.73.6) + - RCTRequired (= 0.73.6) + - React-Core (= 0.73.6) - ReachabilitySwift (5.0.0) - - React (0.73.5): - - React-Core (= 0.73.5) - - React-Core/DevSupport (= 0.73.5) - - React-Core/RCTWebSocket (= 0.73.5) - - React-RCTActionSheet (= 0.73.5) - - React-RCTAnimation (= 0.73.5) - - React-RCTBlob (= 0.73.5) - - React-RCTImage (= 0.73.5) - - React-RCTLinking (= 0.73.5) - - React-RCTNetwork (= 0.73.5) - - React-RCTSettings (= 0.73.5) - - React-RCTText (= 0.73.5) - - React-RCTVibration (= 0.73.5) - - React-callinvoker (0.73.5) - - React-Codegen (0.73.5): + - React (0.73.6): + - React-Core (= 0.73.6) + - React-Core/DevSupport (= 0.73.6) + - React-Core/RCTWebSocket (= 0.73.6) + - React-RCTActionSheet (= 0.73.6) + - React-RCTAnimation (= 0.73.6) + - React-RCTBlob (= 0.73.6) + - React-RCTImage (= 0.73.6) + - React-RCTLinking (= 0.73.6) + - React-RCTNetwork (= 0.73.6) + - React-RCTSettings (= 0.73.6) + - React-RCTText (= 0.73.6) + - React-RCTVibration (= 0.73.6) + - React-callinvoker (0.73.6) + - React-Codegen (0.73.6): - DoubleConversion - FBReactNativeSpec - glog @@ -248,11 +248,11 @@ PODS: - React-rncore - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-Core (0.73.5): + - React-Core (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.5) + - React-Core/Default (= 0.73.6) - React-cxxreact - React-hermes - React-jsi @@ -262,7 +262,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/CoreModulesHeaders (0.73.5): + - React-Core/CoreModulesHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -276,7 +276,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/Default (0.73.5): + - React-Core/Default (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -289,23 +289,23 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/DevSupport (0.73.5): + - React-Core/DevSupport (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.5) - - React-Core/RCTWebSocket (= 0.73.5) + - React-Core/Default (= 0.73.6) + - React-Core/RCTWebSocket (= 0.73.6) - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - - React-jsinspector (= 0.73.5) + - React-jsinspector (= 0.73.6) - React-perflogger - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTActionSheetHeaders (0.73.5): + - React-Core/RCTActionSheetHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -319,7 +319,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTAnimationHeaders (0.73.5): + - React-Core/RCTAnimationHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -333,7 +333,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTBlobHeaders (0.73.5): + - React-Core/RCTBlobHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -347,7 +347,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTImageHeaders (0.73.5): + - React-Core/RCTImageHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -361,7 +361,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTLinkingHeaders (0.73.5): + - React-Core/RCTLinkingHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -375,7 +375,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTNetworkHeaders (0.73.5): + - React-Core/RCTNetworkHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -389,7 +389,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTSettingsHeaders (0.73.5): + - React-Core/RCTSettingsHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -403,7 +403,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTTextHeaders (0.73.5): + - React-Core/RCTTextHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -417,7 +417,7 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTVibrationHeaders (0.73.5): + - React-Core/RCTVibrationHeaders (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -431,11 +431,11 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTWebSocket (0.73.5): + - React-Core/RCTWebSocket (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-Core/Default (= 0.73.5) + - React-Core/Default (= 0.73.6) - React-cxxreact - React-hermes - React-jsi @@ -445,33 +445,33 @@ PODS: - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-CoreModules (0.73.5): + - React-CoreModules (0.73.6): - RCT-Folly (= 2022.05.16.00) - - RCTTypeSafety (= 0.73.5) + - RCTTypeSafety (= 0.73.6) - React-Codegen - - React-Core/CoreModulesHeaders (= 0.73.5) - - React-jsi (= 0.73.5) + - React-Core/CoreModulesHeaders (= 0.73.6) + - React-jsi (= 0.73.6) - React-NativeModulesApple - React-RCTBlob - - React-RCTImage (= 0.73.5) + - React-RCTImage (= 0.73.6) - ReactCommon - SocketRocket (= 0.6.1) - - React-cxxreact (0.73.5): + - React-cxxreact (0.73.6): - boost (= 1.83.0) - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.5) - - React-debug (= 0.73.5) - - React-jsi (= 0.73.5) - - React-jsinspector (= 0.73.5) - - React-logger (= 0.73.5) - - React-perflogger (= 0.73.5) - - React-runtimeexecutor (= 0.73.5) - - React-debug (0.73.5) - - React-Fabric (0.73.5): + - React-callinvoker (= 0.73.6) + - React-debug (= 0.73.6) + - React-jsi (= 0.73.6) + - React-jsinspector (= 0.73.6) + - React-logger (= 0.73.6) + - React-perflogger (= 0.73.6) + - React-runtimeexecutor (= 0.73.6) + - React-debug (0.73.6) + - React-Fabric (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -482,20 +482,20 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/animations (= 0.73.5) - - React-Fabric/attributedstring (= 0.73.5) - - React-Fabric/componentregistry (= 0.73.5) - - React-Fabric/componentregistrynative (= 0.73.5) - - React-Fabric/components (= 0.73.5) - - React-Fabric/core (= 0.73.5) - - React-Fabric/imagemanager (= 0.73.5) - - React-Fabric/leakchecker (= 0.73.5) - - React-Fabric/mounting (= 0.73.5) - - React-Fabric/scheduler (= 0.73.5) - - React-Fabric/telemetry (= 0.73.5) - - React-Fabric/templateprocessor (= 0.73.5) - - React-Fabric/textlayoutmanager (= 0.73.5) - - React-Fabric/uimanager (= 0.73.5) + - React-Fabric/animations (= 0.73.6) + - React-Fabric/attributedstring (= 0.73.6) + - React-Fabric/componentregistry (= 0.73.6) + - React-Fabric/componentregistrynative (= 0.73.6) + - React-Fabric/components (= 0.73.6) + - React-Fabric/core (= 0.73.6) + - React-Fabric/imagemanager (= 0.73.6) + - React-Fabric/leakchecker (= 0.73.6) + - React-Fabric/mounting (= 0.73.6) + - React-Fabric/scheduler (= 0.73.6) + - React-Fabric/telemetry (= 0.73.6) + - React-Fabric/templateprocessor (= 0.73.6) + - React-Fabric/textlayoutmanager (= 0.73.6) + - React-Fabric/uimanager (= 0.73.6) - React-graphics - React-jsi - React-jsiexecutor @@ -504,7 +504,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/animations (0.73.5): + - React-Fabric/animations (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -523,7 +523,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/attributedstring (0.73.5): + - React-Fabric/attributedstring (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -542,7 +542,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistry (0.73.5): + - React-Fabric/componentregistry (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -561,7 +561,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistrynative (0.73.5): + - React-Fabric/componentregistrynative (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -580,7 +580,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components (0.73.5): + - React-Fabric/components (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -591,17 +591,17 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/components/inputaccessory (= 0.73.5) - - React-Fabric/components/legacyviewmanagerinterop (= 0.73.5) - - React-Fabric/components/modal (= 0.73.5) - - React-Fabric/components/rncore (= 0.73.5) - - React-Fabric/components/root (= 0.73.5) - - React-Fabric/components/safeareaview (= 0.73.5) - - React-Fabric/components/scrollview (= 0.73.5) - - React-Fabric/components/text (= 0.73.5) - - React-Fabric/components/textinput (= 0.73.5) - - React-Fabric/components/unimplementedview (= 0.73.5) - - React-Fabric/components/view (= 0.73.5) + - React-Fabric/components/inputaccessory (= 0.73.6) + - React-Fabric/components/legacyviewmanagerinterop (= 0.73.6) + - React-Fabric/components/modal (= 0.73.6) + - React-Fabric/components/rncore (= 0.73.6) + - React-Fabric/components/root (= 0.73.6) + - React-Fabric/components/safeareaview (= 0.73.6) + - React-Fabric/components/scrollview (= 0.73.6) + - React-Fabric/components/text (= 0.73.6) + - React-Fabric/components/textinput (= 0.73.6) + - React-Fabric/components/unimplementedview (= 0.73.6) + - React-Fabric/components/view (= 0.73.6) - React-graphics - React-jsi - React-jsiexecutor @@ -610,7 +610,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/inputaccessory (0.73.5): + - React-Fabric/components/inputaccessory (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -629,7 +629,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/legacyviewmanagerinterop (0.73.5): + - React-Fabric/components/legacyviewmanagerinterop (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -648,7 +648,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/modal (0.73.5): + - React-Fabric/components/modal (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -667,7 +667,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/rncore (0.73.5): + - React-Fabric/components/rncore (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -686,7 +686,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/root (0.73.5): + - React-Fabric/components/root (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -705,7 +705,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/safeareaview (0.73.5): + - React-Fabric/components/safeareaview (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -724,7 +724,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/scrollview (0.73.5): + - React-Fabric/components/scrollview (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -743,7 +743,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/text (0.73.5): + - React-Fabric/components/text (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -762,7 +762,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/textinput (0.73.5): + - React-Fabric/components/textinput (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -781,7 +781,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/unimplementedview (0.73.5): + - React-Fabric/components/unimplementedview (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -800,7 +800,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/view (0.73.5): + - React-Fabric/components/view (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -820,7 +820,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - Yoga - - React-Fabric/core (0.73.5): + - React-Fabric/core (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -839,7 +839,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/imagemanager (0.73.5): + - React-Fabric/imagemanager (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -858,7 +858,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/leakchecker (0.73.5): + - React-Fabric/leakchecker (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -877,7 +877,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/mounting (0.73.5): + - React-Fabric/mounting (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -896,7 +896,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/scheduler (0.73.5): + - React-Fabric/scheduler (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -915,7 +915,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/telemetry (0.73.5): + - React-Fabric/telemetry (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -934,7 +934,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/templateprocessor (0.73.5): + - React-Fabric/templateprocessor (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -953,7 +953,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/textlayoutmanager (0.73.5): + - React-Fabric/textlayoutmanager (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -973,7 +973,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/uimanager (0.73.5): + - React-Fabric/uimanager (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog @@ -992,42 +992,42 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-FabricImage (0.73.5): + - React-FabricImage (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly/Fabric (= 2022.05.16.00) - - RCTRequired (= 0.73.5) - - RCTTypeSafety (= 0.73.5) + - RCTRequired (= 0.73.6) + - RCTTypeSafety (= 0.73.6) - React-Fabric - React-graphics - React-ImageManager - React-jsi - - React-jsiexecutor (= 0.73.5) + - React-jsiexecutor (= 0.73.6) - React-logger - React-rendererdebug - React-utils - ReactCommon - Yoga - - React-graphics (0.73.5): + - React-graphics (0.73.6): - glog - RCT-Folly/Fabric (= 2022.05.16.00) - - React-Core/Default (= 0.73.5) + - React-Core/Default (= 0.73.6) - React-utils - - React-hermes (0.73.5): + - React-hermes (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - RCT-Folly/Futures (= 2022.05.16.00) - - React-cxxreact (= 0.73.5) + - React-cxxreact (= 0.73.6) - React-jsi - - React-jsiexecutor (= 0.73.5) - - React-jsinspector (= 0.73.5) - - React-perflogger (= 0.73.5) - - React-ImageManager (0.73.5): + - React-jsiexecutor (= 0.73.6) + - React-jsinspector (= 0.73.6) + - React-perflogger (= 0.73.6) + - React-ImageManager (0.73.6): - glog - RCT-Folly/Fabric - React-Core/Default @@ -1036,35 +1036,35 @@ PODS: - React-graphics - React-rendererdebug - React-utils - - React-jserrorhandler (0.73.5): + - React-jserrorhandler (0.73.6): - RCT-Folly/Fabric (= 2022.05.16.00) - React-debug - React-jsi - React-Mapbuffer - - React-jsi (0.73.5): + - React-jsi (0.73.6): - boost (= 1.83.0) - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-jsiexecutor (0.73.5): + - React-jsiexecutor (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-cxxreact (= 0.73.5) - - React-jsi (= 0.73.5) - - React-perflogger (= 0.73.5) - - React-jsinspector (0.73.5) - - React-logger (0.73.5): + - React-cxxreact (= 0.73.6) + - React-jsi (= 0.73.6) + - React-perflogger (= 0.73.6) + - React-jsinspector (0.73.6) + - React-logger (0.73.6): - glog - - React-Mapbuffer (0.73.5): + - React-Mapbuffer (0.73.6): - glog - React-debug - - React-nativeconfig (0.73.5) - - React-NativeModulesApple (0.73.5): + - React-nativeconfig (0.73.6) + - React-NativeModulesApple (0.73.6): - glog - hermes-engine - React-callinvoker @@ -1074,10 +1074,10 @@ PODS: - React-runtimeexecutor - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-perflogger (0.73.5) - - React-RCTActionSheet (0.73.5): - - React-Core/RCTActionSheetHeaders (= 0.73.5) - - React-RCTAnimation (0.73.5): + - React-perflogger (0.73.6) + - React-RCTActionSheet (0.73.6): + - React-Core/RCTActionSheetHeaders (= 0.73.6) + - React-RCTAnimation (0.73.6): - RCT-Folly (= 2022.05.16.00) - RCTTypeSafety - React-Codegen @@ -1085,7 +1085,7 @@ PODS: - React-jsi - React-NativeModulesApple - ReactCommon - - React-RCTAppDelegate (0.73.5): + - React-RCTAppDelegate (0.73.6): - RCT-Folly - RCTRequired - RCTTypeSafety @@ -1099,7 +1099,7 @@ PODS: - React-RCTNetwork - React-runtimescheduler - ReactCommon - - React-RCTBlob (0.73.5): + - React-RCTBlob (0.73.6): - hermes-engine - RCT-Folly (= 2022.05.16.00) - React-Codegen @@ -1109,7 +1109,7 @@ PODS: - React-NativeModulesApple - React-RCTNetwork - ReactCommon - - React-RCTFabric (0.73.5): + - React-RCTFabric (0.73.6): - glog - hermes-engine - RCT-Folly/Fabric (= 2022.05.16.00) @@ -1127,7 +1127,7 @@ PODS: - React-runtimescheduler - React-utils - Yoga - - React-RCTImage (0.73.5): + - React-RCTImage (0.73.6): - RCT-Folly (= 2022.05.16.00) - RCTTypeSafety - React-Codegen @@ -1136,14 +1136,14 @@ PODS: - React-NativeModulesApple - React-RCTNetwork - ReactCommon - - React-RCTLinking (0.73.5): + - React-RCTLinking (0.73.6): - React-Codegen - - React-Core/RCTLinkingHeaders (= 0.73.5) - - React-jsi (= 0.73.5) + - React-Core/RCTLinkingHeaders (= 0.73.6) + - React-jsi (= 0.73.6) - React-NativeModulesApple - ReactCommon - - ReactCommon/turbomodule/core (= 0.73.5) - - React-RCTNetwork (0.73.5): + - ReactCommon/turbomodule/core (= 0.73.6) + - React-RCTNetwork (0.73.6): - RCT-Folly (= 2022.05.16.00) - RCTTypeSafety - React-Codegen @@ -1151,7 +1151,7 @@ PODS: - React-jsi - React-NativeModulesApple - ReactCommon - - React-RCTSettings (0.73.5): + - React-RCTSettings (0.73.6): - RCT-Folly (= 2022.05.16.00) - RCTTypeSafety - React-Codegen @@ -1159,25 +1159,25 @@ PODS: - React-jsi - React-NativeModulesApple - ReactCommon - - React-RCTText (0.73.5): - - React-Core/RCTTextHeaders (= 0.73.5) + - React-RCTText (0.73.6): + - React-Core/RCTTextHeaders (= 0.73.6) - Yoga - - React-RCTVibration (0.73.5): + - React-RCTVibration (0.73.6): - RCT-Folly (= 2022.05.16.00) - React-Codegen - React-Core/RCTVibrationHeaders - React-jsi - React-NativeModulesApple - ReactCommon - - React-rendererdebug (0.73.5): + - React-rendererdebug (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - RCT-Folly (= 2022.05.16.00) - React-debug - - React-rncore (0.73.5) - - React-runtimeexecutor (0.73.5): - - React-jsi (= 0.73.5) - - React-runtimescheduler (0.73.5): + - React-rncore (0.73.6) + - React-runtimeexecutor (0.73.6): + - React-jsi (= 0.73.6) + - React-runtimescheduler (0.73.6): - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) @@ -1188,48 +1188,48 @@ PODS: - React-rendererdebug - React-runtimeexecutor - React-utils - - React-utils (0.73.5): + - React-utils (0.73.6): - glog - RCT-Folly (= 2022.05.16.00) - React-debug - - ReactCommon (0.73.5): - - React-logger (= 0.73.5) - - ReactCommon/turbomodule (= 0.73.5) - - ReactCommon/turbomodule (0.73.5): + - ReactCommon (0.73.6): + - React-logger (= 0.73.6) + - ReactCommon/turbomodule (= 0.73.6) + - ReactCommon/turbomodule (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.5) - - React-cxxreact (= 0.73.5) - - React-jsi (= 0.73.5) - - React-logger (= 0.73.5) - - React-perflogger (= 0.73.5) - - ReactCommon/turbomodule/bridging (= 0.73.5) - - ReactCommon/turbomodule/core (= 0.73.5) - - ReactCommon/turbomodule/bridging (0.73.5): + - React-callinvoker (= 0.73.6) + - React-cxxreact (= 0.73.6) + - React-jsi (= 0.73.6) + - React-logger (= 0.73.6) + - React-perflogger (= 0.73.6) + - ReactCommon/turbomodule/bridging (= 0.73.6) + - ReactCommon/turbomodule/core (= 0.73.6) + - ReactCommon/turbomodule/bridging (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.5) - - React-cxxreact (= 0.73.5) - - React-jsi (= 0.73.5) - - React-logger (= 0.73.5) - - React-perflogger (= 0.73.5) - - ReactCommon/turbomodule/core (0.73.5): + - React-callinvoker (= 0.73.6) + - React-cxxreact (= 0.73.6) + - React-jsi (= 0.73.6) + - React-logger (= 0.73.6) + - React-perflogger (= 0.73.6) + - ReactCommon/turbomodule/core (0.73.6): - DoubleConversion - fmt (~> 6.2.1) - glog - hermes-engine - RCT-Folly (= 2022.05.16.00) - - React-callinvoker (= 0.73.5) - - React-cxxreact (= 0.73.5) - - React-jsi (= 0.73.5) - - React-logger (= 0.73.5) - - React-perflogger (= 0.73.5) + - React-callinvoker (= 0.73.6) + - React-cxxreact (= 0.73.6) + - React-jsi (= 0.73.6) + - React-logger (= 0.73.6) + - React-perflogger (= 0.73.6) - SocketRocket (0.6.1) - sqlite3 (3.42.0): - sqlite3/common (= 3.42.0) @@ -1472,65 +1472,65 @@ SPEC CHECKSUMS: expo-dev-menu-interface: 7ba029c9d1a82ac22b9b584c00514860b060553e ExpoClipboard: b597982124f067ff9f5b89093eb3d97898d5d877 ExpoFileSystem: eecaf6796aed0f4dd20042dc2ca2cac6c4bc1185 - ExpoModulesCore: b2ae7a3fc6193556273c5db90065fbe7e11c7a60 + ExpoModulesCore: 304ccb25e6365959e4d23a683f6c3fd425f96b1f ExpoModulesTestCore: b7729fdcea4e82dbef9722dc1e84e29ed0d281b0 EXStructuredHeaders: 5b0f47259db047dc1fdfa84752e292c2bfa68ecd EXUpdates: b99cb55ba2681f75f5d3a2dcab0afcfa70873f11 EXUpdatesInterface: 3e444e2093e25b7ca0999a7d8c16e8392dee70c3 - FBLazyVector: 56e0e498dbb513b96c40bac6284729ba4e62672d - FBReactNativeSpec: e3be705fc629a4d9f6e9acd073adc01ddbc8aab6 + FBLazyVector: f64d1e2ea739b4d8f7e4740cde18089cd97fe864 + FBReactNativeSpec: 1fd5f6a7a259bfd120757fe050042713f64d72be fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2 - hermes-engine: 1d1835b2cc54c381909d94d1b3c8e0a2f1a94a0e + hermes-engine: 9cecf9953a681df7556b8cc9c74905de8f3293c0 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 Nimble: 97d90931cca412a23224ff29e258809f75c258f7 OHHTTPStubs: 90eac6d8f2c18317baeca36698523dc67c513831 Quick: d32871931c05547cb4e0bc9009d66a18b50d8558 RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0 - RCTRequired: 2544c0f1081a5fa12e108bb8cb40e5f4581ccd87 - RCTTypeSafety: 50efabe2b115c11ed03fbf3fd79e2f163ddb5d7c + RCTRequired: ca1d7414aba0b27efcfa2ccd37637edb1ab77d96 + RCTTypeSafety: 678e344fb976ff98343ca61dc62e151f3a042292 ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825 - React: 84221d5e0ce297bc57c4b6af539a62d812d89f10 - React-callinvoker: 5d17577ecc7f784535ebedf3aad4bcbf8f4b5117 - React-Codegen: 857e7984fc277aadde2a7a427288b6918ece7b2b - React-Core: 8e782e7e24c7843871a0d9c3c8d7c5b3ebb73832 - React-CoreModules: 7875ee247e3e6e0e683b52cd1cdda1b71618bd55 - React-cxxreact: 788cd771c6e94d44f8d472fdfae89b67226067ea - React-debug: 55c7f2b8463bfe85567c9f4ede904085601130c9 - React-Fabric: 8cb43853496bb8032420edf62e7281c53109e682 - React-FabricImage: fbdc0ef7ed58a87c77600017c19a751932de3e47 - React-graphics: dc8307b615f14e13f1081ac23ea66697808bcd29 - React-hermes: d9acaa4ebf2118d9bd8a541af8c620c467b356b6 - React-ImageManager: 2a97ddc9b1f459121697d629cfbe69712997d76f - React-jserrorhandler: b97b16674258ccaeff5a70047a097a140e76d12d - React-jsi: 1d59d0a148c76641ac577729e0268bafa494152c - React-jsiexecutor: 262b66928ad948491d03fd328bb5b822cce94647 - React-jsinspector: 32db5e364bcae8fca8cdf8891830636275add0c5 - React-logger: 0331362115f0f5b392bd7ed14636d1a3ea612479 - React-Mapbuffer: 7c35cd53a22d0be04d3f26f7881c7fb7dd230216 - React-nativeconfig: 1166714a4f7ea57a0df5c2cb44fbc70f98d580f9 - React-NativeModulesApple: 726664e9829eb5eed8170241000e46ead269a05f - React-perflogger: 0dd9f1725d55f8264b81efadd373fe1d9cca7dc2 - React-RCTActionSheet: 05656d2102b0d0a2676d58bad4d80106af5367b2 - React-RCTAnimation: 6c66beae98730fb7615df28caf651e295f2401e5 - React-RCTAppDelegate: 891b80c596fffcb3f90431739495d606a9a0d610 - React-RCTBlob: 8ecee445ec5fa9ed8a8621a136183c1045165100 - React-RCTFabric: f291e06bc63fef26cdd105537bae5c6a8d3bdca8 - React-RCTImage: 585b16465146cb839da02f3179ce7cb19d332642 - React-RCTLinking: 09ba11f7df62946e7ddca1b51aa3bf47b230e008 - React-RCTNetwork: e070f8d2fca60f1e9571936ce54d165e77129e76 - React-RCTSettings: b08c7ff191f0a5421aab198ea1086c9a8d513bde - React-RCTText: f6cc5a3cf0f1a4f3d1256657dca1025e4cfe45e0 - React-RCTVibration: d9948962139f9924ef87f23ab240e045e496213b - React-rendererdebug: ee05480666415f7a76e6cf0a7a50363423f44809 - React-rncore: f0ff055509577e8eb18d0b9352fc9ab2720aa601 - React-runtimeexecutor: 56f562a608056fb0c1711d900a992e26f375d817 - React-runtimescheduler: 814b644a5f456c7df1fba7bcd9914707152527c6 - React-utils: 987a4526a2fc0acdfaf87888adfe0bf9d0452066 - ReactCommon: 2947b0bffd82ea0e58ca7928881152d4c6dae9af + React: e296bcebb489deaad87326067204eb74145934ab + React-callinvoker: d0b7015973fa6ccb592bb0363f6bc2164238ab8c + React-Codegen: f034a5de6f28e15e8d95d171df17e581d5309268 + React-Core: 44c936d0ab879e9c32e5381bd7596a677c59c974 + React-CoreModules: 558228e12cddb9ca00ff7937894cc5104a21be6b + React-cxxreact: 1fcf565012c203655b3638f35aa03c13c2ed7e9e + React-debug: d444db402065cca460d9c5b072caab802a04f729 + React-Fabric: 7d11905695e42f8bdaedddcf294959b43b290ab8 + React-FabricImage: 6e06a512d2fb5f55669c721578736785d915d4f5 + React-graphics: 5500206f7c9a481456365403c9fcf1638de108b7 + React-hermes: 783023e43af9d6be4fbaeeb96b5beee00649a5f7 + React-ImageManager: df193215ff3cf1a8dad297e554c89c632e42436c + React-jserrorhandler: a4d0f541c5852cf031db2f82f51de90be55b1334 + React-jsi: ae102ccb38d2e4d0f512b7074d0c9b4e1851f402 + React-jsiexecutor: bd12ec75873d3ef0a755c11f878f2c420430f5a9 + React-jsinspector: 85583ef014ce53d731a98c66a0e24496f7a83066 + React-logger: 3eb80a977f0d9669468ef641a5e1fabbc50a09ec + React-Mapbuffer: 84ea43c6c6232049135b1550b8c60b2faac19fab + React-nativeconfig: b4d4e9901d4cabb57be63053fd2aa6086eb3c85f + React-NativeModulesApple: cd26e56d56350e123da0c1e3e4c76cb58a05e1ee + React-perflogger: 5f49905de275bac07ac7ea7f575a70611fa988f2 + React-RCTActionSheet: 37edf35aeb8e4f30e76c82aab61f12d1b75c04ec + React-RCTAnimation: a69de7f3daa8462743094f4736c455e844ea63f7 + React-RCTAppDelegate: 51fb96b554a6acd0cd7818acecd5aa5ca2f3ab9f + React-RCTBlob: d91771caebf2d015005d750cd1dc2b433ad07c99 + React-RCTFabric: c5b9451d1f2b546119b7a0353226a8a26247d4a9 + React-RCTImage: a0bfe87b6908c7b76bd7d74520f40660bd0ad881 + React-RCTLinking: 5f10be1647952cceddfa1970fdb374087582fc34 + React-RCTNetwork: a0bc3dd45a2dc7c879c80cebb6f9707b2c8bbed6 + React-RCTSettings: 28c202b68afa59afb4067510f2c69c5a530fb9e3 + React-RCTText: 4119d9e53ca5db9502b916e1b146e99798986d21 + React-RCTVibration: 55bd7c48487eb9a2562f2bd3fdc833274f5b0636 + React-rendererdebug: 5fa97ba664806cee4700e95aec42dff1b6f8ea36 + React-rncore: f0bffefc8fdcbd394bec058893f42142f6440bbf + React-runtimeexecutor: bb328dbe2865f3a550df0240df8e2d8c3aaa4c57 + React-runtimescheduler: 9636eee762c699ca7c85751a359101797e4c8b3b + React-utils: d16c1d2251c088ad817996621947d0ac8167b46c + ReactCommon: 2aa35648354bd4c4665b9a5084a7d37097b89c10 SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 sqlite3: f163dbbb7aa3339ad8fc622782c2d9d7b72f7e9c - Yoga: 9e6a04eacbd94f97d94577017e9f23b3ab41cf6c + Yoga: d17d2cc8105eed528474683b42e2ea310e1daf61 PODFILE CHECKSUM: 32b16f07653241ea742140d21bd83f8950e87c9a diff --git a/apps/native-tests/package.json b/apps/native-tests/package.json index 6fcfbd5863468..c94b8ff24cb0b 100644 --- a/apps/native-tests/package.json +++ b/apps/native-tests/package.json @@ -21,7 +21,7 @@ "native-component-list": "*", "react": "18.2.0", "react-dom": "18.2.0", - "react-native": "0.73.5" + "react-native": "0.73.6" }, "devDependencies": { "@babel/core": "^7.12.9" diff --git a/apps/router-e2e/package.json b/apps/router-e2e/package.json index fb2319ad2ebd5..26e2dbfba8574 100644 --- a/apps/router-e2e/package.json +++ b/apps/router-e2e/package.json @@ -9,7 +9,7 @@ "expo": "~50.0.0-alpha.0", "expo-router": "^3.0.0", "react": "18.2.0", - "react-native": "0.73.5" + "react-native": "0.73.6" }, "devDependencies": { "autoprefixer": "^10.4.16", diff --git a/apps/sandbox/package.json b/apps/sandbox/package.json index d65f46f0f9982..54d095b055909 100644 --- a/apps/sandbox/package.json +++ b/apps/sandbox/package.json @@ -11,7 +11,7 @@ "expo": "~50.0.0-alpha.0", "expo-router": "^3.0.0", "react": "18.2.0", - "react-native": "0.73.5" + "react-native": "0.73.6" }, "devDependencies": { "babel-preset-expo": "~10.0.0", diff --git a/apps/test-suite/package.json b/apps/test-suite/package.json index dbf3965bfc0df..aea669a3fe32d 100644 --- a/apps/test-suite/package.json +++ b/apps/test-suite/package.json @@ -51,7 +51,7 @@ "jasmine-core": "^2.4.1", "lodash": "^4.17.19", "react": "18.2.0", - "react-native": "0.73.5", + "react-native": "0.73.6", "react-native-gesture-handler": "~2.14.0", "sinon": "^7.1.1" }, diff --git a/docs/public/static/diffs/template-bare-minimum/diffInfo.json b/docs/public/static/diffs/template-bare-minimum/diffInfo.json index 9ca18821db0c8..e28f50ecbd1aa 100644 --- a/docs/public/static/diffs/template-bare-minimum/diffInfo.json +++ b/docs/public/static/diffs/template-bare-minimum/diffInfo.json @@ -1 +1 @@ -{"versions":["45","46","47","48","49","50","unversioned"],"diffs":{"45..45":"","45..46":"diff --git a/templates/expo-template-bare-minimum/android/app/build.gradle b/templates/expo-template-bare-minimum/android/app/build.gradle\nindex 346fb02564..f0293fe400 100644\n--- a/templates/expo-template-bare-minimum/android/app/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/app/build.gradle\n@@ -80,15 +80,17 @@ import org.apache.tools.ant.taskdefs.condition.Os\n \n def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath()\n \n+def reactNativeRoot = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath()\n+\n project.ext.react = [\n entryFile: [\"node\", \"-e\", \"require('expo/scripts/resolveAppEntry')\", projectRoot, \"android\"].execute(null, rootDir).text.trim(),\n enableHermes: (findProperty('expo.jsEngine') ?: \"jsc\") == \"hermes\",\n- cliPath: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/cli.js\",\n- hermesCommand: new File([\"node\", \"--print\", \"require.resolve('hermes-engine/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/%OS-BIN%/hermesc\",\n- composeSourceMapsPath: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/scripts/compose-source-maps.js\",\n+ hermesCommand: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/sdks/hermesc/%OS-BIN%/hermesc\",\n+ cliPath: \"${reactNativeRoot}/cli.js\",\n+ composeSourceMapsPath: \"${reactNativeRoot}/scripts/compose-source-maps.js\",\n ]\n \n-apply from: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../react.gradle\")\n+apply from: new File(reactNativeRoot, \"react.gradle\")\n \n /**\n * Set this to true to create two separate APKs instead of one:\n@@ -157,8 +159,9 @@ android {\n \"NDK_TOOLCHAIN_VERSION=clang\",\n \"GENERATED_SRC_DIR=$buildDir/generated/source\",\n \"PROJECT_BUILD_DIR=$buildDir\",\n- \"REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid\",\n- \"REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build\"\n+ \"REACT_ANDROID_DIR=${reactNativeRoot}/ReactAndroid\",\n+ \"REACT_ANDROID_BUILD_DIR=${reactNativeRoot}/ReactAndroid/build\",\n+ \"NODE_MODULES_DIR=$rootDir/../node_modules\"\n cFlags \"-Wall\", \"-Werror\", \"-fexceptions\", \"-frtti\", \"-DWITH_INSPECTOR=1\"\n cppFlags \"-std=c++17\"\n // Make sure this target name is the same you specify inside the\n@@ -329,8 +332,10 @@ dependencies {\n }\n \n if (enableHermes) {\n- debugImplementation files(new File([\"node\", \"--print\", \"require.resolve('hermes-engine/package.json')\"].execute(null, rootDir).text.trim(), \"../android/hermes-debug.aar\"))\n- releaseImplementation files(new File([\"node\", \"--print\", \"require.resolve('hermes-engine/package.json')\"].execute(null, rootDir).text.trim(), \"../android/hermes-release.aar\"))\n+ //noinspection GradleDynamicVersion\n+ implementation(\"com.facebook.react:hermes-engine:+\") { // From node_modules\n+ exclude group:'com.facebook.fbjni'\n+ }\n } else {\n implementation jscFlavor\n }\n@@ -343,7 +348,11 @@ if (isNewArchitectureEnabled()) {\n configurations.all {\n resolutionStrategy.dependencySubstitution {\n substitute(module(\"com.facebook.react:react-native\"))\n- .using(project(\":ReactAndroid\")).because(\"On New Architecture we're building React Native from source\")\n+ .using(project(\":ReactAndroid\"))\n+ .because(\"On New Architecture we're building React Native from source\")\n+ substitute(module(\"com.facebook.react:hermes-engine\"))\n+ .using(project(\":ReactAndroid:hermes-engine\"))\n+ .because(\"On New Architecture we're building Hermes from source\")\n }\n }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\nindex 576e23db45..8e13797d9b 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n@@ -28,10 +28,15 @@ public class MainActivity extends ReactActivity {\n return \"main\";\n }\n \n+ /**\n+ * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n+ * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n+ * (Paper).\n+ */\n @Override\n protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this,\n- new ReactActivityDelegate(this, getMainComponentName())\n+ return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n+ new MainActivityDelegate(this, getMainComponentName())\n );\n }\n \n@@ -54,4 +59,25 @@ public class MainActivity extends ReactActivity {\n // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n super.invokeDefaultOnBackPressed();\n }\n+\n+ public static class MainActivityDelegate extends ReactActivityDelegate {\n+ public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n+ super(activity, mainComponentName);\n+ }\n+\n+ @Override\n+ protected ReactRootView createRootView() {\n+ ReactRootView reactRootView = new ReactRootView(getContext());\n+ // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n+ reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n+ return reactRootView;\n+ }\n+\n+ @Override\n+ protected boolean isConcurrentRootEnabled() {\n+ // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n+ // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n+ return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n+ }\n+ }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\nindex f555e36448..7665dd923f 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n@@ -18,6 +18,7 @@ import com.facebook.react.fabric.ComponentFactory;\n import com.facebook.react.fabric.CoreComponentsRegistry;\n import com.facebook.react.fabric.EmptyReactNativeConfig;\n import com.facebook.react.fabric.FabricJSIModuleProvider;\n+import com.facebook.react.fabric.ReactNativeConfig;\n import com.facebook.react.uimanager.ViewManagerRegistry;\n import com.helloworld.BuildConfig;\n import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n@@ -105,7 +106,7 @@ public class MainApplicationReactNativeHost extends ReactNativeHost {\n return new FabricJSIModuleProvider(\n reactApplicationContext,\n componentFactory,\n- new EmptyReactNativeConfig(),\n+ ReactNativeConfig.DEFAULT_CONFIG,\n viewManagerRegistry);\n }\n });\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\nindex 0ae6366756..cda1391225 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n@@ -17,7 +17,7 @@ LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n \n # If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source \n+# will have to uncomment those lines to include the generated source\n # files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n #\n # LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n@@ -28,8 +28,7 @@ LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n LOCAL_SHARED_LIBRARIES := \\\n libfabricjni \\\n libfbjni \\\n- libfolly_futures \\\n- libfolly_json \\\n+ libfolly_runtime \\\n libglog \\\n libjsi \\\n libreact_codegen_rncore \\\ndiff --git a/templates/expo-template-bare-minimum/android/build.gradle b/templates/expo-template-bare-minimum/android/build.gradle\nindex fa77528908..f259b31a11 100644\n--- a/templates/expo-template-bare-minimum/android/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/build.gradle\n@@ -1,7 +1,6 @@\n import org.apache.tools.ant.taskdefs.condition.Os\n \n // Top-level build file where you can add configuration options common to all sub-projects/modules.\n-\n buildscript {\n ext {\n buildToolsVersion = findProperty('android.buildToolsVersion') ?: '31.0.0'\n@@ -26,9 +25,9 @@ buildscript {\n mavenCentral()\n }\n dependencies {\n- classpath('com.android.tools.build:gradle:7.0.4')\n+ classpath('com.android.tools.build:gradle:7.1.1')\n classpath('com.facebook.react:react-native-gradle-plugin')\n- classpath('de.undercouch:gradle-download-task:4.1.2')\n+ classpath('de.undercouch:gradle-download-task:5.0.1')\n // NOTE: Do not place your application dependencies here; they belong\n // in the individual module build.gradle files\n }\n@@ -65,3 +64,9 @@ allprojects {\n maven { url 'https://www.jitpack.io' }\n }\n }\n+\n+configurations.all {\n+ resolutionStrategy {\n+ force 'com.facebook.react:react-native:0.69.6'\n+ }\n+}\n\\ No newline at end of file\ndiff --git a/templates/expo-template-bare-minimum/android/settings.gradle b/templates/expo-template-bare-minimum/android/settings.gradle\nindex fa543f0c69..b3332319f9 100644\n--- a/templates/expo-template-bare-minimum/android/settings.gradle\n+++ b/templates/expo-template-bare-minimum/android/settings.gradle\n@@ -12,4 +12,6 @@ includeBuild(new File([\"node\", \"--print\", \"require.resolve('react-native-gradle-\n if (settings.hasProperty(\"newArchEnabled\") && settings.newArchEnabled == \"true\") {\n include(\":ReactAndroid\")\n project(\":ReactAndroid\").projectDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../ReactAndroid\");\n+ include(\":ReactAndroid:hermes-engine\")\n+ project(\":ReactAndroid:hermes-engine\").projectDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../ReactAndroid/hermes-engine\");\n }\ndiff --git a/templates/expo-template-bare-minimum/ios/.xcode.env b/templates/expo-template-bare-minimum/ios/.xcode.env\nnew file mode 100644\nindex 0000000000..3d5782c715\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/ios/.xcode.env\n@@ -0,0 +1,11 @@\n+# This `.xcode.env` file is versioned and is used to source the environment\n+# used when running script phases inside Xcode.\n+# To customize your local environment, you can create an `.xcode.env.local`\n+# file that is not versioned.\n+\n+# NODE_BINARY variable contains the PATH to the node executable.\n+#\n+# Customize the NODE_BINARY variable here.\n+# For example, to use nvm with brew, add the following line\n+# . \"$(brew --prefix nvm)/nvm.sh\" --no-use\n+export NODE_BINARY=$(command -v node)\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\nindex 2ac180e425..a4a049f05d 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n@@ -214,7 +214,7 @@\n \t\t\t);\n \t\t\trunOnlyForDeploymentPostprocessing = 0;\n \t\t\tshellPath = /bin/sh;\n-\t\t\tshellScript = \"export NODE_BINARY=node\\n\\n# The project root by default is one level up from the ios directory\\nexport PROJECT_ROOT=\\\"$PROJECT_DIR\\\"/..\\n\\n`node --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\\\"`\\n\";\n+\t\t\tshellScript = \"if [[ -f \\\"$PODS_ROOT/../.xcode.env\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env\\\"\\nfi\\nif [[ -f \\\"$PODS_ROOT/../.xcode.env.local\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env.local\\\"\\nfi\\n\\n# The project root by default is one level up from the ios directory\\nexport PROJECT_ROOT=\\\"$PROJECT_DIR\\\"/..\\n\\nif [[ \\\"$CONFIGURATION\\\" = *Debug* ]]; then\\n export SKIP_BUNDLING=1\\nfi\\n`\\\"$NODE_BINARY\\\" --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\\\"`\\n\\n\";\n \t\t};\n \t\t08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = {\n \t\t\tisa = PBXShellScriptBuildPhase;\n@@ -276,7 +276,7 @@\n \t\t\t);\n \t\t\trunOnlyForDeploymentPostprocessing = 0;\n \t\t\tshellPath = /bin/sh;\n-\t\t\tshellScript = \"export RCT_METRO_PORT=\\\"${RCT_METRO_PORT:=8081}\\\"\\necho \\\"export RCT_METRO_PORT=${RCT_METRO_PORT}\\\" > `node --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/.packager.env'\\\"`\\nif [ -z \\\"${RCT_NO_LAUNCH_PACKAGER+xxx}\\\" ] ; then\\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\\n if ! curl -s \\\"http://localhost:${RCT_METRO_PORT}/status\\\" | grep -q \\\"packager-status:running\\\" ; then\\n echo \\\"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\\\"\\n exit 2\\n fi\\n else\\n open `node --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/launchPackager.command'\\\"` || echo \\\"Can't start packager automatically\\\"\\n fi\\nfi\\n\";\n+\t\t\tshellScript = \"if [[ -f \\\"$PODS_ROOT/../.xcode.env\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env\\\"\\nfi\\nif [[ -f \\\"$PODS_ROOT/../.xcode.env.local\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env.local\\\"\\nfi\\n\\nexport RCT_METRO_PORT=\\\"${RCT_METRO_PORT:=8081}\\\"\\necho \\\"export RCT_METRO_PORT=${RCT_METRO_PORT}\\\" > `$NODE_BINARY --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/.packager.env'\\\"`\\nif [ -z \\\"${RCT_NO_LAUNCH_PACKAGER+xxx}\\\" ] ; then\\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\\n if ! curl -s \\\"http://localhost:${RCT_METRO_PORT}/status\\\" | grep -q \\\"packager-status:running\\\" ; then\\n echo \\\"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\\\"\\n exit 2\\n fi\\n else\\n open `$NODE_BINARY --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/launchPackager.command'\\\"` || echo \\\"Can't start packager automatically\\\"\\n fi\\nfi\\n\";\n \t\t\tshowEnvVarsInLog = 0;\n \t\t};\n /* End PBXShellScriptBuildPhase section */\n@@ -308,7 +308,7 @@\n \t\t\t\t\t\"FB_SONARKIT_ENABLED=1\",\n \t\t\t\t);\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n@@ -331,7 +331,7 @@\n \t\t\t\tCLANG_ENABLE_MODULES = YES;\n \t\t\t\tCURRENT_PROJECT_VERSION = 1;\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n@@ -392,7 +392,7 @@\n \t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n \t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n \t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n \t\t\t\tLIBRARY_SEARCH_PATHS = \"\\\"$(inherited)\\\"\";\n \t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n@@ -441,7 +441,7 @@\n \t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n \t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n \t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n \t\t\t\tLIBRARY_SEARCH_PATHS = \"\\\"$(inherited)\\\"\";\n \t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\nindex aef81ec589..a6e13e11ab 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\n@@ -18,6 +18,8 @@\n \n #import \n \n+static NSString *const kRNConcurrentRoot = @\"concurrentRoot\";\n+\n @interface AppDelegate () {\n RCTTurboModuleManager *_turboModuleManager;\n RCTSurfacePresenterBridgeAdapter *_bridgeAdapter;\n@@ -43,7 +45,8 @@\n bridge.surfacePresenter = _bridgeAdapter.surfacePresenter;\n #endif\n \n- UIView *rootView = [self.reactDelegate createRootViewWithBridge:bridge moduleName:@\"main\" initialProperties:nil];\n+ NSDictionary *initProps = [self prepareInitialProps];\n+ UIView *rootView = [self.reactDelegate createRootViewWithBridge:bridge moduleName:@\"main\" initialProperties:initProps];\n \n rootView.backgroundColor = [UIColor whiteColor];\n self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];\n@@ -63,6 +66,26 @@\n return @[];\n }\n \n+/// This method controls whether the `concurrentRoot`feature of React18 is turned on or off.\n+///\n+/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html\n+/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture).\n+/// @return: `true` if the `concurrentRoot` feture is enabled. Otherwise, it returns `false`.\n+- (BOOL)concurrentRootEnabled\n+{\n+ // Switch this bool to turn on and off the concurrent root\n+ return true;\n+}\n+\n+- (NSDictionary *)prepareInitialProps\n+{\n+ NSMutableDictionary *initProps = [NSMutableDictionary new];\n+#if RCT_NEW_ARCH_ENABLED\n+ initProps[kRNConcurrentRoot] = @([self concurrentRootEnabled]);\n+#endif\n+ return initProps;\n+}\n+\n - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n {\n #if DEBUG\ndiff --git a/templates/expo-template-bare-minimum/ios/Podfile b/templates/expo-template-bare-minimum/ios/Podfile\nindex 29797efaaa..91612acca9 100644\n--- a/templates/expo-template-bare-minimum/ios/Podfile\n+++ b/templates/expo-template-bare-minimum/ios/Podfile\n@@ -5,7 +5,7 @@ require File.join(File.dirname(`node --print \"require.resolve('@react-native-com\n require 'json'\n podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}\n \n-platform :ios, podfile_properties['ios.deploymentTarget'] || '12.0'\n+platform :ios, podfile_properties['ios.deploymentTarget'] || '12.4'\n install! 'cocoapods',\n :deterministic_uuids => false\n \n@@ -36,6 +36,17 @@ target 'HelloWorld' do\n post_install do |installer|\n react_native_post_install(installer)\n __apply_Xcode_12_5_M1_post_install_workaround(installer)\n+\n+ # This is necessary for Xcode 14, because it signs resource bundles by default\n+ # when building for devices.\n+ installer.target_installation_results.pod_target_installation_results\n+ .each do |pod_name, target_installation_result|\n+ target_installation_result.resource_bundle_targets.each do |resource_bundle_target|\n+ resource_bundle_target.build_configurations.each do |config|\n+ config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'\n+ end\n+ end\n+ end\n end\n \n post_integrate do |installer|\n@@ -45,5 +56,4 @@ target 'HelloWorld' do\n Pod::UI.warn e\n end\n end\n-\n end\ndiff --git a/templates/expo-template-bare-minimum/ios/gitignore b/templates/expo-template-bare-minimum/ios/gitignore\nindex 2b13519939..8beb344303 100644\n--- a/templates/expo-template-bare-minimum/ios/gitignore\n+++ b/templates/expo-template-bare-minimum/ios/gitignore\n@@ -21,6 +21,7 @@ DerivedData\n *.ipa\n *.xcuserstate\n project.xcworkspace\n+.xcode.env.local\n \n # Bundle artifacts\n *.jsbundle\ndiff --git a/templates/expo-template-bare-minimum/package.json b/templates/expo-template-bare-minimum/package.json\nindex 69e7eb9619..d5ca09a584 100644\n--- a/templates/expo-template-bare-minimum/package.json\n+++ b/templates/expo-template-bare-minimum/package.json\n@@ -1,7 +1,7 @@\n {\n \"name\": \"expo-template-bare-minimum\",\n \"description\": \"This bare project template includes a minimal setup for using unimodules with React Native.\",\n- \"version\": \"45.0.6\",\n+ \"version\": \"46.0.37\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"start\": \"expo start --dev-client\",\n@@ -10,13 +10,13 @@\n \"web\": \"expo start --web\"\n },\n \"dependencies\": {\n- \"expo\": \"~45.0.0\",\n- \"expo-splash-screen\": \"~0.15.1\",\n- \"expo-status-bar\": \"~1.3.0\",\n- \"react\": \"17.0.2\",\n- \"react-dom\": \"17.0.2\",\n- \"react-native\": \"0.68.2\",\n- \"react-native-web\": \"0.17.7\"\n+ \"expo\": \"~46.0.21\",\n+ \"expo-splash-screen\": \"~0.16.2\",\n+ \"expo-status-bar\": \"~1.4.0\",\n+ \"react\": \"18.0.0\",\n+ \"react-dom\": \"18.0.0\",\n+ \"react-native\": \"0.69.9\",\n+ \"react-native-web\": \"~0.18.7\"\n },\n \"devDependencies\": {\n \"@babel/core\": \"^7.12.9\"\n","46..46":"","45..47":"diff --git a/templates/expo-template-bare-minimum/android/app/build.gradle b/templates/expo-template-bare-minimum/android/app/build.gradle\nindex 346fb02564..648135611c 100644\n--- a/templates/expo-template-bare-minimum/android/app/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/app/build.gradle\n@@ -1,7 +1,6 @@\n apply plugin: \"com.android.application\"\n \n import com.android.build.OutputFile\n-import org.apache.tools.ant.taskdefs.condition.Os\n \n /**\n * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets\n@@ -80,15 +79,17 @@ import org.apache.tools.ant.taskdefs.condition.Os\n \n def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath()\n \n+def reactNativeRoot = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath()\n+\n project.ext.react = [\n entryFile: [\"node\", \"-e\", \"require('expo/scripts/resolveAppEntry')\", projectRoot, \"android\"].execute(null, rootDir).text.trim(),\n enableHermes: (findProperty('expo.jsEngine') ?: \"jsc\") == \"hermes\",\n- cliPath: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/cli.js\",\n- hermesCommand: new File([\"node\", \"--print\", \"require.resolve('hermes-engine/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/%OS-BIN%/hermesc\",\n- composeSourceMapsPath: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/scripts/compose-source-maps.js\",\n+ hermesCommand: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/sdks/hermesc/%OS-BIN%/hermesc\",\n+ cliPath: \"${reactNativeRoot}/cli.js\",\n+ composeSourceMapsPath: \"${reactNativeRoot}/scripts/compose-source-maps.js\",\n ]\n \n-apply from: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../react.gradle\")\n+apply from: new File(reactNativeRoot, \"react.gradle\")\n \n /**\n * Set this to true to create two separate APKs instead of one:\n@@ -149,26 +150,14 @@ android {\n buildConfigField \"boolean\", \"IS_NEW_ARCHITECTURE_ENABLED\", isNewArchitectureEnabled().toString()\n \n if (isNewArchitectureEnabled()) {\n- // We configure the NDK build only if you decide to opt-in for the New Architecture.\n+ // We configure the CMake build only if you decide to opt-in for the New Architecture.\n externalNativeBuild {\n- ndkBuild {\n- arguments \"APP_PLATFORM=android-21\",\n- \"APP_STL=c++_shared\",\n- \"NDK_TOOLCHAIN_VERSION=clang\",\n- \"GENERATED_SRC_DIR=$buildDir/generated/source\",\n- \"PROJECT_BUILD_DIR=$buildDir\",\n- \"REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid\",\n- \"REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build\"\n- cFlags \"-Wall\", \"-Werror\", \"-fexceptions\", \"-frtti\", \"-DWITH_INSPECTOR=1\"\n- cppFlags \"-std=c++17\"\n- // Make sure this target name is the same you specify inside the\n- // src/main/jni/Android.mk file for the `LOCAL_MODULE` variable.\n- targets \"helloworld_appmodules\"\n-\n- // Fix for windows limit on number of character in file paths and in command lines\n- if (Os.isFamily(Os.FAMILY_WINDOWS)) {\n- arguments \"NDK_APP_SHORT_COMMANDS=true\"\n- }\n+ cmake {\n+ arguments \"-DPROJECT_BUILD_DIR=$buildDir\",\n+ \"-DREACT_ANDROID_DIR=${reactNativeRoot}/ReactAndroid\",\n+ \"-DREACT_ANDROID_BUILD_DIR=${reactNativeRoot}/ReactAndroid/build\",\n+ \"-DNODE_MODULES_DIR=$rootDir/../node_modules\",\n+ \"-DANDROID_STL=c++_shared\"\n }\n }\n if (!enableSeparateBuildPerCPUArchitecture) {\n@@ -180,10 +169,10 @@ android {\n }\n \n if (isNewArchitectureEnabled()) {\n- // We configure the NDK build only if you decide to opt-in for the New Architecture.\n+ // We configure the CMake build only if you decide to opt-in for the New Architecture.\n externalNativeBuild {\n- ndkBuild {\n- path \"$projectDir/src/main/jni/Android.mk\"\n+ cmake {\n+ path \"$projectDir/src/main/jni/CMakeLists.txt\"\n }\n }\n def reactAndroidProjectDir = project(':ReactAndroid').projectDir\n@@ -205,15 +194,15 @@ android {\n preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)\n \n // Due to a bug inside AGP, we have to explicitly set a dependency\n- // between configureNdkBuild* tasks and the preBuild tasks.\n+ // between configureCMakeDebug* tasks and the preBuild tasks.\n // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732\n- configureNdkBuildRelease.dependsOn(preReleaseBuild)\n- configureNdkBuildDebug.dependsOn(preDebugBuild)\n+ configureCMakeRelWithDebInfo.dependsOn(preReleaseBuild)\n+ configureCMakeDebug.dependsOn(preDebugBuild)\n reactNativeArchitectures().each { architecture ->\n- tasks.findByName(\"configureNdkBuildDebug[${architecture}]\")?.configure {\n+ tasks.findByName(\"configureCMakeDebug[${architecture}]\")?.configure {\n dependsOn(\"preDebugBuild\")\n }\n- tasks.findByName(\"configureNdkBuildRelease[${architecture}]\")?.configure {\n+ tasks.findByName(\"configureCMakeRelWithDebInfo[${architecture}]\")?.configure {\n dependsOn(\"preReleaseBuild\")\n }\n }\n@@ -329,8 +318,10 @@ dependencies {\n }\n \n if (enableHermes) {\n- debugImplementation files(new File([\"node\", \"--print\", \"require.resolve('hermes-engine/package.json')\"].execute(null, rootDir).text.trim(), \"../android/hermes-debug.aar\"))\n- releaseImplementation files(new File([\"node\", \"--print\", \"require.resolve('hermes-engine/package.json')\"].execute(null, rootDir).text.trim(), \"../android/hermes-release.aar\"))\n+ //noinspection GradleDynamicVersion\n+ implementation(\"com.facebook.react:hermes-engine:+\") { // From node_modules\n+ exclude group:'com.facebook.fbjni'\n+ }\n } else {\n implementation jscFlavor\n }\n@@ -343,7 +334,11 @@ if (isNewArchitectureEnabled()) {\n configurations.all {\n resolutionStrategy.dependencySubstitution {\n substitute(module(\"com.facebook.react:react-native\"))\n- .using(project(\":ReactAndroid\")).because(\"On New Architecture we're building React Native from source\")\n+ .using(project(\":ReactAndroid\"))\n+ .because(\"On New Architecture we're building React Native from source\")\n+ substitute(module(\"com.facebook.react:hermes-engine\"))\n+ .using(project(\":ReactAndroid:hermes-engine\"))\n+ .because(\"On New Architecture we're building Hermes from source\")\n }\n }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\nindex 576e23db45..8e13797d9b 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n@@ -28,10 +28,15 @@ public class MainActivity extends ReactActivity {\n return \"main\";\n }\n \n+ /**\n+ * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n+ * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n+ * (Paper).\n+ */\n @Override\n protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this,\n- new ReactActivityDelegate(this, getMainComponentName())\n+ return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n+ new MainActivityDelegate(this, getMainComponentName())\n );\n }\n \n@@ -54,4 +59,25 @@ public class MainActivity extends ReactActivity {\n // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n super.invokeDefaultOnBackPressed();\n }\n+\n+ public static class MainActivityDelegate extends ReactActivityDelegate {\n+ public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n+ super(activity, mainComponentName);\n+ }\n+\n+ @Override\n+ protected ReactRootView createRootView() {\n+ ReactRootView reactRootView = new ReactRootView(getContext());\n+ // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n+ reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n+ return reactRootView;\n+ }\n+\n+ @Override\n+ protected boolean isConcurrentRootEnabled() {\n+ // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n+ // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n+ return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n+ }\n+ }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\nindex f555e36448..7665dd923f 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n@@ -18,6 +18,7 @@ import com.facebook.react.fabric.ComponentFactory;\n import com.facebook.react.fabric.CoreComponentsRegistry;\n import com.facebook.react.fabric.EmptyReactNativeConfig;\n import com.facebook.react.fabric.FabricJSIModuleProvider;\n+import com.facebook.react.fabric.ReactNativeConfig;\n import com.facebook.react.uimanager.ViewManagerRegistry;\n import com.helloworld.BuildConfig;\n import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n@@ -105,7 +106,7 @@ public class MainApplicationReactNativeHost extends ReactNativeHost {\n return new FabricJSIModuleProvider(\n reactApplicationContext,\n componentFactory,\n- new EmptyReactNativeConfig(),\n+ ReactNativeConfig.DEFAULT_CONFIG,\n viewManagerRegistry);\n }\n });\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex 0ae6366756..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,49 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source \n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_futures \\\n- libfolly_json \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt b/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\nnew file mode 100644\nindex 0000000000..d2cad3a326\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\n@@ -0,0 +1,7 @@\n+cmake_minimum_required(VERSION 3.13)\n+\n+# Define the library name here.\n+project(helloworld_appmodules)\n+\n+# This file includes all the necessary to let you build your application with the New Architecture.\n+include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\nindex 0ac23cc626..26162dd872 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n@@ -1,12 +1,13 @@\n #include \"MainApplicationModuleProvider.h\"\n \n+#include \n #include \n \n namespace facebook {\n namespace react {\n \n std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n+ const std::string &moduleName,\n const JavaTurboModule::InitParams ¶ms) {\n // Here you can provide your own module provider for TurboModules coming from\n // either your application or from external libraries. The approach to follow\n@@ -17,6 +18,13 @@ std::shared_ptr MainApplicationModuleProvider(\n // return module;\n // }\n // return rncore_ModuleProvider(moduleName, params);\n+\n+ // Module providers autolinked by RN CLI\n+ auto rncli_module = rncli_ModuleProvider(moduleName, params);\n+ if (rncli_module != nullptr) {\n+ return rncli_module;\n+ }\n+\n return rncore_ModuleProvider(moduleName, params);\n }\n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\nindex 0fa43fa69a..b38ccf53fd 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n@@ -9,7 +9,7 @@ namespace facebook {\n namespace react {\n \n std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n+ const std::string &moduleName,\n const JavaTurboModule::InitParams ¶ms);\n \n } // namespace react\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\nindex dbbdc3d132..5fd688c509 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n@@ -22,21 +22,21 @@ void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n \n std::shared_ptr\n MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n+ const std::string &name,\n+ const std::shared_ptr &jsInvoker) {\n // Not implemented yet: provide pure-C++ NativeModules here.\n return nullptr;\n }\n \n std::shared_ptr\n MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n+ const std::string &name,\n const JavaTurboModule::InitParams ¶ms) {\n return MainApplicationModuleProvider(name, params);\n }\n \n bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n+ const std::string &name) {\n return getTurboModule(name, nullptr) != nullptr ||\n getTurboModule(name, {.moduleName = name}) != nullptr;\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\nindex 25f27722d0..9ee38a81f6 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n@@ -21,17 +21,17 @@ class MainApplicationTurboModuleManagerDelegate\n static void registerNatives();\n \n std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n+ const std::string &name,\n+ const std::shared_ptr &jsInvoker) override;\n std::shared_ptr getTurboModule(\n- const std::string name,\n+ const std::string &name,\n const JavaTurboModule::InitParams ¶ms) override;\n \n /**\n * Test-only method. Allows user to verify whether a TurboModule can be\n * created by instances of this class.\n */\n- bool canCreateTurboModule(std::string name);\n+ bool canCreateTurboModule(const std::string &name);\n };\n \n } // namespace react\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\nindex 8f7edffd64..54f598a486 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n@@ -4,6 +4,7 @@\n #include \n #include \n #include \n+#include \n \n namespace facebook {\n namespace react {\n@@ -14,6 +15,9 @@ std::shared_ptr\n MainComponentsRegistry::sharedProviderRegistry() {\n auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n \n+ // Autolinked providers registered by RN CLI\n+ rncli_registerProviders(providerRegistry);\n+\n // Custom Fabric Components go here. You can register custom\n // components coming from your App or from 3rd party libraries here.\n //\ndiff --git a/templates/expo-template-bare-minimum/android/build.gradle b/templates/expo-template-bare-minimum/android/build.gradle\nindex fa77528908..8181b282cd 100644\n--- a/templates/expo-template-bare-minimum/android/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/build.gradle\n@@ -1,5 +1,3 @@\n-import org.apache.tools.ant.taskdefs.condition.Os\n-\n // Top-level build file where you can add configuration options common to all sub-projects/modules.\n \n buildscript {\n@@ -26,15 +24,15 @@ buildscript {\n mavenCentral()\n }\n dependencies {\n- classpath('com.android.tools.build:gradle:7.0.4')\n+ classpath('com.android.tools.build:gradle:7.2.1')\n classpath('com.facebook.react:react-native-gradle-plugin')\n- classpath('de.undercouch:gradle-download-task:4.1.2')\n+ classpath('de.undercouch:gradle-download-task:5.0.1')\n // NOTE: Do not place your application dependencies here; they belong\n // in the individual module build.gradle files\n }\n }\n \n-def REACT_NATIVE_VERSION = new File(['node', '--print',\"JSON.parse(require('fs').readFileSync(require.resolve('react-native/package.json'), 'utf-8')).version\"].execute(null, rootDir).text.trim())\n+def REACT_NATIVE_VERSION = new File(['node', '--print', \"JSON.parse(require('fs').readFileSync(require.resolve('react-native/package.json'), 'utf-8')).version\"].execute(null, rootDir).text.trim())\n \n allprojects {\n configurations.all {\ndiff --git a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar\nindex 7454180f2a..249e5832f0 100644\nBinary files a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar and b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar differ\ndiff --git a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\nindex 669386b870..8fad3f5a98 100644\n--- a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\n+++ b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\n@@ -1,5 +1,5 @@\n distributionBase=GRADLE_USER_HOME\n distributionPath=wrapper/dists\n-distributionUrl=https\\://services.gradle.org/distributions/gradle-7.3.3-all.zip\n+distributionUrl=https\\://services.gradle.org/distributions/gradle-7.5.1-all.zip\n zipStoreBase=GRADLE_USER_HOME\n zipStorePath=wrapper/dists\ndiff --git a/templates/expo-template-bare-minimum/android/gradlew b/templates/expo-template-bare-minimum/android/gradlew\nindex 1b6c787337..a69d9cb6c2 100755\n--- a/templates/expo-template-bare-minimum/android/gradlew\n+++ b/templates/expo-template-bare-minimum/android/gradlew\n@@ -205,6 +205,12 @@ set -- \\\n org.gradle.wrapper.GradleWrapperMain \\\n \"$@\"\n \n+# Stop when \"xargs\" is not available.\n+if ! command -v xargs >/dev/null 2>&1\n+then\n+ die \"xargs is not available\"\n+fi\n+\n # Use \"xargs\" to parse quoted args.\n #\n # With -n1 it outputs one arg per line, with the quotes and backslashes removed.\ndiff --git a/templates/expo-template-bare-minimum/android/gradlew.bat b/templates/expo-template-bare-minimum/android/gradlew.bat\nindex ac1b06f938..53a6b238d4 100644\n--- a/templates/expo-template-bare-minimum/android/gradlew.bat\n+++ b/templates/expo-template-bare-minimum/android/gradlew.bat\n@@ -14,7 +14,7 @@\n @rem limitations under the License.\r\n @rem\r\n \r\n-@if \"%DEBUG%\" == \"\" @echo off\r\n+@if \"%DEBUG%\"==\"\" @echo off\r\n @rem ##########################################################################\r\n @rem\r\n @rem Gradle startup script for Windows\r\n@@ -25,7 +25,7 @@\n if \"%OS%\"==\"Windows_NT\" setlocal\r\n \r\n set DIRNAME=%~dp0\r\n-if \"%DIRNAME%\" == \"\" set DIRNAME=.\r\n+if \"%DIRNAME%\"==\"\" set DIRNAME=.\r\n set APP_BASE_NAME=%~n0\r\n set APP_HOME=%DIRNAME%\r\n \r\n@@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome\n \r\n set JAVA_EXE=java.exe\r\n %JAVA_EXE% -version >NUL 2>&1\r\n-if \"%ERRORLEVEL%\" == \"0\" goto execute\r\n+if %ERRORLEVEL% equ 0 goto execute\r\n \r\n echo.\r\n echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\r\n@@ -75,13 +75,15 @@ set CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\n \r\n :end\r\n @rem End local scope for the variables with windows NT shell\r\n-if \"%ERRORLEVEL%\"==\"0\" goto mainEnd\r\n+if %ERRORLEVEL% equ 0 goto mainEnd\r\n \r\n :fail\r\n rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\r\n rem the _cmd.exe /c_ return code!\r\n-if not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\r\n-exit /b 1\r\n+set EXIT_CODE=%ERRORLEVEL%\r\n+if %EXIT_CODE% equ 0 set EXIT_CODE=1\r\n+if not \"\"==\"%GRADLE_EXIT_CONSOLE%\" exit %EXIT_CODE%\r\n+exit /b %EXIT_CODE%\r\n \r\n :mainEnd\r\n if \"%OS%\"==\"Windows_NT\" endlocal\r\ndiff --git a/templates/expo-template-bare-minimum/android/settings.gradle b/templates/expo-template-bare-minimum/android/settings.gradle\nindex fa543f0c69..b3332319f9 100644\n--- a/templates/expo-template-bare-minimum/android/settings.gradle\n+++ b/templates/expo-template-bare-minimum/android/settings.gradle\n@@ -12,4 +12,6 @@ includeBuild(new File([\"node\", \"--print\", \"require.resolve('react-native-gradle-\n if (settings.hasProperty(\"newArchEnabled\") && settings.newArchEnabled == \"true\") {\n include(\":ReactAndroid\")\n project(\":ReactAndroid\").projectDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../ReactAndroid\");\n+ include(\":ReactAndroid:hermes-engine\")\n+ project(\":ReactAndroid:hermes-engine\").projectDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../ReactAndroid/hermes-engine\");\n }\ndiff --git a/templates/expo-template-bare-minimum/gitignore b/templates/expo-template-bare-minimum/gitignore\nindex c8eb0f9a64..67397f65f9 100644\n--- a/templates/expo-template-bare-minimum/gitignore\n+++ b/templates/expo-template-bare-minimum/gitignore\n@@ -30,6 +30,7 @@ build/\n local.properties\n *.iml\n *.hprof\n+.cxx/\n \n # node.js\n #\ndiff --git a/templates/expo-template-bare-minimum/ios/.xcode.env b/templates/expo-template-bare-minimum/ios/.xcode.env\nnew file mode 100644\nindex 0000000000..3d5782c715\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/ios/.xcode.env\n@@ -0,0 +1,11 @@\n+# This `.xcode.env` file is versioned and is used to source the environment\n+# used when running script phases inside Xcode.\n+# To customize your local environment, you can create an `.xcode.env.local`\n+# file that is not versioned.\n+\n+# NODE_BINARY variable contains the PATH to the node executable.\n+#\n+# Customize the NODE_BINARY variable here.\n+# For example, to use nvm with brew, add the following line\n+# . \"$(brew --prefix nvm)/nvm.sh\" --no-use\n+export NODE_BINARY=$(command -v node)\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\nindex 2ac180e425..62a1be2493 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n@@ -214,7 +214,7 @@\n \t\t\t);\n \t\t\trunOnlyForDeploymentPostprocessing = 0;\n \t\t\tshellPath = /bin/sh;\n-\t\t\tshellScript = \"export NODE_BINARY=node\\n\\n# The project root by default is one level up from the ios directory\\nexport PROJECT_ROOT=\\\"$PROJECT_DIR\\\"/..\\n\\n`node --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\\\"`\\n\";\n+\t\t\tshellScript = \"if [[ -f \\\"$PODS_ROOT/../.xcode.env\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env\\\"\\nfi\\nif [[ -f \\\"$PODS_ROOT/../.xcode.env.local\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env.local\\\"\\nfi\\n\\n# The project root by default is one level up from the ios directory\\nexport PROJECT_ROOT=\\\"$PROJECT_DIR\\\"/..\\n\\nif [[ \\\"$CONFIGURATION\\\" = *Debug* ]]; then\\n export SKIP_BUNDLING=1\\nfi\\nif [[ -z \\\"$ENTRY_FILE\\\" ]]; then\\n # Set the entry JS file using the bundler's entry resolution.\\n export ENTRY_FILE=\\\"$(\\\"$NODE_BINARY\\\" -e \\\"require('expo/scripts/resolveAppEntry')\\\" $PROJECT_ROOT ios relative | tail -n 1)\\\"\\nfi\\n\\n`\\\"$NODE_BINARY\\\" --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\\\"`\\n\\n\";\n \t\t};\n \t\t08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = {\n \t\t\tisa = PBXShellScriptBuildPhase;\n@@ -276,7 +276,7 @@\n \t\t\t);\n \t\t\trunOnlyForDeploymentPostprocessing = 0;\n \t\t\tshellPath = /bin/sh;\n-\t\t\tshellScript = \"export RCT_METRO_PORT=\\\"${RCT_METRO_PORT:=8081}\\\"\\necho \\\"export RCT_METRO_PORT=${RCT_METRO_PORT}\\\" > `node --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/.packager.env'\\\"`\\nif [ -z \\\"${RCT_NO_LAUNCH_PACKAGER+xxx}\\\" ] ; then\\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\\n if ! curl -s \\\"http://localhost:${RCT_METRO_PORT}/status\\\" | grep -q \\\"packager-status:running\\\" ; then\\n echo \\\"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\\\"\\n exit 2\\n fi\\n else\\n open `node --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/launchPackager.command'\\\"` || echo \\\"Can't start packager automatically\\\"\\n fi\\nfi\\n\";\n+\t\t\tshellScript = \"if [[ -f \\\"$PODS_ROOT/../.xcode.env\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env\\\"\\nfi\\nif [[ -f \\\"$PODS_ROOT/../.xcode.env.local\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env.local\\\"\\nfi\\n\\nexport RCT_METRO_PORT=\\\"${RCT_METRO_PORT:=8081}\\\"\\necho \\\"export RCT_METRO_PORT=${RCT_METRO_PORT}\\\" > `$NODE_BINARY --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/.packager.env'\\\"`\\nif [ -z \\\"${RCT_NO_LAUNCH_PACKAGER+xxx}\\\" ] ; then\\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\\n if ! curl -s \\\"http://localhost:${RCT_METRO_PORT}/status\\\" | grep -q \\\"packager-status:running\\\" ; then\\n echo \\\"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\\\"\\n exit 2\\n fi\\n else\\n open `$NODE_BINARY --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/launchPackager.command'\\\"` || echo \\\"Can't start packager automatically\\\"\\n fi\\nfi\\n\";\n \t\t\tshowEnvVarsInLog = 0;\n \t\t};\n /* End PBXShellScriptBuildPhase section */\n@@ -308,7 +308,7 @@\n \t\t\t\t\t\"FB_SONARKIT_ENABLED=1\",\n \t\t\t\t);\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n@@ -331,7 +331,7 @@\n \t\t\t\tCLANG_ENABLE_MODULES = YES;\n \t\t\t\tCURRENT_PROJECT_VERSION = 1;\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n@@ -392,7 +392,7 @@\n \t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n \t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n \t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n \t\t\t\tLIBRARY_SEARCH_PATHS = \"\\\"$(inherited)\\\"\";\n \t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n@@ -441,7 +441,7 @@\n \t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n \t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n \t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n \t\t\t\tLIBRARY_SEARCH_PATHS = \"\\\"$(inherited)\\\"\";\n \t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\nindex aef81ec589..a6e13e11ab 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\n@@ -18,6 +18,8 @@\n \n #import \n \n+static NSString *const kRNConcurrentRoot = @\"concurrentRoot\";\n+\n @interface AppDelegate () {\n RCTTurboModuleManager *_turboModuleManager;\n RCTSurfacePresenterBridgeAdapter *_bridgeAdapter;\n@@ -43,7 +45,8 @@\n bridge.surfacePresenter = _bridgeAdapter.surfacePresenter;\n #endif\n \n- UIView *rootView = [self.reactDelegate createRootViewWithBridge:bridge moduleName:@\"main\" initialProperties:nil];\n+ NSDictionary *initProps = [self prepareInitialProps];\n+ UIView *rootView = [self.reactDelegate createRootViewWithBridge:bridge moduleName:@\"main\" initialProperties:initProps];\n \n rootView.backgroundColor = [UIColor whiteColor];\n self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];\n@@ -63,6 +66,26 @@\n return @[];\n }\n \n+/// This method controls whether the `concurrentRoot`feature of React18 is turned on or off.\n+///\n+/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html\n+/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture).\n+/// @return: `true` if the `concurrentRoot` feture is enabled. Otherwise, it returns `false`.\n+- (BOOL)concurrentRootEnabled\n+{\n+ // Switch this bool to turn on and off the concurrent root\n+ return true;\n+}\n+\n+- (NSDictionary *)prepareInitialProps\n+{\n+ NSMutableDictionary *initProps = [NSMutableDictionary new];\n+#if RCT_NEW_ARCH_ENABLED\n+ initProps[kRNConcurrentRoot] = @([self concurrentRootEnabled]);\n+#endif\n+ return initProps;\n+}\n+\n - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n {\n #if DEBUG\ndiff --git a/templates/expo-template-bare-minimum/ios/Podfile b/templates/expo-template-bare-minimum/ios/Podfile\nindex 29797efaaa..474455b90d 100644\n--- a/templates/expo-template-bare-minimum/ios/Podfile\n+++ b/templates/expo-template-bare-minimum/ios/Podfile\n@@ -5,7 +5,7 @@ require File.join(File.dirname(`node --print \"require.resolve('@react-native-com\n require 'json'\n podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}\n \n-platform :ios, podfile_properties['ios.deploymentTarget'] || '12.0'\n+platform :ios, podfile_properties['ios.deploymentTarget'] || '13.0'\n install! 'cocoapods',\n :deterministic_uuids => false\n \n@@ -20,22 +20,35 @@ target 'HelloWorld' do\n \n use_react_native!(\n :path => config[:reactNativePath],\n- :hermes_enabled => flags[:hermes_enabled] || podfile_properties['expo.jsEngine'] == 'hermes',\n+ :hermes_enabled => podfile_properties['expo.jsEngine'] == 'hermes',\n :fabric_enabled => flags[:fabric_enabled],\n # An absolute path to your application root.\n- :app_path => \"#{Dir.pwd}/..\"\n+ :app_path => \"#{Pod::Config.instance.installation_root}/..\",\n+ #\n+ # Uncomment to opt-in to using Flipper\n+ # Note that if you have use_frameworks! enabled, Flipper will not work\n+ # :flipper_configuration => !ENV['CI'] ? FlipperConfiguration.enabled : FlipperConfiguration.disabled,\n )\n \n- # Uncomment to opt-in to using Flipper\n- # Note that if you have use_frameworks! enabled, Flipper will not work\n- #\n- # if !ENV['CI']\n- # use_flipper!()\n- # end\n-\n post_install do |installer|\n- react_native_post_install(installer)\n+ react_native_post_install(\n+ installer,\n+ # Set `mac_catalyst_enabled` to `true` in order to apply patches\n+ # necessary for Mac Catalyst builds\n+ :mac_catalyst_enabled => false\n+ )\n __apply_Xcode_12_5_M1_post_install_workaround(installer)\n+\n+ # This is necessary for Xcode 14, because it signs resource bundles by default\n+ # when building for devices.\n+ installer.target_installation_results.pod_target_installation_results\n+ .each do |pod_name, target_installation_result|\n+ target_installation_result.resource_bundle_targets.each do |resource_bundle_target|\n+ resource_bundle_target.build_configurations.each do |config|\n+ config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'\n+ end\n+ end\n+ end\n end\n \n post_integrate do |installer|\n@@ -45,5 +58,4 @@ target 'HelloWorld' do\n Pod::UI.warn e\n end\n end\n-\n end\ndiff --git a/templates/expo-template-bare-minimum/ios/gitignore b/templates/expo-template-bare-minimum/ios/gitignore\nindex 2b13519939..8beb344303 100644\n--- a/templates/expo-template-bare-minimum/ios/gitignore\n+++ b/templates/expo-template-bare-minimum/ios/gitignore\n@@ -21,6 +21,7 @@ DerivedData\n *.ipa\n *.xcuserstate\n project.xcworkspace\n+.xcode.env.local\n \n # Bundle artifacts\n *.jsbundle\ndiff --git a/templates/expo-template-bare-minimum/package.json b/templates/expo-template-bare-minimum/package.json\nindex 69e7eb9619..a41fdc0d8d 100644\n--- a/templates/expo-template-bare-minimum/package.json\n+++ b/templates/expo-template-bare-minimum/package.json\n@@ -1,7 +1,7 @@\n {\n \"name\": \"expo-template-bare-minimum\",\n \"description\": \"This bare project template includes a minimal setup for using unimodules with React Native.\",\n- \"version\": \"45.0.6\",\n+ \"version\": \"47.0.26\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"start\": \"expo start --dev-client\",\n@@ -10,13 +10,11 @@\n \"web\": \"expo start --web\"\n },\n \"dependencies\": {\n- \"expo\": \"~45.0.0\",\n- \"expo-splash-screen\": \"~0.15.1\",\n- \"expo-status-bar\": \"~1.3.0\",\n- \"react\": \"17.0.2\",\n- \"react-dom\": \"17.0.2\",\n- \"react-native\": \"0.68.2\",\n- \"react-native-web\": \"0.17.7\"\n+ \"expo\": \"~47.0.14\",\n+ \"expo-splash-screen\": \"~0.17.5\",\n+ \"expo-status-bar\": \"~1.4.2\",\n+ \"react\": \"18.1.0\",\n+ \"react-native\": \"0.70.8\"\n },\n \"devDependencies\": {\n \"@babel/core\": \"^7.12.9\"\n","46..47":"diff --git a/templates/expo-template-bare-minimum/android/app/build.gradle b/templates/expo-template-bare-minimum/android/app/build.gradle\nindex f0293fe400..648135611c 100644\n--- a/templates/expo-template-bare-minimum/android/app/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/app/build.gradle\n@@ -1,7 +1,6 @@\n apply plugin: \"com.android.application\"\n \n import com.android.build.OutputFile\n-import org.apache.tools.ant.taskdefs.condition.Os\n \n /**\n * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets\n@@ -151,27 +150,14 @@ android {\n buildConfigField \"boolean\", \"IS_NEW_ARCHITECTURE_ENABLED\", isNewArchitectureEnabled().toString()\n \n if (isNewArchitectureEnabled()) {\n- // We configure the NDK build only if you decide to opt-in for the New Architecture.\n+ // We configure the CMake build only if you decide to opt-in for the New Architecture.\n externalNativeBuild {\n- ndkBuild {\n- arguments \"APP_PLATFORM=android-21\",\n- \"APP_STL=c++_shared\",\n- \"NDK_TOOLCHAIN_VERSION=clang\",\n- \"GENERATED_SRC_DIR=$buildDir/generated/source\",\n- \"PROJECT_BUILD_DIR=$buildDir\",\n- \"REACT_ANDROID_DIR=${reactNativeRoot}/ReactAndroid\",\n- \"REACT_ANDROID_BUILD_DIR=${reactNativeRoot}/ReactAndroid/build\",\n- \"NODE_MODULES_DIR=$rootDir/../node_modules\"\n- cFlags \"-Wall\", \"-Werror\", \"-fexceptions\", \"-frtti\", \"-DWITH_INSPECTOR=1\"\n- cppFlags \"-std=c++17\"\n- // Make sure this target name is the same you specify inside the\n- // src/main/jni/Android.mk file for the `LOCAL_MODULE` variable.\n- targets \"helloworld_appmodules\"\n-\n- // Fix for windows limit on number of character in file paths and in command lines\n- if (Os.isFamily(Os.FAMILY_WINDOWS)) {\n- arguments \"NDK_APP_SHORT_COMMANDS=true\"\n- }\n+ cmake {\n+ arguments \"-DPROJECT_BUILD_DIR=$buildDir\",\n+ \"-DREACT_ANDROID_DIR=${reactNativeRoot}/ReactAndroid\",\n+ \"-DREACT_ANDROID_BUILD_DIR=${reactNativeRoot}/ReactAndroid/build\",\n+ \"-DNODE_MODULES_DIR=$rootDir/../node_modules\",\n+ \"-DANDROID_STL=c++_shared\"\n }\n }\n if (!enableSeparateBuildPerCPUArchitecture) {\n@@ -183,10 +169,10 @@ android {\n }\n \n if (isNewArchitectureEnabled()) {\n- // We configure the NDK build only if you decide to opt-in for the New Architecture.\n+ // We configure the CMake build only if you decide to opt-in for the New Architecture.\n externalNativeBuild {\n- ndkBuild {\n- path \"$projectDir/src/main/jni/Android.mk\"\n+ cmake {\n+ path \"$projectDir/src/main/jni/CMakeLists.txt\"\n }\n }\n def reactAndroidProjectDir = project(':ReactAndroid').projectDir\n@@ -208,15 +194,15 @@ android {\n preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)\n \n // Due to a bug inside AGP, we have to explicitly set a dependency\n- // between configureNdkBuild* tasks and the preBuild tasks.\n+ // between configureCMakeDebug* tasks and the preBuild tasks.\n // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732\n- configureNdkBuildRelease.dependsOn(preReleaseBuild)\n- configureNdkBuildDebug.dependsOn(preDebugBuild)\n+ configureCMakeRelWithDebInfo.dependsOn(preReleaseBuild)\n+ configureCMakeDebug.dependsOn(preDebugBuild)\n reactNativeArchitectures().each { architecture ->\n- tasks.findByName(\"configureNdkBuildDebug[${architecture}]\")?.configure {\n+ tasks.findByName(\"configureCMakeDebug[${architecture}]\")?.configure {\n dependsOn(\"preDebugBuild\")\n }\n- tasks.findByName(\"configureNdkBuildRelease[${architecture}]\")?.configure {\n+ tasks.findByName(\"configureCMakeRelWithDebInfo[${architecture}]\")?.configure {\n dependsOn(\"preReleaseBuild\")\n }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex cda1391225..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source\n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_runtime \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt b/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\nnew file mode 100644\nindex 0000000000..d2cad3a326\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\n@@ -0,0 +1,7 @@\n+cmake_minimum_required(VERSION 3.13)\n+\n+# Define the library name here.\n+project(helloworld_appmodules)\n+\n+# This file includes all the necessary to let you build your application with the New Architecture.\n+include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\nindex 0ac23cc626..26162dd872 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n@@ -1,12 +1,13 @@\n #include \"MainApplicationModuleProvider.h\"\n \n+#include \n #include \n \n namespace facebook {\n namespace react {\n \n std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n+ const std::string &moduleName,\n const JavaTurboModule::InitParams ¶ms) {\n // Here you can provide your own module provider for TurboModules coming from\n // either your application or from external libraries. The approach to follow\n@@ -17,6 +18,13 @@ std::shared_ptr MainApplicationModuleProvider(\n // return module;\n // }\n // return rncore_ModuleProvider(moduleName, params);\n+\n+ // Module providers autolinked by RN CLI\n+ auto rncli_module = rncli_ModuleProvider(moduleName, params);\n+ if (rncli_module != nullptr) {\n+ return rncli_module;\n+ }\n+\n return rncore_ModuleProvider(moduleName, params);\n }\n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\nindex 0fa43fa69a..b38ccf53fd 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n@@ -9,7 +9,7 @@ namespace facebook {\n namespace react {\n \n std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n+ const std::string &moduleName,\n const JavaTurboModule::InitParams ¶ms);\n \n } // namespace react\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\nindex dbbdc3d132..5fd688c509 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n@@ -22,21 +22,21 @@ void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n \n std::shared_ptr\n MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n+ const std::string &name,\n+ const std::shared_ptr &jsInvoker) {\n // Not implemented yet: provide pure-C++ NativeModules here.\n return nullptr;\n }\n \n std::shared_ptr\n MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n+ const std::string &name,\n const JavaTurboModule::InitParams ¶ms) {\n return MainApplicationModuleProvider(name, params);\n }\n \n bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n+ const std::string &name) {\n return getTurboModule(name, nullptr) != nullptr ||\n getTurboModule(name, {.moduleName = name}) != nullptr;\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\nindex 25f27722d0..9ee38a81f6 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n@@ -21,17 +21,17 @@ class MainApplicationTurboModuleManagerDelegate\n static void registerNatives();\n \n std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n+ const std::string &name,\n+ const std::shared_ptr &jsInvoker) override;\n std::shared_ptr getTurboModule(\n- const std::string name,\n+ const std::string &name,\n const JavaTurboModule::InitParams ¶ms) override;\n \n /**\n * Test-only method. Allows user to verify whether a TurboModule can be\n * created by instances of this class.\n */\n- bool canCreateTurboModule(std::string name);\n+ bool canCreateTurboModule(const std::string &name);\n };\n \n } // namespace react\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\nindex 8f7edffd64..54f598a486 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n@@ -4,6 +4,7 @@\n #include \n #include \n #include \n+#include \n \n namespace facebook {\n namespace react {\n@@ -14,6 +15,9 @@ std::shared_ptr\n MainComponentsRegistry::sharedProviderRegistry() {\n auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n \n+ // Autolinked providers registered by RN CLI\n+ rncli_registerProviders(providerRegistry);\n+\n // Custom Fabric Components go here. You can register custom\n // components coming from your App or from 3rd party libraries here.\n //\ndiff --git a/templates/expo-template-bare-minimum/android/build.gradle b/templates/expo-template-bare-minimum/android/build.gradle\nindex f259b31a11..8181b282cd 100644\n--- a/templates/expo-template-bare-minimum/android/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/build.gradle\n@@ -1,6 +1,5 @@\n-import org.apache.tools.ant.taskdefs.condition.Os\n-\n // Top-level build file where you can add configuration options common to all sub-projects/modules.\n+\n buildscript {\n ext {\n buildToolsVersion = findProperty('android.buildToolsVersion') ?: '31.0.0'\n@@ -25,7 +24,7 @@ buildscript {\n mavenCentral()\n }\n dependencies {\n- classpath('com.android.tools.build:gradle:7.1.1')\n+ classpath('com.android.tools.build:gradle:7.2.1')\n classpath('com.facebook.react:react-native-gradle-plugin')\n classpath('de.undercouch:gradle-download-task:5.0.1')\n // NOTE: Do not place your application dependencies here; they belong\n@@ -33,7 +32,7 @@ buildscript {\n }\n }\n \n-def REACT_NATIVE_VERSION = new File(['node', '--print',\"JSON.parse(require('fs').readFileSync(require.resolve('react-native/package.json'), 'utf-8')).version\"].execute(null, rootDir).text.trim())\n+def REACT_NATIVE_VERSION = new File(['node', '--print', \"JSON.parse(require('fs').readFileSync(require.resolve('react-native/package.json'), 'utf-8')).version\"].execute(null, rootDir).text.trim())\n \n allprojects {\n configurations.all {\n@@ -64,9 +63,3 @@ allprojects {\n maven { url 'https://www.jitpack.io' }\n }\n }\n-\n-configurations.all {\n- resolutionStrategy {\n- force 'com.facebook.react:react-native:0.69.6'\n- }\n-}\n\\ No newline at end of file\ndiff --git a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar\nindex 7454180f2a..249e5832f0 100644\nBinary files a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar and b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar differ\ndiff --git a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\nindex 669386b870..8fad3f5a98 100644\n--- a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\n+++ b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\n@@ -1,5 +1,5 @@\n distributionBase=GRADLE_USER_HOME\n distributionPath=wrapper/dists\n-distributionUrl=https\\://services.gradle.org/distributions/gradle-7.3.3-all.zip\n+distributionUrl=https\\://services.gradle.org/distributions/gradle-7.5.1-all.zip\n zipStoreBase=GRADLE_USER_HOME\n zipStorePath=wrapper/dists\ndiff --git a/templates/expo-template-bare-minimum/android/gradlew b/templates/expo-template-bare-minimum/android/gradlew\nindex 1b6c787337..a69d9cb6c2 100755\n--- a/templates/expo-template-bare-minimum/android/gradlew\n+++ b/templates/expo-template-bare-minimum/android/gradlew\n@@ -205,6 +205,12 @@ set -- \\\n org.gradle.wrapper.GradleWrapperMain \\\n \"$@\"\n \n+# Stop when \"xargs\" is not available.\n+if ! command -v xargs >/dev/null 2>&1\n+then\n+ die \"xargs is not available\"\n+fi\n+\n # Use \"xargs\" to parse quoted args.\n #\n # With -n1 it outputs one arg per line, with the quotes and backslashes removed.\ndiff --git a/templates/expo-template-bare-minimum/android/gradlew.bat b/templates/expo-template-bare-minimum/android/gradlew.bat\nindex ac1b06f938..53a6b238d4 100644\n--- a/templates/expo-template-bare-minimum/android/gradlew.bat\n+++ b/templates/expo-template-bare-minimum/android/gradlew.bat\n@@ -14,7 +14,7 @@\n @rem limitations under the License.\r\n @rem\r\n \r\n-@if \"%DEBUG%\" == \"\" @echo off\r\n+@if \"%DEBUG%\"==\"\" @echo off\r\n @rem ##########################################################################\r\n @rem\r\n @rem Gradle startup script for Windows\r\n@@ -25,7 +25,7 @@\n if \"%OS%\"==\"Windows_NT\" setlocal\r\n \r\n set DIRNAME=%~dp0\r\n-if \"%DIRNAME%\" == \"\" set DIRNAME=.\r\n+if \"%DIRNAME%\"==\"\" set DIRNAME=.\r\n set APP_BASE_NAME=%~n0\r\n set APP_HOME=%DIRNAME%\r\n \r\n@@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome\n \r\n set JAVA_EXE=java.exe\r\n %JAVA_EXE% -version >NUL 2>&1\r\n-if \"%ERRORLEVEL%\" == \"0\" goto execute\r\n+if %ERRORLEVEL% equ 0 goto execute\r\n \r\n echo.\r\n echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\r\n@@ -75,13 +75,15 @@ set CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\n \r\n :end\r\n @rem End local scope for the variables with windows NT shell\r\n-if \"%ERRORLEVEL%\"==\"0\" goto mainEnd\r\n+if %ERRORLEVEL% equ 0 goto mainEnd\r\n \r\n :fail\r\n rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\r\n rem the _cmd.exe /c_ return code!\r\n-if not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\r\n-exit /b 1\r\n+set EXIT_CODE=%ERRORLEVEL%\r\n+if %EXIT_CODE% equ 0 set EXIT_CODE=1\r\n+if not \"\"==\"%GRADLE_EXIT_CONSOLE%\" exit %EXIT_CODE%\r\n+exit /b %EXIT_CODE%\r\n \r\n :mainEnd\r\n if \"%OS%\"==\"Windows_NT\" endlocal\r\ndiff --git a/templates/expo-template-bare-minimum/gitignore b/templates/expo-template-bare-minimum/gitignore\nindex c8eb0f9a64..67397f65f9 100644\n--- a/templates/expo-template-bare-minimum/gitignore\n+++ b/templates/expo-template-bare-minimum/gitignore\n@@ -30,6 +30,7 @@ build/\n local.properties\n *.iml\n *.hprof\n+.cxx/\n \n # node.js\n #\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\nindex a4a049f05d..62a1be2493 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n@@ -214,7 +214,7 @@\n \t\t\t);\n \t\t\trunOnlyForDeploymentPostprocessing = 0;\n \t\t\tshellPath = /bin/sh;\n-\t\t\tshellScript = \"if [[ -f \\\"$PODS_ROOT/../.xcode.env\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env\\\"\\nfi\\nif [[ -f \\\"$PODS_ROOT/../.xcode.env.local\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env.local\\\"\\nfi\\n\\n# The project root by default is one level up from the ios directory\\nexport PROJECT_ROOT=\\\"$PROJECT_DIR\\\"/..\\n\\nif [[ \\\"$CONFIGURATION\\\" = *Debug* ]]; then\\n export SKIP_BUNDLING=1\\nfi\\n`\\\"$NODE_BINARY\\\" --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\\\"`\\n\\n\";\n+\t\t\tshellScript = \"if [[ -f \\\"$PODS_ROOT/../.xcode.env\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env\\\"\\nfi\\nif [[ -f \\\"$PODS_ROOT/../.xcode.env.local\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env.local\\\"\\nfi\\n\\n# The project root by default is one level up from the ios directory\\nexport PROJECT_ROOT=\\\"$PROJECT_DIR\\\"/..\\n\\nif [[ \\\"$CONFIGURATION\\\" = *Debug* ]]; then\\n export SKIP_BUNDLING=1\\nfi\\nif [[ -z \\\"$ENTRY_FILE\\\" ]]; then\\n # Set the entry JS file using the bundler's entry resolution.\\n export ENTRY_FILE=\\\"$(\\\"$NODE_BINARY\\\" -e \\\"require('expo/scripts/resolveAppEntry')\\\" $PROJECT_ROOT ios relative | tail -n 1)\\\"\\nfi\\n\\n`\\\"$NODE_BINARY\\\" --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\\\"`\\n\\n\";\n \t\t};\n \t\t08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = {\n \t\t\tisa = PBXShellScriptBuildPhase;\n@@ -308,7 +308,7 @@\n \t\t\t\t\t\"FB_SONARKIT_ENABLED=1\",\n \t\t\t\t);\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n@@ -331,7 +331,7 @@\n \t\t\t\tCLANG_ENABLE_MODULES = YES;\n \t\t\t\tCURRENT_PROJECT_VERSION = 1;\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n@@ -392,7 +392,7 @@\n \t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n \t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n \t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n \t\t\t\tLIBRARY_SEARCH_PATHS = \"\\\"$(inherited)\\\"\";\n \t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n@@ -441,7 +441,7 @@\n \t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n \t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n \t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n \t\t\t\tLIBRARY_SEARCH_PATHS = \"\\\"$(inherited)\\\"\";\n \t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\ndiff --git a/templates/expo-template-bare-minimum/ios/Podfile b/templates/expo-template-bare-minimum/ios/Podfile\nindex 91612acca9..474455b90d 100644\n--- a/templates/expo-template-bare-minimum/ios/Podfile\n+++ b/templates/expo-template-bare-minimum/ios/Podfile\n@@ -5,7 +5,7 @@ require File.join(File.dirname(`node --print \"require.resolve('@react-native-com\n require 'json'\n podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}\n \n-platform :ios, podfile_properties['ios.deploymentTarget'] || '12.4'\n+platform :ios, podfile_properties['ios.deploymentTarget'] || '13.0'\n install! 'cocoapods',\n :deterministic_uuids => false\n \n@@ -20,21 +20,23 @@ target 'HelloWorld' do\n \n use_react_native!(\n :path => config[:reactNativePath],\n- :hermes_enabled => flags[:hermes_enabled] || podfile_properties['expo.jsEngine'] == 'hermes',\n+ :hermes_enabled => podfile_properties['expo.jsEngine'] == 'hermes',\n :fabric_enabled => flags[:fabric_enabled],\n # An absolute path to your application root.\n- :app_path => \"#{Dir.pwd}/..\"\n+ :app_path => \"#{Pod::Config.instance.installation_root}/..\",\n+ #\n+ # Uncomment to opt-in to using Flipper\n+ # Note that if you have use_frameworks! enabled, Flipper will not work\n+ # :flipper_configuration => !ENV['CI'] ? FlipperConfiguration.enabled : FlipperConfiguration.disabled,\n )\n \n- # Uncomment to opt-in to using Flipper\n- # Note that if you have use_frameworks! enabled, Flipper will not work\n- #\n- # if !ENV['CI']\n- # use_flipper!()\n- # end\n-\n post_install do |installer|\n- react_native_post_install(installer)\n+ react_native_post_install(\n+ installer,\n+ # Set `mac_catalyst_enabled` to `true` in order to apply patches\n+ # necessary for Mac Catalyst builds\n+ :mac_catalyst_enabled => false\n+ )\n __apply_Xcode_12_5_M1_post_install_workaround(installer)\n \n # This is necessary for Xcode 14, because it signs resource bundles by default\ndiff --git a/templates/expo-template-bare-minimum/package.json b/templates/expo-template-bare-minimum/package.json\nindex d5ca09a584..a41fdc0d8d 100644\n--- a/templates/expo-template-bare-minimum/package.json\n+++ b/templates/expo-template-bare-minimum/package.json\n@@ -1,7 +1,7 @@\n {\n \"name\": \"expo-template-bare-minimum\",\n \"description\": \"This bare project template includes a minimal setup for using unimodules with React Native.\",\n- \"version\": \"46.0.37\",\n+ \"version\": \"47.0.26\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"start\": \"expo start --dev-client\",\n@@ -10,13 +10,11 @@\n \"web\": \"expo start --web\"\n },\n \"dependencies\": {\n- \"expo\": \"~46.0.21\",\n- \"expo-splash-screen\": \"~0.16.2\",\n- \"expo-status-bar\": \"~1.4.0\",\n- \"react\": \"18.0.0\",\n- \"react-dom\": \"18.0.0\",\n- \"react-native\": \"0.69.9\",\n- \"react-native-web\": \"~0.18.7\"\n+ \"expo\": \"~47.0.14\",\n+ \"expo-splash-screen\": \"~0.17.5\",\n+ \"expo-status-bar\": \"~1.4.2\",\n+ \"react\": \"18.1.0\",\n+ \"react-native\": \"0.70.8\"\n },\n \"devDependencies\": {\n \"@babel/core\": \"^7.12.9\"\n","47..47":"","45..48":"diff --git a/templates/expo-template-bare-minimum/.buckconfig b/templates/expo-template-bare-minimum/.buckconfig\ndeleted file mode 100644\nindex 934256cb29..0000000000\n--- a/templates/expo-template-bare-minimum/.buckconfig\n+++ /dev/null\n@@ -1,6 +0,0 @@\n-\n-[android]\n- target = Google Inc.:Google APIs:23\n-\n-[maven_repositories]\n- central = https://repo1.maven.org/maven2\ndiff --git a/templates/expo-template-bare-minimum/.npmignore b/templates/expo-template-bare-minimum/.npmignore\nindex 35490b6612..4e6ce00391 100644\n--- a/templates/expo-template-bare-minimum/.npmignore\n+++ b/templates/expo-template-bare-minimum/.npmignore\n@@ -20,3 +20,4 @@ ios/Pods\n android/.build\n android/app/build\n android/.gradle\n+ios/.xcode.env.local\ndiff --git a/templates/expo-template-bare-minimum/android/app/BUCK b/templates/expo-template-bare-minimum/android/app/BUCK\ndeleted file mode 100644\nindex 0e77904834..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/BUCK\n+++ /dev/null\n@@ -1,55 +0,0 @@\n-# To learn about Buck see [Docs](https://buckbuild.com/).\n-# To run your application with Buck:\n-# - install Buck\n-# - `npm start` - to start the packager\n-# - `cd android`\n-# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname \"CN=Android Debug,O=Android,C=US\"`\n-# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck\n-# - `buck install -r android/app` - compile, install and run application\n-#\n-\n-load(\":build_defs.bzl\", \"create_aar_targets\", \"create_jar_targets\")\n-\n-lib_deps = []\n-\n-create_aar_targets(glob([\"libs/*.aar\"]))\n-\n-create_jar_targets(glob([\"libs/*.jar\"]))\n-\n-android_library(\n- name = \"all-libs\",\n- exported_deps = lib_deps,\n-)\n-\n-android_library(\n- name = \"app-code\",\n- srcs = glob([\n- \"src/main/java/**/*.java\",\n- ]),\n- deps = [\n- \":all-libs\",\n- \":build_config\",\n- \":res\",\n- ],\n-)\n-\n-android_build_config(\n- name = \"build_config\",\n- package = \"com.helloworld\",\n-)\n-\n-android_resource(\n- name = \"res\",\n- package = \"com.helloworld\",\n- res = \"src/main/res\",\n-)\n-\n-android_binary(\n- name = \"app\",\n- keystore = \"//android/keystores:debug\",\n- manifest = \"src/main/AndroidManifest.xml\",\n- package_type = \"debug\",\n- deps = [\n- \":app-code\",\n- ],\n-)\ndiff --git a/templates/expo-template-bare-minimum/android/app/build.gradle b/templates/expo-template-bare-minimum/android/app/build.gradle\nindex 346fb02564..189390e7e3 100644\n--- a/templates/expo-template-bare-minimum/android/app/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/app/build.gradle\n@@ -1,134 +1,107 @@\n apply plugin: \"com.android.application\"\n+apply plugin: \"com.facebook.react\"\n \n import com.android.build.OutputFile\n-import org.apache.tools.ant.taskdefs.condition.Os\n-\n-/**\n- * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets\n- * and bundleReleaseJsAndAssets).\n- * These basically call `react-native bundle` with the correct arguments during the Android build\n- * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the\n- * bundle directly from the development server. Below you can see all the possible configurations\n- * and their defaults. If you decide to add a configuration block, make sure to add it before the\n- * `apply from: \"../../node_modules/react-native/react.gradle\"` line.\n- *\n- * project.ext.react = [\n- * // the name of the generated asset file containing your JS bundle\n- * bundleAssetName: \"index.android.bundle\",\n- *\n- * // the entry file for bundle generation. If none specified and\n- * // \"index.android.js\" exists, it will be used. Otherwise \"index.js\" is\n- * // default. Can be overridden with ENTRY_FILE environment variable.\n- * entryFile: \"index.android.js\",\n- *\n- * // https://reactnative.dev/docs/performance#enable-the-ram-format\n- * bundleCommand: \"ram-bundle\",\n- *\n- * // whether to bundle JS and assets in debug mode\n- * bundleInDebug: false,\n- *\n- * // whether to bundle JS and assets in release mode\n- * bundleInRelease: true,\n- *\n- * // whether to bundle JS and assets in another build variant (if configured).\n- * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants\n- * // The configuration property can be in the following formats\n- * // 'bundleIn${productFlavor}${buildType}'\n- * // 'bundleIn${buildType}'\n- * // bundleInFreeDebug: true,\n- * // bundleInPaidRelease: true,\n- * // bundleInBeta: true,\n- *\n- * // whether to disable dev mode in custom build variants (by default only disabled in release)\n- * // for example: to disable dev mode in the staging build type (if configured)\n- * devDisabledInStaging: true,\n- * // The configuration property can be in the following formats\n- * // 'devDisabledIn${productFlavor}${buildType}'\n- * // 'devDisabledIn${buildType}'\n- *\n- * // the root of your project, i.e. where \"package.json\" lives\n- * root: \"../../\",\n- *\n- * // where to put the JS bundle asset in debug mode\n- * jsBundleDirDebug: \"$buildDir/intermediates/assets/debug\",\n- *\n- * // where to put the JS bundle asset in release mode\n- * jsBundleDirRelease: \"$buildDir/intermediates/assets/release\",\n- *\n- * // where to put drawable resources / React Native assets, e.g. the ones you use via\n- * // require('./image.png')), in debug mode\n- * resourcesDirDebug: \"$buildDir/intermediates/res/merged/debug\",\n- *\n- * // where to put drawable resources / React Native assets, e.g. the ones you use via\n- * // require('./image.png')), in release mode\n- * resourcesDirRelease: \"$buildDir/intermediates/res/merged/release\",\n- *\n- * // by default the gradle tasks are skipped if none of the JS files or assets change; this means\n- * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to\n- * // date; if you have any other folders that you want to ignore for performance reasons (gradle\n- * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/\n- * // for example, you might want to remove it from here.\n- * inputExcludes: [\"android/**\", \"ios/**\"],\n- *\n- * // override which node gets called and with what additional arguments\n- * nodeExecutableAndArgs: [\"node\"],\n- *\n- * // supply additional arguments to the packager\n- * extraPackagerArgs: []\n- * ]\n- */\n \n def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath()\n+def expoDebuggableVariants = ['debug']\n+// Override `debuggableVariants` for expo-updates debugging\n+if (System.getenv('EX_UPDATES_NATIVE_DEBUG') == \"1\") {\n+ react {\n+ expoDebuggableVariants = []\n+ }\n+}\n \n-project.ext.react = [\n- entryFile: [\"node\", \"-e\", \"require('expo/scripts/resolveAppEntry')\", projectRoot, \"android\"].execute(null, rootDir).text.trim(),\n- enableHermes: (findProperty('expo.jsEngine') ?: \"jsc\") == \"hermes\",\n- cliPath: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/cli.js\",\n- hermesCommand: new File([\"node\", \"--print\", \"require.resolve('hermes-engine/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/%OS-BIN%/hermesc\",\n- composeSourceMapsPath: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/scripts/compose-source-maps.js\",\n-]\n \n-apply from: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../react.gradle\")\n+/**\n+ * This is the configuration block to customize your React Native Android app.\n+ * By default you don't need to apply any configuration, just uncomment the lines you need.\n+ */\n+react {\n+ entryFile = file([\"node\", \"-e\", \"require('expo/scripts/resolveAppEntry')\", projectRoot, \"android\", \"absolute\"].execute(null, rootDir).text.trim())\n+ reactNativeDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()\n+ hermesCommand = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/sdks/hermesc/%OS-BIN%/hermesc\"\n+ debuggableVariants = expoDebuggableVariants\n+\n+ /* Folders */\n+ // The root of your project, i.e. where \"package.json\" lives. Default is '..'\n+ // root = file(\"../\")\n+ // The folder where the react-native NPM package is. Default is ../node_modules/react-native\n+ // reactNativeDir = file(\"../node_modules/react-native\")\n+ // The folder where the react-native Codegen package is. Default is ../node_modules/react-native-codegen\n+ // codegenDir = file(\"../node_modules/react-native-codegen\")\n+ // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js\n+ // cliFile = file(\"../node_modules/react-native/cli.js\")\n+\n+ /* Variants */\n+ // The list of variants to that are debuggable. For those we're going to\n+ // skip the bundling of the JS bundle and the assets. By default is just 'debug'.\n+ // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.\n+ // debuggableVariants = [\"liteDebug\", \"prodDebug\"]\n+\n+ /* Bundling */\n+ // A list containing the node command and its flags. Default is just 'node'.\n+ // nodeExecutableAndArgs = [\"node\"]\n+ //\n+ // The command to run when bundling. By default is 'bundle'\n+ // bundleCommand = \"ram-bundle\"\n+ //\n+ // The path to the CLI configuration file. Default is empty.\n+ // bundleConfig = file(../rn-cli.config.js)\n+ //\n+ // The name of the generated asset file containing your JS bundle\n+ // bundleAssetName = \"MyApplication.android.bundle\"\n+ //\n+ // The entry file for bundle generation. Default is 'index.android.js' or 'index.js'\n+ // entryFile = file(\"../js/MyApplication.android.js\")\n+ //\n+ // A list of extra flags to pass to the 'bundle' commands.\n+ // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle\n+ // extraPackagerArgs = []\n+\n+ /* Hermes Commands */\n+ // The hermes compiler command to run. By default it is 'hermesc'\n+ // hermesCommand = \"$rootDir/my-custom-hermesc/bin/hermesc\"\n+ //\n+ // The list of flags to pass to the Hermes compiler. By default is \"-O\", \"-output-source-map\"\n+ // hermesFlags = [\"-O\", \"-output-source-map\"]\n+}\n+\n+// Override `hermesEnabled` by `expo.jsEngine`\n+ext {\n+ hermesEnabled = (findProperty('expo.jsEngine') ?: \"hermes\") == \"hermes\"\n+}\n \n /**\n- * Set this to true to create two separate APKs instead of one:\n- * - An APK that only works on ARM devices\n- * - An APK that only works on x86 devices\n- * The advantage is the size of the APK is reduced by about 4MB.\n- * Upload all the APKs to the Play Store and people will download\n- * the correct one based on the CPU architecture of their device.\n+ * Set this to true to create four separate APKs instead of one,\n+ * one for each native architecture. This is useful if you don't\n+ * use App Bundles (https://developer.android.com/guide/app-bundle/)\n+ * and want to have separate APKs to upload to the Play Store.\n */\n def enableSeparateBuildPerCPUArchitecture = false\n \n /**\n- * Run Proguard to shrink the Java bytecode in release builds.\n+ * Set this to true to Run Proguard on Release builds to minify the Java bytecode.\n */\n def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInReleaseBuilds') ?: false).toBoolean()\n \n /**\n- * The preferred build flavor of JavaScriptCore.\n+ * The preferred build flavor of JavaScriptCore (JSC)\n *\n * For example, to use the international variant, you can use:\n * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`\n *\n * The international variant includes ICU i18n library and necessary data\n * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that\n- * give correct results when using with locales other than en-US. Note that\n+ * give correct results when using with locales other than en-US. Note that\n * this variant is about 6MiB larger per architecture than default.\n */\n def jscFlavor = 'org.webkit:android-jsc:+'\n \n /**\n- * Whether to enable the Hermes VM.\n- *\n- * This should be set on project.ext.react and that value will be read here. If it is not set\n- * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode\n- * and the benefits of using Hermes will therefore be sharply reduced.\n- */\n-def enableHermes = project.ext.react.get(\"enableHermes\", false);\n-\n-/**\n- * Architectures to build native code for.\n+ * Private function to get the list of Native Architectures you want to build.\n+ * This reads the value from reactNativeArchitectures in your gradle.properties\n+ * file and works together with the --active-arch-only flag of react-native run-android.\n */\n def reactNativeArchitectures() {\n def value = project.getProperties().get(\"reactNativeArchitectures\")\n@@ -140,84 +113,13 @@ android {\n \n compileSdkVersion rootProject.ext.compileSdkVersion\n \n+ namespace \"com.helloworld\"\n defaultConfig {\n applicationId \"com.helloworld\"\n minSdkVersion rootProject.ext.minSdkVersion\n targetSdkVersion rootProject.ext.targetSdkVersion\n versionCode 1\n versionName \"1.0\"\n- buildConfigField \"boolean\", \"IS_NEW_ARCHITECTURE_ENABLED\", isNewArchitectureEnabled().toString()\n-\n- if (isNewArchitectureEnabled()) {\n- // We configure the NDK build only if you decide to opt-in for the New Architecture.\n- externalNativeBuild {\n- ndkBuild {\n- arguments \"APP_PLATFORM=android-21\",\n- \"APP_STL=c++_shared\",\n- \"NDK_TOOLCHAIN_VERSION=clang\",\n- \"GENERATED_SRC_DIR=$buildDir/generated/source\",\n- \"PROJECT_BUILD_DIR=$buildDir\",\n- \"REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid\",\n- \"REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build\"\n- cFlags \"-Wall\", \"-Werror\", \"-fexceptions\", \"-frtti\", \"-DWITH_INSPECTOR=1\"\n- cppFlags \"-std=c++17\"\n- // Make sure this target name is the same you specify inside the\n- // src/main/jni/Android.mk file for the `LOCAL_MODULE` variable.\n- targets \"helloworld_appmodules\"\n-\n- // Fix for windows limit on number of character in file paths and in command lines\n- if (Os.isFamily(Os.FAMILY_WINDOWS)) {\n- arguments \"NDK_APP_SHORT_COMMANDS=true\"\n- }\n- }\n- }\n- if (!enableSeparateBuildPerCPUArchitecture) {\n- ndk {\n- abiFilters (*reactNativeArchitectures())\n- }\n- }\n- }\n- }\n-\n- if (isNewArchitectureEnabled()) {\n- // We configure the NDK build only if you decide to opt-in for the New Architecture.\n- externalNativeBuild {\n- ndkBuild {\n- path \"$projectDir/src/main/jni/Android.mk\"\n- }\n- }\n- def reactAndroidProjectDir = project(':ReactAndroid').projectDir\n- def packageReactNdkDebugLibs = tasks.register(\"packageReactNdkDebugLibs\", Copy) {\n- dependsOn(\":ReactAndroid:packageReactNdkDebugLibsForBuck\")\n- from(\"$reactAndroidProjectDir/src/main/jni/prebuilt/lib\")\n- into(\"$buildDir/react-ndk/exported\")\n- }\n- def packageReactNdkReleaseLibs = tasks.register(\"packageReactNdkReleaseLibs\", Copy) {\n- dependsOn(\":ReactAndroid:packageReactNdkReleaseLibsForBuck\")\n- from(\"$reactAndroidProjectDir/src/main/jni/prebuilt/lib\")\n- into(\"$buildDir/react-ndk/exported\")\n- }\n- afterEvaluate {\n- // If you wish to add a custom TurboModule or component locally,\n- // you should uncomment this line.\n- // preBuild.dependsOn(\"generateCodegenArtifactsFromSchema\")\n- preDebugBuild.dependsOn(packageReactNdkDebugLibs)\n- preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)\n-\n- // Due to a bug inside AGP, we have to explicitly set a dependency\n- // between configureNdkBuild* tasks and the preBuild tasks.\n- // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732\n- configureNdkBuildRelease.dependsOn(preReleaseBuild)\n- configureNdkBuildDebug.dependsOn(preDebugBuild)\n- reactNativeArchitectures().each { architecture ->\n- tasks.findByName(\"configureNdkBuildDebug[${architecture}]\")?.configure {\n- dependsOn(\"preDebugBuild\")\n- }\n- tasks.findByName(\"configureNdkBuildRelease[${architecture}]\")?.configure {\n- dependsOn(\"preReleaseBuild\")\n- }\n- }\n- }\n }\n \n splits {\n@@ -244,6 +146,7 @@ android {\n // Caution! In production, you need to generate your own keystore file.\n // see https://reactnative.dev/docs/signed-apk-android.\n signingConfig signingConfigs.debug\n+ shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false)\n minifyEnabled enableProguardInReleaseBuilds\n proguardFiles getDefaultProguardFile(\"proguard-android.txt\"), \"proguard-rules.pro\"\n }\n@@ -254,11 +157,12 @@ android {\n variant.outputs.each { output ->\n // For each separate APK per architecture, set a unique version code as described here:\n // https://developer.android.com/studio/build/configure-apk-splits.html\n+ // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc.\n def versionCodes = [\"armeabi-v7a\": 1, \"x86\": 2, \"arm64-v8a\": 3, \"x86_64\": 4]\n def abi = output.getFilter(OutputFile.ABI)\n if (abi != null) { // null for the universal-debug, universal-release variants\n output.versionCodeOverride =\n- versionCodes.get(abi) * 1048576 + defaultConfig.versionCode\n+ defaultConfig.versionCode * 1000 + versionCodes.get(abi)\n }\n \n }\n@@ -286,10 +190,8 @@ android {\n }\n \n dependencies {\n- implementation fileTree(dir: \"libs\", include: [\"*.jar\"])\n-\n- //noinspection GradleDynamicVersion\n- implementation \"com.facebook.react:react-native:+\" // From node_modules\n+ // The version of react-native is set by the React Native Gradle Plugin\n+ implementation(\"com.facebook.react:react-android\")\n \n def isGifEnabled = (findProperty('expo.gif.enabled') ?: \"\") == \"true\";\n def isWebpEnabled = (findProperty('expo.webp.enabled') ?: \"\") == \"true\";\n@@ -298,70 +200,38 @@ dependencies {\n \n // If your app supports Android versions before Ice Cream Sandwich (API level 14)\n if (isGifEnabled || isWebpEnabled) {\n- implementation \"com.facebook.fresco:fresco:${frescoVersion}\"\n- implementation \"com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:fresco:${frescoVersion}\")\n+ implementation(\"com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}\")\n }\n \n if (isGifEnabled) {\n // For animated gif support\n- implementation \"com.facebook.fresco:animated-gif:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:animated-gif:${frescoVersion}\")\n }\n \n if (isWebpEnabled) {\n // For webp support\n- implementation \"com.facebook.fresco:webpsupport:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:webpsupport:${frescoVersion}\")\n if (isWebpAnimatedEnabled) {\n // Animated webp support\n- implementation \"com.facebook.fresco:animated-webp:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:animated-webp:${frescoVersion}\")\n }\n }\n \n- implementation \"androidx.swiperefreshlayout:swiperefreshlayout:1.0.0\"\n- debugImplementation(\"com.facebook.flipper:flipper:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.fbjni'\n- }\n+ implementation(\"androidx.swiperefreshlayout:swiperefreshlayout:1.0.0\")\n+\n+ debugImplementation(\"com.facebook.flipper:flipper:${FLIPPER_VERSION}\")\n debugImplementation(\"com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.flipper'\n exclude group:'com.squareup.okhttp3', module:'okhttp'\n }\n- debugImplementation(\"com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.flipper'\n- }\n+ debugImplementation(\"com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}\")\n \n- if (enableHermes) {\n- debugImplementation files(new File([\"node\", \"--print\", \"require.resolve('hermes-engine/package.json')\"].execute(null, rootDir).text.trim(), \"../android/hermes-debug.aar\"))\n- releaseImplementation files(new File([\"node\", \"--print\", \"require.resolve('hermes-engine/package.json')\"].execute(null, rootDir).text.trim(), \"../android/hermes-release.aar\"))\n+ if (hermesEnabled.toBoolean()) {\n+ implementation(\"com.facebook.react:hermes-android\")\n } else {\n implementation jscFlavor\n }\n }\n \n-if (isNewArchitectureEnabled()) {\n- // If new architecture is enabled, we let you build RN from source\n- // Otherwise we fallback to a prebuilt .aar bundled in the NPM package.\n- // This will be applied to all the imported transtitive dependency.\n- configurations.all {\n- resolutionStrategy.dependencySubstitution {\n- substitute(module(\"com.facebook.react:react-native\"))\n- .using(project(\":ReactAndroid\")).because(\"On New Architecture we're building React Native from source\")\n- }\n- }\n-}\n-\n-// Run this once to be able to run the application with BUCK\n-// puts all compile dependencies into folder libs for BUCK to use\n-task copyDownloadableDepsToLibs(type: Copy) {\n- from configurations.implementation\n- into 'libs'\n-}\n-\n apply from: new File([\"node\", \"--print\", \"require.resolve('@react-native-community/cli-platform-android/package.json')\"].execute(null, rootDir).text.trim(), \"../native_modules.gradle\");\n applyNativeModulesAppBuildGradle(project)\n-\n-def isNewArchitectureEnabled() {\n- // To opt-in for the New Architecture, you can either:\n- // - Set `newArchEnabled` to true inside the `gradle.properties` file\n- // - Invoke gradle with `-newArchEnabled=true`\n- // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`\n- return project.hasProperty(\"newArchEnabled\") && project.newArchEnabled == \"true\"\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/build_defs.bzl b/templates/expo-template-bare-minimum/android/app/build_defs.bzl\ndeleted file mode 100644\nindex fff270f8d1..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/build_defs.bzl\n+++ /dev/null\n@@ -1,19 +0,0 @@\n-\"\"\"Helper definitions to glob .aar and .jar targets\"\"\"\n-\n-def create_aar_targets(aarfiles):\n- for aarfile in aarfiles:\n- name = \"aars__\" + aarfile[aarfile.rindex(\"/\") + 1:aarfile.rindex(\".aar\")]\n- lib_deps.append(\":\" + name)\n- android_prebuilt_aar(\n- name = name,\n- aar = aarfile,\n- )\n-\n-def create_jar_targets(jarfiles):\n- for jarfile in jarfiles:\n- name = \"jars__\" + jarfile[jarfile.rindex(\"/\") + 1:jarfile.rindex(\".jar\")]\n- lib_deps.append(\":\" + name)\n- prebuilt_jar(\n- name = name,\n- binary_jar = jarfile,\n- )\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java b/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\nindex 8cddb11cb2..595dd5831c 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\n@@ -1,5 +1,5 @@\n /**\n- * Copyright (c) Facebook, Inc. and its affiliates.\n+ * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n *

This source code is licensed under the MIT license found in the LICENSE file in the root\n * directory of this source tree.\n@@ -17,22 +17,27 @@ import com.facebook.flipper.plugins.inspector.DescriptorMapping;\n import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;\n import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;\n import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;\n-import com.facebook.flipper.plugins.react.ReactFlipperPlugin;\n import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;\n+import com.facebook.react.ReactInstanceEventListener;\n import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.bridge.ReactContext;\n import com.facebook.react.modules.network.NetworkingModule;\n import okhttp3.OkHttpClient;\n \n+/**\n+ * Class responsible of loading Flipper inside your React Native application. This is the debug\n+ * flavor of it. Here you can add your own plugins and customize the Flipper setup.\n+ */\n public class ReactNativeFlipper {\n public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {\n if (FlipperUtils.shouldEnableFlipper(context)) {\n final FlipperClient client = AndroidFlipperClient.getInstance(context);\n+\n client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));\n- client.addPlugin(new ReactFlipperPlugin());\n client.addPlugin(new DatabasesFlipperPlugin(context));\n client.addPlugin(new SharedPreferencesFlipperPlugin(context));\n client.addPlugin(CrashReporterPlugin.getInstance());\n+\n NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();\n NetworkingModule.setCustomClientBuilder(\n new NetworkingModule.CustomClientBuilder() {\n@@ -43,12 +48,13 @@ public class ReactNativeFlipper {\n });\n client.addPlugin(networkFlipperPlugin);\n client.start();\n+\n // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized\n // Hence we run if after all native modules have been initialized\n ReactContext reactContext = reactInstanceManager.getCurrentReactContext();\n if (reactContext == null) {\n reactInstanceManager.addReactInstanceEventListener(\n- new ReactInstanceManager.ReactInstanceEventListener() {\n+ new ReactInstanceEventListener() {\n @Override\n public void onReactContextInitialized(ReactContext reactContext) {\n reactInstanceManager.removeReactInstanceEventListener(this);\n@@ -66,4 +72,4 @@ public class ReactNativeFlipper {\n }\n }\n }\n-}\n\\ No newline at end of file\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml b/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\nindex 0cad655b33..6536fc03ad 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n@@ -1,4 +1,4 @@\n-\n+\n \n \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\nindex 576e23db45..7e2823fb6c 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n@@ -5,7 +5,8 @@ import android.os.Bundle;\n \n import com.facebook.react.ReactActivity;\n import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactActivityDelegate;\n \n import expo.modules.ReactActivityDelegateWrapper;\n \n@@ -28,11 +29,21 @@ public class MainActivity extends ReactActivity {\n return \"main\";\n }\n \n+ /**\n+ * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link\n+ * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React\n+ * (aka React 18) with two boolean flags.\n+ */\n @Override\n protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this,\n- new ReactActivityDelegate(this, getMainComponentName())\n- );\n+ return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, new DefaultReactActivityDelegate(\n+ this,\n+ getMainComponentName(),\n+ // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n+ DefaultNewArchitectureEntryPoint.getFabricEnabled(), // fabricEnabled\n+ // If you opted-in for the New Architecture, we enable Concurrent React (i.e. React 18).\n+ DefaultNewArchitectureEntryPoint.getConcurrentReactEnabled() // concurrentRootEnabled\n+ ));\n }\n \n /**\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\nindex 7deb688b07..31c2b288c1 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n@@ -1,69 +1,70 @@\n package com.helloworld;\n \n import android.app.Application;\n-import android.content.Context;\n import android.content.res.Configuration;\n import androidx.annotation.NonNull;\n \n import com.facebook.react.PackageList;\n import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.ReactNativeHost;\n import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactNativeHost;\n import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n \n import expo.modules.ApplicationLifecycleDispatcher;\n import expo.modules.ReactNativeHostWrapper;\n \n-import java.lang.reflect.InvocationTargetException;\n import java.util.List;\n \n public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n \n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n+ private final ReactNativeHost mReactNativeHost =\n+ new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) {\n+ @Override\n+ public boolean getUseDeveloperSupport() {\n+ return BuildConfig.DEBUG;\n+ }\n \n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n+ @Override\n+ protected List getPackages() {\n+ @SuppressWarnings(\"UnnecessaryLocalVariable\")\n+ List packages = new PackageList(this).getPackages();\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return packages;\n+ }\n \n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n+ @Override\n+ protected String getJSMainModuleName() {\n+ return \"index\";\n+ }\n+\n+ @Override\n+ protected boolean isNewArchEnabled() {\n+ return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n+ }\n+\n+ @Override\n+ protected Boolean isHermesEnabled() {\n+ return BuildConfig.IS_HERMES_ENABLED;\n+ }\n+ });\n \n @Override\n public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n+ return mReactNativeHost;\n }\n \n @Override\n public void onCreate() {\n super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ DefaultNewArchitectureEntryPoint.load();\n+ }\n+ ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n ApplicationLifecycleDispatcher.onApplicationCreate(this);\n }\n \n@@ -72,35 +73,4 @@ public class MainApplication extends Application implements ReactApplication {\n super.onConfigurationChanged(newConfig);\n ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex f555e36448..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,116 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- new EmptyReactNativeConfig(),\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex 0ae6366756..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,49 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source \n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_futures \\\n- libfolly_json \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 0ac23cc626..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,24 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex 0fa43fa69a..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex dbbdc3d132..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 25f27722d0..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(std::string name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 8f7edffd64..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,61 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java b/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java\nnew file mode 100644\nindex 0000000000..b510364404\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java\n@@ -0,0 +1,20 @@\n+/**\n+ * Copyright (c) Meta Platforms, Inc. and affiliates.\n+ *\n+ *

This source code is licensed under the MIT license found in the LICENSE file in the root\n+ * directory of this source tree.\n+ */\n+package com.helloworld;\n+\n+import android.content.Context;\n+import com.facebook.react.ReactInstanceManager;\n+\n+/**\n+ * Class responsible of loading Flipper inside your React Native application. This is the release\n+ * flavor of it so it's empty as we don't want to load Flipper.\n+ */\n+public class ReactNativeFlipper {\n+ public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {\n+ // Do nothing as we don't want to initialize Flipper on Release.\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/build.gradle b/templates/expo-template-bare-minimum/android/build.gradle\nindex fa77528908..e5fda82878 100644\n--- a/templates/expo-template-bare-minimum/android/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/build.gradle\n@@ -1,50 +1,31 @@\n-import org.apache.tools.ant.taskdefs.condition.Os\n-\n // Top-level build file where you can add configuration options common to all sub-projects/modules.\n \n buildscript {\n ext {\n- buildToolsVersion = findProperty('android.buildToolsVersion') ?: '31.0.0'\n+ buildToolsVersion = findProperty('android.buildToolsVersion') ?: '33.0.0'\n minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '21')\n- compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '31')\n- targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '31')\n+ compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '33')\n+ targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '33')\n if (findProperty('android.kotlinVersion')) {\n kotlinVersion = findProperty('android.kotlinVersion')\n }\n frescoVersion = findProperty('expo.frescoVersion') ?: '2.5.0'\n \n- if (System.properties['os.arch'] == 'aarch64') {\n- // For M1 Users we need to use the NDK 24 which added support for aarch64\n- ndkVersion = '24.0.8215888'\n- } else {\n- // Otherwise we default to the side-by-side NDK version from AGP.\n- ndkVersion = '21.4.7075529'\n- }\n+ // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.\n+ ndkVersion = \"23.1.7779620\"\n }\n repositories {\n google()\n mavenCentral()\n }\n dependencies {\n- classpath('com.android.tools.build:gradle:7.0.4')\n+ classpath('com.android.tools.build:gradle:7.4.1')\n classpath('com.facebook.react:react-native-gradle-plugin')\n- classpath('de.undercouch:gradle-download-task:4.1.2')\n- // NOTE: Do not place your application dependencies here; they belong\n- // in the individual module build.gradle files\n }\n }\n \n-def REACT_NATIVE_VERSION = new File(['node', '--print',\"JSON.parse(require('fs').readFileSync(require.resolve('react-native/package.json'), 'utf-8')).version\"].execute(null, rootDir).text.trim())\n-\n allprojects {\n- configurations.all {\n- resolutionStrategy {\n- force \"com.facebook.react:react-native:\" + REACT_NATIVE_VERSION\n- }\n- }\n-\n repositories {\n- mavenLocal()\n maven {\n // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm\n url(new File(['node', '--print', \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), '../android'))\n@@ -55,13 +36,7 @@ allprojects {\n }\n \n google()\n- mavenCentral {\n- // We don't want to fetch react-native from Maven Central as there are\n- // older versions over there.\n- content {\n- excludeGroup 'com.facebook.react'\n- }\n- }\n+ mavenCentral()\n maven { url 'https://www.jitpack.io' }\n }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/gitignore b/templates/expo-template-bare-minimum/android/gitignore\nindex 64436baaf5..877b87e9a5 100644\n--- a/templates/expo-template-bare-minimum/android/gitignore\n+++ b/templates/expo-template-bare-minimum/android/gitignore\n@@ -11,11 +11,5 @@ local.properties\n *.iml\n *.hprof\n \n-# BUCK\n-buck-out/\n-\\.buckd/\n-*.keystore\n-!debug.keystore\n-\n # Bundle artifacts\n *.jsbundle\ndiff --git a/templates/expo-template-bare-minimum/android/gradle.properties b/templates/expo-template-bare-minimum/android/gradle.properties\nindex fab3fb6bcf..9911ac4afd 100644\n--- a/templates/expo-template-bare-minimum/android/gradle.properties\n+++ b/templates/expo-template-bare-minimum/android/gradle.properties\n@@ -42,7 +42,7 @@ newArchEnabled=false\n \n # The hosted JavaScript engine\n # Supported values: expo.jsEngine = \"hermes\" | \"jsc\"\n-expo.jsEngine=jsc\n+expo.jsEngine=hermes\n \n # Enable GIF support in React Native images (~200 B increase)\n expo.gif.enabled=true\ndiff --git a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar\nindex 7454180f2a..249e5832f0 100644\nBinary files a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar and b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar differ\ndiff --git a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\nindex 669386b870..8fad3f5a98 100644\n--- a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\n+++ b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\n@@ -1,5 +1,5 @@\n distributionBase=GRADLE_USER_HOME\n distributionPath=wrapper/dists\n-distributionUrl=https\\://services.gradle.org/distributions/gradle-7.3.3-all.zip\n+distributionUrl=https\\://services.gradle.org/distributions/gradle-7.5.1-all.zip\n zipStoreBase=GRADLE_USER_HOME\n zipStorePath=wrapper/dists\ndiff --git a/templates/expo-template-bare-minimum/android/gradlew b/templates/expo-template-bare-minimum/android/gradlew\nindex 1b6c787337..a69d9cb6c2 100755\n--- a/templates/expo-template-bare-minimum/android/gradlew\n+++ b/templates/expo-template-bare-minimum/android/gradlew\n@@ -205,6 +205,12 @@ set -- \\\n org.gradle.wrapper.GradleWrapperMain \\\n \"$@\"\n \n+# Stop when \"xargs\" is not available.\n+if ! command -v xargs >/dev/null 2>&1\n+then\n+ die \"xargs is not available\"\n+fi\n+\n # Use \"xargs\" to parse quoted args.\n #\n # With -n1 it outputs one arg per line, with the quotes and backslashes removed.\ndiff --git a/templates/expo-template-bare-minimum/android/gradlew.bat b/templates/expo-template-bare-minimum/android/gradlew.bat\nindex ac1b06f938..53a6b238d4 100644\n--- a/templates/expo-template-bare-minimum/android/gradlew.bat\n+++ b/templates/expo-template-bare-minimum/android/gradlew.bat\n@@ -14,7 +14,7 @@\n @rem limitations under the License.\r\n @rem\r\n \r\n-@if \"%DEBUG%\" == \"\" @echo off\r\n+@if \"%DEBUG%\"==\"\" @echo off\r\n @rem ##########################################################################\r\n @rem\r\n @rem Gradle startup script for Windows\r\n@@ -25,7 +25,7 @@\n if \"%OS%\"==\"Windows_NT\" setlocal\r\n \r\n set DIRNAME=%~dp0\r\n-if \"%DIRNAME%\" == \"\" set DIRNAME=.\r\n+if \"%DIRNAME%\"==\"\" set DIRNAME=.\r\n set APP_BASE_NAME=%~n0\r\n set APP_HOME=%DIRNAME%\r\n \r\n@@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome\n \r\n set JAVA_EXE=java.exe\r\n %JAVA_EXE% -version >NUL 2>&1\r\n-if \"%ERRORLEVEL%\" == \"0\" goto execute\r\n+if %ERRORLEVEL% equ 0 goto execute\r\n \r\n echo.\r\n echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\r\n@@ -75,13 +75,15 @@ set CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\n \r\n :end\r\n @rem End local scope for the variables with windows NT shell\r\n-if \"%ERRORLEVEL%\"==\"0\" goto mainEnd\r\n+if %ERRORLEVEL% equ 0 goto mainEnd\r\n \r\n :fail\r\n rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\r\n rem the _cmd.exe /c_ return code!\r\n-if not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\r\n-exit /b 1\r\n+set EXIT_CODE=%ERRORLEVEL%\r\n+if %EXIT_CODE% equ 0 set EXIT_CODE=1\r\n+if not \"\"==\"%GRADLE_EXIT_CONSOLE%\" exit %EXIT_CODE%\r\n+exit /b %EXIT_CODE%\r\n \r\n :mainEnd\r\n if \"%OS%\"==\"Windows_NT\" endlocal\r\ndiff --git a/templates/expo-template-bare-minimum/android/settings.gradle b/templates/expo-template-bare-minimum/android/settings.gradle\nindex fa543f0c69..1dc416e7c1 100644\n--- a/templates/expo-template-bare-minimum/android/settings.gradle\n+++ b/templates/expo-template-bare-minimum/android/settings.gradle\n@@ -8,8 +8,3 @@ applyNativeModulesSettingsGradle(settings)\n \n include ':app'\n includeBuild(new File([\"node\", \"--print\", \"require.resolve('react-native-gradle-plugin/package.json')\"].execute(null, rootDir).text.trim()).getParentFile())\n-\n-if (settings.hasProperty(\"newArchEnabled\") && settings.newArchEnabled == \"true\") {\n- include(\":ReactAndroid\")\n- project(\":ReactAndroid\").projectDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../ReactAndroid\");\n-}\ndiff --git a/templates/expo-template-bare-minimum/gitignore b/templates/expo-template-bare-minimum/gitignore\nindex c8eb0f9a64..df57ba88a1 100644\n--- a/templates/expo-template-bare-minimum/gitignore\n+++ b/templates/expo-template-bare-minimum/gitignore\n@@ -30,6 +30,9 @@ build/\n local.properties\n *.iml\n *.hprof\n+.cxx/\n+*.keystore\n+!debug.keystore\n \n # node.js\n #\n@@ -37,18 +40,15 @@ node_modules/\n npm-debug.log\n yarn-error.log\n \n-# BUCK\n-buck-out/\n-\\.buckd/\n-*.keystore\n-!debug.keystore\n-\n # Bundle artifacts\n *.jsbundle\n \n # CocoaPods\n /ios/Pods/\n \n+# Temporary files created by Metro to check the health of the file watcher\n+.metro-health-check*\n+\n # Expo\n .expo/\n web-build/\ndiff --git a/templates/expo-template-bare-minimum/ios/.xcode.env b/templates/expo-template-bare-minimum/ios/.xcode.env\nnew file mode 100644\nindex 0000000000..3d5782c715\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/ios/.xcode.env\n@@ -0,0 +1,11 @@\n+# This `.xcode.env` file is versioned and is used to source the environment\n+# used when running script phases inside Xcode.\n+# To customize your local environment, you can create an `.xcode.env.local`\n+# file that is not versioned.\n+\n+# NODE_BINARY variable contains the PATH to the node executable.\n+#\n+# Customize the NODE_BINARY variable here.\n+# For example, to use nvm with brew, add the following line\n+# . \"$(brew --prefix nvm)/nvm.sh\" --no-use\n+export NODE_BINARY=$(command -v node)\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\nindex 2ac180e425..98e6c2afea 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n@@ -214,7 +214,7 @@\n \t\t\t);\n \t\t\trunOnlyForDeploymentPostprocessing = 0;\n \t\t\tshellPath = /bin/sh;\n-\t\t\tshellScript = \"export NODE_BINARY=node\\n\\n# The project root by default is one level up from the ios directory\\nexport PROJECT_ROOT=\\\"$PROJECT_DIR\\\"/..\\n\\n`node --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\\\"`\\n\";\n+\t\t\tshellScript = \"if [[ -f \\\"$PODS_ROOT/../.xcode.env\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env\\\"\\nfi\\nif [[ -f \\\"$PODS_ROOT/../.xcode.env.local\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env.local\\\"\\nfi\\n\\n# The project root by default is one level up from the ios directory\\nexport PROJECT_ROOT=\\\"$PROJECT_DIR\\\"/..\\n\\nif [[ \\\"$CONFIGURATION\\\" = *Debug* ]]; then\\n export SKIP_BUNDLING=1\\nfi\\nif [[ -z \\\"$ENTRY_FILE\\\" ]]; then\\n # Set the entry JS file using the bundler's entry resolution.\\n export ENTRY_FILE=\\\"$(\\\"$NODE_BINARY\\\" -e \\\"require('expo/scripts/resolveAppEntry')\\\" $PROJECT_ROOT ios relative | tail -n 1)\\\"\\nfi\\n\\n`\\\"$NODE_BINARY\\\" --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\\\"`\\n\\n\";\n \t\t};\n \t\t08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = {\n \t\t\tisa = PBXShellScriptBuildPhase;\n@@ -276,7 +276,7 @@\n \t\t\t);\n \t\t\trunOnlyForDeploymentPostprocessing = 0;\n \t\t\tshellPath = /bin/sh;\n-\t\t\tshellScript = \"export RCT_METRO_PORT=\\\"${RCT_METRO_PORT:=8081}\\\"\\necho \\\"export RCT_METRO_PORT=${RCT_METRO_PORT}\\\" > `node --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/.packager.env'\\\"`\\nif [ -z \\\"${RCT_NO_LAUNCH_PACKAGER+xxx}\\\" ] ; then\\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\\n if ! curl -s \\\"http://localhost:${RCT_METRO_PORT}/status\\\" | grep -q \\\"packager-status:running\\\" ; then\\n echo \\\"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\\\"\\n exit 2\\n fi\\n else\\n open `node --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/launchPackager.command'\\\"` || echo \\\"Can't start packager automatically\\\"\\n fi\\nfi\\n\";\n+\t\t\tshellScript = \"if [[ -f \\\"$PODS_ROOT/../.xcode.env\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env\\\"\\nfi\\nif [[ -f \\\"$PODS_ROOT/../.xcode.env.local\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env.local\\\"\\nfi\\n\\nexport RCT_METRO_PORT=\\\"${RCT_METRO_PORT:=8081}\\\"\\necho \\\"export RCT_METRO_PORT=${RCT_METRO_PORT}\\\" > `$NODE_BINARY --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/.packager.env'\\\"`\\nif [ -z \\\"${RCT_NO_LAUNCH_PACKAGER+xxx}\\\" ] ; then\\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\\n if ! curl -s \\\"http://localhost:${RCT_METRO_PORT}/status\\\" | grep -q \\\"packager-status:running\\\" ; then\\n echo \\\"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\\\"\\n exit 2\\n fi\\n else\\n open `$NODE_BINARY --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/launchPackager.command'\\\"` || echo \\\"Can't start packager automatically\\\"\\n fi\\nfi\\n\";\n \t\t\tshowEnvVarsInLog = 0;\n \t\t};\n /* End PBXShellScriptBuildPhase section */\n@@ -308,8 +308,9 @@\n \t\t\t\t\t\"FB_SONARKIT_ENABLED=1\",\n \t\t\t\t);\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n+ MARKETING_VERSION = 1.0;\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n \t\t\t\t\t\"-ObjC\",\n@@ -331,8 +332,9 @@\n \t\t\t\tCLANG_ENABLE_MODULES = YES;\n \t\t\t\tCURRENT_PROJECT_VERSION = 1;\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n+ MARKETING_VERSION = 1.0;\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n \t\t\t\t\t\"-ObjC\",\n@@ -392,7 +394,7 @@\n \t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n \t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n \t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n \t\t\t\tLIBRARY_SEARCH_PATHS = \"\\\"$(inherited)\\\"\";\n \t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n@@ -441,7 +443,7 @@\n \t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n \t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n \t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n \t\t\t\tLIBRARY_SEARCH_PATHS = \"\\\"$(inherited)\\\"\";\n \t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\nindex f7d2972042..1658a437eb 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\n@@ -1,9 +1,7 @@\n-#import \n-#import \n+#import \n #import \n-\n #import \n \n-@interface AppDelegate : EXAppDelegateWrapper \n+@interface AppDelegate : EXAppDelegateWrapper\n \n @end\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\nindex aef81ec589..8cb5aef137 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\n@@ -1,66 +1,19 @@\n #import \"AppDelegate.h\"\n \n-#import \n #import \n-#import \n #import \n-#import \n-\n-#import \n-\n-#if RCT_NEW_ARCH_ENABLED\n-#import \n-#import \n-#import \n-#import \n-#import \n-#import \n-\n-#import \n-\n-@interface AppDelegate () {\n- RCTTurboModuleManager *_turboModuleManager;\n- RCTSurfacePresenterBridgeAdapter *_bridgeAdapter;\n- std::shared_ptr _reactNativeConfig;\n- facebook::react::ContextContainer::Shared _contextContainer;\n-}\n-@end\n-#endif\n \n @implementation AppDelegate\n \n - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions\n {\n- RCTAppSetupPrepareApp(application);\n-\n- RCTBridge *bridge = [self.reactDelegate createBridgeWithDelegate:self launchOptions:launchOptions];\n-\n-#if RCT_NEW_ARCH_ENABLED\n- _contextContainer = std::make_shared();\n- _reactNativeConfig = std::make_shared();\n- _contextContainer->insert(\"ReactNativeConfig\", _reactNativeConfig);\n- _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer];\n- bridge.surfacePresenter = _bridgeAdapter.surfacePresenter;\n-#endif\n+ self.moduleName = @\"main\";\n \n- UIView *rootView = [self.reactDelegate createRootViewWithBridge:bridge moduleName:@\"main\" initialProperties:nil];\n+ // You can add your custom initial props in the dictionary below.\n+ // They will be passed down to the ViewController used by React Native.\n+ self.initialProps = @{};\n \n- rootView.backgroundColor = [UIColor whiteColor];\n- self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];\n- UIViewController *rootViewController = [self.reactDelegate createRootViewController];\n- rootViewController.view = rootView;\n- self.window.rootViewController = rootViewController;\n- [self.window makeKeyAndVisible];\n-\n- [super application:application didFinishLaunchingWithOptions:launchOptions];\n-\n- return YES;\n-}\n-\n-- (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge\n-{\n- // If you'd like to export some custom RCTBridgeModules, add them here!\n- return @[];\n+ return [super application:application didFinishLaunchingWithOptions:launchOptions];\n }\n \n - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n@@ -72,6 +25,16 @@\n #endif\n }\n \n+/// This method controls whether the `concurrentRoot`feature of React18 is turned on or off.\n+///\n+/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html\n+/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture).\n+/// @return: `true` if the `concurrentRoot` feature is enabled. Otherwise, it returns `false`.\n+- (BOOL)concurrentRootEnabled\n+{\n+ return true;\n+}\n+\n // Linking API\n - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options {\n return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options];\n@@ -101,43 +64,4 @@\n return [super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];\n }\n \n-#if RCT_NEW_ARCH_ENABLED\n-\n-#pragma mark - RCTCxxBridgeDelegate\n-\n-- (std::unique_ptr)jsExecutorFactoryForBridge:(RCTBridge *)bridge\n-{\n- _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge\n- delegate:self\n- jsInvoker:bridge.jsCallInvoker];\n- return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager);\n-}\n-\n-#pragma mark RCTTurboModuleManagerDelegate\n-\n-- (Class)getModuleClassFromName:(const char *)name\n-{\n- return RCTCoreModulesClassProvider(name);\n-}\n-\n-- (std::shared_ptr)getTurboModule:(const std::string &)name\n- jsInvoker:(std::shared_ptr)jsInvoker\n-{\n- return nullptr;\n-}\n-\n-- (std::shared_ptr)getTurboModule:(const std::string &)name\n- initParams:\n- (const facebook::react::ObjCTurboModule::InitParams &)params\n-{\n- return nullptr;\n-}\n-\n-- (id)getModuleInstanceFromClass:(Class)moduleClass\n-{\n- return RCTAppSetupDefaultModuleFromClass(moduleClass);\n-}\n-\n-#endif\n-\n @end\ndiff --git a/templates/expo-template-bare-minimum/ios/Podfile b/templates/expo-template-bare-minimum/ios/Podfile\nindex 29797efaaa..e523ea5cac 100644\n--- a/templates/expo-template-bare-minimum/ios/Podfile\n+++ b/templates/expo-template-bare-minimum/ios/Podfile\n@@ -5,37 +5,79 @@ require File.join(File.dirname(`node --print \"require.resolve('@react-native-com\n require 'json'\n podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}\n \n-platform :ios, podfile_properties['ios.deploymentTarget'] || '12.0'\n+ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0'\n+ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = '1' if podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR'] == 'true'\n+\n+platform :ios, podfile_properties['ios.deploymentTarget'] || '13.0'\n install! 'cocoapods',\n :deterministic_uuids => false\n \n+prepare_react_native_project!\n+\n+# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set.\n+# because `react-native-flipper` depends on (FlipperKit,...), which will be excluded. To fix this,\n+# you can also exclude `react-native-flipper` in `react-native.config.js`\n+#\n+# ```js\n+# module.exports = {\n+# dependencies: {\n+# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),\n+# }\n+# }\n+# ```\n+flipper_config = FlipperConfiguration.disabled\n+if ENV['NO_FLIPPER'] == '1' then\n+ # Explicitly disabled through environment variables\n+ flipper_config = FlipperConfiguration.disabled\n+elsif podfile_properties.key?('ios.flipper') then\n+ # Configure Flipper in Podfile.properties.json\n+ if podfile_properties['ios.flipper'] == 'true' then\n+ flipper_config = FlipperConfiguration.enabled([\"Debug\", \"Release\"])\n+ elsif podfile_properties['ios.flipper'] != 'false' then\n+ flipper_config = FlipperConfiguration.enabled([\"Debug\", \"Release\"], { 'Flipper' => podfile_properties['ios.flipper'] })\n+ end\n+end\n+\n target 'HelloWorld' do\n use_expo_modules!\n config = use_native_modules!\n \n use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks']\n+ use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS']\n \n # Flags change depending on the env values.\n flags = get_default_flags()\n \n use_react_native!(\n :path => config[:reactNativePath],\n- :hermes_enabled => flags[:hermes_enabled] || podfile_properties['expo.jsEngine'] == 'hermes',\n+ :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes',\n :fabric_enabled => flags[:fabric_enabled],\n # An absolute path to your application root.\n- :app_path => \"#{Dir.pwd}/..\"\n+ :app_path => \"#{Pod::Config.instance.installation_root}/..\",\n+ # Note that if you have use_frameworks! enabled, Flipper will not work if enabled\n+ :flipper_configuration => flipper_config\n )\n \n- # Uncomment to opt-in to using Flipper\n- # Note that if you have use_frameworks! enabled, Flipper will not work\n- #\n- # if !ENV['CI']\n- # use_flipper!()\n- # end\n-\n post_install do |installer|\n- react_native_post_install(installer)\n+ react_native_post_install(\n+ installer,\n+ config[:reactNativePath],\n+ # Set `mac_catalyst_enabled` to `true` in order to apply patches\n+ # necessary for Mac Catalyst builds\n+ :mac_catalyst_enabled => false\n+ )\n __apply_Xcode_12_5_M1_post_install_workaround(installer)\n+\n+ # This is necessary for Xcode 14, because it signs resource bundles by default\n+ # when building for devices.\n+ installer.target_installation_results.pod_target_installation_results\n+ .each do |pod_name, target_installation_result|\n+ target_installation_result.resource_bundle_targets.each do |resource_bundle_target|\n+ resource_bundle_target.build_configurations.each do |config|\n+ config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'\n+ end\n+ end\n+ end\n end\n \n post_integrate do |installer|\n@@ -45,5 +87,4 @@ target 'HelloWorld' do\n Pod::UI.warn e\n end\n end\n-\n end\ndiff --git a/templates/expo-template-bare-minimum/ios/Podfile.properties.json b/templates/expo-template-bare-minimum/ios/Podfile.properties.json\nindex f6d872e81a..b1bd45da51 100644\n--- a/templates/expo-template-bare-minimum/ios/Podfile.properties.json\n+++ b/templates/expo-template-bare-minimum/ios/Podfile.properties.json\n@@ -1,3 +1,3 @@\n {\n- \"expo.jsEngine\": \"jsc\"\n+ \"expo.jsEngine\": \"hermes\"\n }\ndiff --git a/templates/expo-template-bare-minimum/ios/gitignore b/templates/expo-template-bare-minimum/ios/gitignore\nindex 2b13519939..8beb344303 100644\n--- a/templates/expo-template-bare-minimum/ios/gitignore\n+++ b/templates/expo-template-bare-minimum/ios/gitignore\n@@ -21,6 +21,7 @@ DerivedData\n *.ipa\n *.xcuserstate\n project.xcworkspace\n+.xcode.env.local\n \n # Bundle artifacts\n *.jsbundle\ndiff --git a/templates/expo-template-bare-minimum/package.json b/templates/expo-template-bare-minimum/package.json\nindex 69e7eb9619..d1fcd513cc 100644\n--- a/templates/expo-template-bare-minimum/package.json\n+++ b/templates/expo-template-bare-minimum/package.json\n@@ -1,7 +1,7 @@\n {\n \"name\": \"expo-template-bare-minimum\",\n \"description\": \"This bare project template includes a minimal setup for using unimodules with React Native.\",\n- \"version\": \"45.0.6\",\n+ \"version\": \"48.0.21\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"start\": \"expo start --dev-client\",\n@@ -10,15 +10,13 @@\n \"web\": \"expo start --web\"\n },\n \"dependencies\": {\n- \"expo\": \"~45.0.0\",\n- \"expo-splash-screen\": \"~0.15.1\",\n- \"expo-status-bar\": \"~1.3.0\",\n- \"react\": \"17.0.2\",\n- \"react-dom\": \"17.0.2\",\n- \"react-native\": \"0.68.2\",\n- \"react-native-web\": \"0.17.7\"\n+ \"expo\": \"~48.0.21\",\n+ \"expo-splash-screen\": \"~0.18.2\",\n+ \"expo-status-bar\": \"~1.4.4\",\n+ \"react\": \"18.2.0\",\n+ \"react-native\": \"0.71.14\"\n },\n \"devDependencies\": {\n- \"@babel/core\": \"^7.12.9\"\n+ \"@babel/core\": \"^7.20.0\"\n }\n }\n","46..48":"diff --git a/templates/expo-template-bare-minimum/.buckconfig b/templates/expo-template-bare-minimum/.buckconfig\ndeleted file mode 100644\nindex 934256cb29..0000000000\n--- a/templates/expo-template-bare-minimum/.buckconfig\n+++ /dev/null\n@@ -1,6 +0,0 @@\n-\n-[android]\n- target = Google Inc.:Google APIs:23\n-\n-[maven_repositories]\n- central = https://repo1.maven.org/maven2\ndiff --git a/templates/expo-template-bare-minimum/.npmignore b/templates/expo-template-bare-minimum/.npmignore\nindex 35490b6612..4e6ce00391 100644\n--- a/templates/expo-template-bare-minimum/.npmignore\n+++ b/templates/expo-template-bare-minimum/.npmignore\n@@ -20,3 +20,4 @@ ios/Pods\n android/.build\n android/app/build\n android/.gradle\n+ios/.xcode.env.local\ndiff --git a/templates/expo-template-bare-minimum/android/app/BUCK b/templates/expo-template-bare-minimum/android/app/BUCK\ndeleted file mode 100644\nindex 0e77904834..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/BUCK\n+++ /dev/null\n@@ -1,55 +0,0 @@\n-# To learn about Buck see [Docs](https://buckbuild.com/).\n-# To run your application with Buck:\n-# - install Buck\n-# - `npm start` - to start the packager\n-# - `cd android`\n-# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname \"CN=Android Debug,O=Android,C=US\"`\n-# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck\n-# - `buck install -r android/app` - compile, install and run application\n-#\n-\n-load(\":build_defs.bzl\", \"create_aar_targets\", \"create_jar_targets\")\n-\n-lib_deps = []\n-\n-create_aar_targets(glob([\"libs/*.aar\"]))\n-\n-create_jar_targets(glob([\"libs/*.jar\"]))\n-\n-android_library(\n- name = \"all-libs\",\n- exported_deps = lib_deps,\n-)\n-\n-android_library(\n- name = \"app-code\",\n- srcs = glob([\n- \"src/main/java/**/*.java\",\n- ]),\n- deps = [\n- \":all-libs\",\n- \":build_config\",\n- \":res\",\n- ],\n-)\n-\n-android_build_config(\n- name = \"build_config\",\n- package = \"com.helloworld\",\n-)\n-\n-android_resource(\n- name = \"res\",\n- package = \"com.helloworld\",\n- res = \"src/main/res\",\n-)\n-\n-android_binary(\n- name = \"app\",\n- keystore = \"//android/keystores:debug\",\n- manifest = \"src/main/AndroidManifest.xml\",\n- package_type = \"debug\",\n- deps = [\n- \":app-code\",\n- ],\n-)\ndiff --git a/templates/expo-template-bare-minimum/android/app/build.gradle b/templates/expo-template-bare-minimum/android/app/build.gradle\nindex f0293fe400..189390e7e3 100644\n--- a/templates/expo-template-bare-minimum/android/app/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/app/build.gradle\n@@ -1,136 +1,107 @@\n apply plugin: \"com.android.application\"\n+apply plugin: \"com.facebook.react\"\n \n import com.android.build.OutputFile\n-import org.apache.tools.ant.taskdefs.condition.Os\n-\n-/**\n- * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets\n- * and bundleReleaseJsAndAssets).\n- * These basically call `react-native bundle` with the correct arguments during the Android build\n- * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the\n- * bundle directly from the development server. Below you can see all the possible configurations\n- * and their defaults. If you decide to add a configuration block, make sure to add it before the\n- * `apply from: \"../../node_modules/react-native/react.gradle\"` line.\n- *\n- * project.ext.react = [\n- * // the name of the generated asset file containing your JS bundle\n- * bundleAssetName: \"index.android.bundle\",\n- *\n- * // the entry file for bundle generation. If none specified and\n- * // \"index.android.js\" exists, it will be used. Otherwise \"index.js\" is\n- * // default. Can be overridden with ENTRY_FILE environment variable.\n- * entryFile: \"index.android.js\",\n- *\n- * // https://reactnative.dev/docs/performance#enable-the-ram-format\n- * bundleCommand: \"ram-bundle\",\n- *\n- * // whether to bundle JS and assets in debug mode\n- * bundleInDebug: false,\n- *\n- * // whether to bundle JS and assets in release mode\n- * bundleInRelease: true,\n- *\n- * // whether to bundle JS and assets in another build variant (if configured).\n- * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants\n- * // The configuration property can be in the following formats\n- * // 'bundleIn${productFlavor}${buildType}'\n- * // 'bundleIn${buildType}'\n- * // bundleInFreeDebug: true,\n- * // bundleInPaidRelease: true,\n- * // bundleInBeta: true,\n- *\n- * // whether to disable dev mode in custom build variants (by default only disabled in release)\n- * // for example: to disable dev mode in the staging build type (if configured)\n- * devDisabledInStaging: true,\n- * // The configuration property can be in the following formats\n- * // 'devDisabledIn${productFlavor}${buildType}'\n- * // 'devDisabledIn${buildType}'\n- *\n- * // the root of your project, i.e. where \"package.json\" lives\n- * root: \"../../\",\n- *\n- * // where to put the JS bundle asset in debug mode\n- * jsBundleDirDebug: \"$buildDir/intermediates/assets/debug\",\n- *\n- * // where to put the JS bundle asset in release mode\n- * jsBundleDirRelease: \"$buildDir/intermediates/assets/release\",\n- *\n- * // where to put drawable resources / React Native assets, e.g. the ones you use via\n- * // require('./image.png')), in debug mode\n- * resourcesDirDebug: \"$buildDir/intermediates/res/merged/debug\",\n- *\n- * // where to put drawable resources / React Native assets, e.g. the ones you use via\n- * // require('./image.png')), in release mode\n- * resourcesDirRelease: \"$buildDir/intermediates/res/merged/release\",\n- *\n- * // by default the gradle tasks are skipped if none of the JS files or assets change; this means\n- * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to\n- * // date; if you have any other folders that you want to ignore for performance reasons (gradle\n- * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/\n- * // for example, you might want to remove it from here.\n- * inputExcludes: [\"android/**\", \"ios/**\"],\n- *\n- * // override which node gets called and with what additional arguments\n- * nodeExecutableAndArgs: [\"node\"],\n- *\n- * // supply additional arguments to the packager\n- * extraPackagerArgs: []\n- * ]\n- */\n \n def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath()\n+def expoDebuggableVariants = ['debug']\n+// Override `debuggableVariants` for expo-updates debugging\n+if (System.getenv('EX_UPDATES_NATIVE_DEBUG') == \"1\") {\n+ react {\n+ expoDebuggableVariants = []\n+ }\n+}\n \n-def reactNativeRoot = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath()\n \n-project.ext.react = [\n- entryFile: [\"node\", \"-e\", \"require('expo/scripts/resolveAppEntry')\", projectRoot, \"android\"].execute(null, rootDir).text.trim(),\n- enableHermes: (findProperty('expo.jsEngine') ?: \"jsc\") == \"hermes\",\n- hermesCommand: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/sdks/hermesc/%OS-BIN%/hermesc\",\n- cliPath: \"${reactNativeRoot}/cli.js\",\n- composeSourceMapsPath: \"${reactNativeRoot}/scripts/compose-source-maps.js\",\n-]\n+/**\n+ * This is the configuration block to customize your React Native Android app.\n+ * By default you don't need to apply any configuration, just uncomment the lines you need.\n+ */\n+react {\n+ entryFile = file([\"node\", \"-e\", \"require('expo/scripts/resolveAppEntry')\", projectRoot, \"android\", \"absolute\"].execute(null, rootDir).text.trim())\n+ reactNativeDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()\n+ hermesCommand = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/sdks/hermesc/%OS-BIN%/hermesc\"\n+ debuggableVariants = expoDebuggableVariants\n+\n+ /* Folders */\n+ // The root of your project, i.e. where \"package.json\" lives. Default is '..'\n+ // root = file(\"../\")\n+ // The folder where the react-native NPM package is. Default is ../node_modules/react-native\n+ // reactNativeDir = file(\"../node_modules/react-native\")\n+ // The folder where the react-native Codegen package is. Default is ../node_modules/react-native-codegen\n+ // codegenDir = file(\"../node_modules/react-native-codegen\")\n+ // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js\n+ // cliFile = file(\"../node_modules/react-native/cli.js\")\n+\n+ /* Variants */\n+ // The list of variants to that are debuggable. For those we're going to\n+ // skip the bundling of the JS bundle and the assets. By default is just 'debug'.\n+ // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.\n+ // debuggableVariants = [\"liteDebug\", \"prodDebug\"]\n+\n+ /* Bundling */\n+ // A list containing the node command and its flags. Default is just 'node'.\n+ // nodeExecutableAndArgs = [\"node\"]\n+ //\n+ // The command to run when bundling. By default is 'bundle'\n+ // bundleCommand = \"ram-bundle\"\n+ //\n+ // The path to the CLI configuration file. Default is empty.\n+ // bundleConfig = file(../rn-cli.config.js)\n+ //\n+ // The name of the generated asset file containing your JS bundle\n+ // bundleAssetName = \"MyApplication.android.bundle\"\n+ //\n+ // The entry file for bundle generation. Default is 'index.android.js' or 'index.js'\n+ // entryFile = file(\"../js/MyApplication.android.js\")\n+ //\n+ // A list of extra flags to pass to the 'bundle' commands.\n+ // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle\n+ // extraPackagerArgs = []\n+\n+ /* Hermes Commands */\n+ // The hermes compiler command to run. By default it is 'hermesc'\n+ // hermesCommand = \"$rootDir/my-custom-hermesc/bin/hermesc\"\n+ //\n+ // The list of flags to pass to the Hermes compiler. By default is \"-O\", \"-output-source-map\"\n+ // hermesFlags = [\"-O\", \"-output-source-map\"]\n+}\n \n-apply from: new File(reactNativeRoot, \"react.gradle\")\n+// Override `hermesEnabled` by `expo.jsEngine`\n+ext {\n+ hermesEnabled = (findProperty('expo.jsEngine') ?: \"hermes\") == \"hermes\"\n+}\n \n /**\n- * Set this to true to create two separate APKs instead of one:\n- * - An APK that only works on ARM devices\n- * - An APK that only works on x86 devices\n- * The advantage is the size of the APK is reduced by about 4MB.\n- * Upload all the APKs to the Play Store and people will download\n- * the correct one based on the CPU architecture of their device.\n+ * Set this to true to create four separate APKs instead of one,\n+ * one for each native architecture. This is useful if you don't\n+ * use App Bundles (https://developer.android.com/guide/app-bundle/)\n+ * and want to have separate APKs to upload to the Play Store.\n */\n def enableSeparateBuildPerCPUArchitecture = false\n \n /**\n- * Run Proguard to shrink the Java bytecode in release builds.\n+ * Set this to true to Run Proguard on Release builds to minify the Java bytecode.\n */\n def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInReleaseBuilds') ?: false).toBoolean()\n \n /**\n- * The preferred build flavor of JavaScriptCore.\n+ * The preferred build flavor of JavaScriptCore (JSC)\n *\n * For example, to use the international variant, you can use:\n * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`\n *\n * The international variant includes ICU i18n library and necessary data\n * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that\n- * give correct results when using with locales other than en-US. Note that\n+ * give correct results when using with locales other than en-US. Note that\n * this variant is about 6MiB larger per architecture than default.\n */\n def jscFlavor = 'org.webkit:android-jsc:+'\n \n /**\n- * Whether to enable the Hermes VM.\n- *\n- * This should be set on project.ext.react and that value will be read here. If it is not set\n- * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode\n- * and the benefits of using Hermes will therefore be sharply reduced.\n- */\n-def enableHermes = project.ext.react.get(\"enableHermes\", false);\n-\n-/**\n- * Architectures to build native code for.\n+ * Private function to get the list of Native Architectures you want to build.\n+ * This reads the value from reactNativeArchitectures in your gradle.properties\n+ * file and works together with the --active-arch-only flag of react-native run-android.\n */\n def reactNativeArchitectures() {\n def value = project.getProperties().get(\"reactNativeArchitectures\")\n@@ -142,85 +113,13 @@ android {\n \n compileSdkVersion rootProject.ext.compileSdkVersion\n \n+ namespace \"com.helloworld\"\n defaultConfig {\n applicationId \"com.helloworld\"\n minSdkVersion rootProject.ext.minSdkVersion\n targetSdkVersion rootProject.ext.targetSdkVersion\n versionCode 1\n versionName \"1.0\"\n- buildConfigField \"boolean\", \"IS_NEW_ARCHITECTURE_ENABLED\", isNewArchitectureEnabled().toString()\n-\n- if (isNewArchitectureEnabled()) {\n- // We configure the NDK build only if you decide to opt-in for the New Architecture.\n- externalNativeBuild {\n- ndkBuild {\n- arguments \"APP_PLATFORM=android-21\",\n- \"APP_STL=c++_shared\",\n- \"NDK_TOOLCHAIN_VERSION=clang\",\n- \"GENERATED_SRC_DIR=$buildDir/generated/source\",\n- \"PROJECT_BUILD_DIR=$buildDir\",\n- \"REACT_ANDROID_DIR=${reactNativeRoot}/ReactAndroid\",\n- \"REACT_ANDROID_BUILD_DIR=${reactNativeRoot}/ReactAndroid/build\",\n- \"NODE_MODULES_DIR=$rootDir/../node_modules\"\n- cFlags \"-Wall\", \"-Werror\", \"-fexceptions\", \"-frtti\", \"-DWITH_INSPECTOR=1\"\n- cppFlags \"-std=c++17\"\n- // Make sure this target name is the same you specify inside the\n- // src/main/jni/Android.mk file for the `LOCAL_MODULE` variable.\n- targets \"helloworld_appmodules\"\n-\n- // Fix for windows limit on number of character in file paths and in command lines\n- if (Os.isFamily(Os.FAMILY_WINDOWS)) {\n- arguments \"NDK_APP_SHORT_COMMANDS=true\"\n- }\n- }\n- }\n- if (!enableSeparateBuildPerCPUArchitecture) {\n- ndk {\n- abiFilters (*reactNativeArchitectures())\n- }\n- }\n- }\n- }\n-\n- if (isNewArchitectureEnabled()) {\n- // We configure the NDK build only if you decide to opt-in for the New Architecture.\n- externalNativeBuild {\n- ndkBuild {\n- path \"$projectDir/src/main/jni/Android.mk\"\n- }\n- }\n- def reactAndroidProjectDir = project(':ReactAndroid').projectDir\n- def packageReactNdkDebugLibs = tasks.register(\"packageReactNdkDebugLibs\", Copy) {\n- dependsOn(\":ReactAndroid:packageReactNdkDebugLibsForBuck\")\n- from(\"$reactAndroidProjectDir/src/main/jni/prebuilt/lib\")\n- into(\"$buildDir/react-ndk/exported\")\n- }\n- def packageReactNdkReleaseLibs = tasks.register(\"packageReactNdkReleaseLibs\", Copy) {\n- dependsOn(\":ReactAndroid:packageReactNdkReleaseLibsForBuck\")\n- from(\"$reactAndroidProjectDir/src/main/jni/prebuilt/lib\")\n- into(\"$buildDir/react-ndk/exported\")\n- }\n- afterEvaluate {\n- // If you wish to add a custom TurboModule or component locally,\n- // you should uncomment this line.\n- // preBuild.dependsOn(\"generateCodegenArtifactsFromSchema\")\n- preDebugBuild.dependsOn(packageReactNdkDebugLibs)\n- preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)\n-\n- // Due to a bug inside AGP, we have to explicitly set a dependency\n- // between configureNdkBuild* tasks and the preBuild tasks.\n- // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732\n- configureNdkBuildRelease.dependsOn(preReleaseBuild)\n- configureNdkBuildDebug.dependsOn(preDebugBuild)\n- reactNativeArchitectures().each { architecture ->\n- tasks.findByName(\"configureNdkBuildDebug[${architecture}]\")?.configure {\n- dependsOn(\"preDebugBuild\")\n- }\n- tasks.findByName(\"configureNdkBuildRelease[${architecture}]\")?.configure {\n- dependsOn(\"preReleaseBuild\")\n- }\n- }\n- }\n }\n \n splits {\n@@ -247,6 +146,7 @@ android {\n // Caution! In production, you need to generate your own keystore file.\n // see https://reactnative.dev/docs/signed-apk-android.\n signingConfig signingConfigs.debug\n+ shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false)\n minifyEnabled enableProguardInReleaseBuilds\n proguardFiles getDefaultProguardFile(\"proguard-android.txt\"), \"proguard-rules.pro\"\n }\n@@ -257,11 +157,12 @@ android {\n variant.outputs.each { output ->\n // For each separate APK per architecture, set a unique version code as described here:\n // https://developer.android.com/studio/build/configure-apk-splits.html\n+ // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc.\n def versionCodes = [\"armeabi-v7a\": 1, \"x86\": 2, \"arm64-v8a\": 3, \"x86_64\": 4]\n def abi = output.getFilter(OutputFile.ABI)\n if (abi != null) { // null for the universal-debug, universal-release variants\n output.versionCodeOverride =\n- versionCodes.get(abi) * 1048576 + defaultConfig.versionCode\n+ defaultConfig.versionCode * 1000 + versionCodes.get(abi)\n }\n \n }\n@@ -289,10 +190,8 @@ android {\n }\n \n dependencies {\n- implementation fileTree(dir: \"libs\", include: [\"*.jar\"])\n-\n- //noinspection GradleDynamicVersion\n- implementation \"com.facebook.react:react-native:+\" // From node_modules\n+ // The version of react-native is set by the React Native Gradle Plugin\n+ implementation(\"com.facebook.react:react-android\")\n \n def isGifEnabled = (findProperty('expo.gif.enabled') ?: \"\") == \"true\";\n def isWebpEnabled = (findProperty('expo.webp.enabled') ?: \"\") == \"true\";\n@@ -301,76 +200,38 @@ dependencies {\n \n // If your app supports Android versions before Ice Cream Sandwich (API level 14)\n if (isGifEnabled || isWebpEnabled) {\n- implementation \"com.facebook.fresco:fresco:${frescoVersion}\"\n- implementation \"com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:fresco:${frescoVersion}\")\n+ implementation(\"com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}\")\n }\n \n if (isGifEnabled) {\n // For animated gif support\n- implementation \"com.facebook.fresco:animated-gif:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:animated-gif:${frescoVersion}\")\n }\n \n if (isWebpEnabled) {\n // For webp support\n- implementation \"com.facebook.fresco:webpsupport:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:webpsupport:${frescoVersion}\")\n if (isWebpAnimatedEnabled) {\n // Animated webp support\n- implementation \"com.facebook.fresco:animated-webp:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:animated-webp:${frescoVersion}\")\n }\n }\n \n- implementation \"androidx.swiperefreshlayout:swiperefreshlayout:1.0.0\"\n- debugImplementation(\"com.facebook.flipper:flipper:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.fbjni'\n- }\n+ implementation(\"androidx.swiperefreshlayout:swiperefreshlayout:1.0.0\")\n+\n+ debugImplementation(\"com.facebook.flipper:flipper:${FLIPPER_VERSION}\")\n debugImplementation(\"com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.flipper'\n exclude group:'com.squareup.okhttp3', module:'okhttp'\n }\n- debugImplementation(\"com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.flipper'\n- }\n+ debugImplementation(\"com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}\")\n \n- if (enableHermes) {\n- //noinspection GradleDynamicVersion\n- implementation(\"com.facebook.react:hermes-engine:+\") { // From node_modules\n- exclude group:'com.facebook.fbjni'\n- }\n+ if (hermesEnabled.toBoolean()) {\n+ implementation(\"com.facebook.react:hermes-android\")\n } else {\n implementation jscFlavor\n }\n }\n \n-if (isNewArchitectureEnabled()) {\n- // If new architecture is enabled, we let you build RN from source\n- // Otherwise we fallback to a prebuilt .aar bundled in the NPM package.\n- // This will be applied to all the imported transtitive dependency.\n- configurations.all {\n- resolutionStrategy.dependencySubstitution {\n- substitute(module(\"com.facebook.react:react-native\"))\n- .using(project(\":ReactAndroid\"))\n- .because(\"On New Architecture we're building React Native from source\")\n- substitute(module(\"com.facebook.react:hermes-engine\"))\n- .using(project(\":ReactAndroid:hermes-engine\"))\n- .because(\"On New Architecture we're building Hermes from source\")\n- }\n- }\n-}\n-\n-// Run this once to be able to run the application with BUCK\n-// puts all compile dependencies into folder libs for BUCK to use\n-task copyDownloadableDepsToLibs(type: Copy) {\n- from configurations.implementation\n- into 'libs'\n-}\n-\n apply from: new File([\"node\", \"--print\", \"require.resolve('@react-native-community/cli-platform-android/package.json')\"].execute(null, rootDir).text.trim(), \"../native_modules.gradle\");\n applyNativeModulesAppBuildGradle(project)\n-\n-def isNewArchitectureEnabled() {\n- // To opt-in for the New Architecture, you can either:\n- // - Set `newArchEnabled` to true inside the `gradle.properties` file\n- // - Invoke gradle with `-newArchEnabled=true`\n- // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`\n- return project.hasProperty(\"newArchEnabled\") && project.newArchEnabled == \"true\"\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/build_defs.bzl b/templates/expo-template-bare-minimum/android/app/build_defs.bzl\ndeleted file mode 100644\nindex fff270f8d1..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/build_defs.bzl\n+++ /dev/null\n@@ -1,19 +0,0 @@\n-\"\"\"Helper definitions to glob .aar and .jar targets\"\"\"\n-\n-def create_aar_targets(aarfiles):\n- for aarfile in aarfiles:\n- name = \"aars__\" + aarfile[aarfile.rindex(\"/\") + 1:aarfile.rindex(\".aar\")]\n- lib_deps.append(\":\" + name)\n- android_prebuilt_aar(\n- name = name,\n- aar = aarfile,\n- )\n-\n-def create_jar_targets(jarfiles):\n- for jarfile in jarfiles:\n- name = \"jars__\" + jarfile[jarfile.rindex(\"/\") + 1:jarfile.rindex(\".jar\")]\n- lib_deps.append(\":\" + name)\n- prebuilt_jar(\n- name = name,\n- binary_jar = jarfile,\n- )\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java b/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\nindex 8cddb11cb2..595dd5831c 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\n@@ -1,5 +1,5 @@\n /**\n- * Copyright (c) Facebook, Inc. and its affiliates.\n+ * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n *

This source code is licensed under the MIT license found in the LICENSE file in the root\n * directory of this source tree.\n@@ -17,22 +17,27 @@ import com.facebook.flipper.plugins.inspector.DescriptorMapping;\n import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;\n import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;\n import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;\n-import com.facebook.flipper.plugins.react.ReactFlipperPlugin;\n import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;\n+import com.facebook.react.ReactInstanceEventListener;\n import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.bridge.ReactContext;\n import com.facebook.react.modules.network.NetworkingModule;\n import okhttp3.OkHttpClient;\n \n+/**\n+ * Class responsible of loading Flipper inside your React Native application. This is the debug\n+ * flavor of it. Here you can add your own plugins and customize the Flipper setup.\n+ */\n public class ReactNativeFlipper {\n public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {\n if (FlipperUtils.shouldEnableFlipper(context)) {\n final FlipperClient client = AndroidFlipperClient.getInstance(context);\n+\n client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));\n- client.addPlugin(new ReactFlipperPlugin());\n client.addPlugin(new DatabasesFlipperPlugin(context));\n client.addPlugin(new SharedPreferencesFlipperPlugin(context));\n client.addPlugin(CrashReporterPlugin.getInstance());\n+\n NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();\n NetworkingModule.setCustomClientBuilder(\n new NetworkingModule.CustomClientBuilder() {\n@@ -43,12 +48,13 @@ public class ReactNativeFlipper {\n });\n client.addPlugin(networkFlipperPlugin);\n client.start();\n+\n // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized\n // Hence we run if after all native modules have been initialized\n ReactContext reactContext = reactInstanceManager.getCurrentReactContext();\n if (reactContext == null) {\n reactInstanceManager.addReactInstanceEventListener(\n- new ReactInstanceManager.ReactInstanceEventListener() {\n+ new ReactInstanceEventListener() {\n @Override\n public void onReactContextInitialized(ReactContext reactContext) {\n reactInstanceManager.removeReactInstanceEventListener(this);\n@@ -66,4 +72,4 @@ public class ReactNativeFlipper {\n }\n }\n }\n-}\n\\ No newline at end of file\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml b/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\nindex 0cad655b33..6536fc03ad 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n@@ -1,4 +1,4 @@\n-\n+\n \n \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\nindex 8e13797d9b..7e2823fb6c 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n@@ -5,7 +5,8 @@ import android.os.Bundle;\n \n import com.facebook.react.ReactActivity;\n import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactActivityDelegate;\n \n import expo.modules.ReactActivityDelegateWrapper;\n \n@@ -29,15 +30,20 @@ public class MainActivity extends ReactActivity {\n }\n \n /**\n- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n- * (Paper).\n+ * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link\n+ * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React\n+ * (aka React 18) with two boolean flags.\n */\n @Override\n protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n- new MainActivityDelegate(this, getMainComponentName())\n- );\n+ return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, new DefaultReactActivityDelegate(\n+ this,\n+ getMainComponentName(),\n+ // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n+ DefaultNewArchitectureEntryPoint.getFabricEnabled(), // fabricEnabled\n+ // If you opted-in for the New Architecture, we enable Concurrent React (i.e. React 18).\n+ DefaultNewArchitectureEntryPoint.getConcurrentReactEnabled() // concurrentRootEnabled\n+ ));\n }\n \n /**\n@@ -59,25 +65,4 @@ public class MainActivity extends ReactActivity {\n // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n super.invokeDefaultOnBackPressed();\n }\n-\n- public static class MainActivityDelegate extends ReactActivityDelegate {\n- public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n- super(activity, mainComponentName);\n- }\n-\n- @Override\n- protected ReactRootView createRootView() {\n- ReactRootView reactRootView = new ReactRootView(getContext());\n- // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n- reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n- return reactRootView;\n- }\n-\n- @Override\n- protected boolean isConcurrentRootEnabled() {\n- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\nindex 7deb688b07..31c2b288c1 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n@@ -1,69 +1,70 @@\n package com.helloworld;\n \n import android.app.Application;\n-import android.content.Context;\n import android.content.res.Configuration;\n import androidx.annotation.NonNull;\n \n import com.facebook.react.PackageList;\n import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.ReactNativeHost;\n import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactNativeHost;\n import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n \n import expo.modules.ApplicationLifecycleDispatcher;\n import expo.modules.ReactNativeHostWrapper;\n \n-import java.lang.reflect.InvocationTargetException;\n import java.util.List;\n \n public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n \n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n+ private final ReactNativeHost mReactNativeHost =\n+ new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) {\n+ @Override\n+ public boolean getUseDeveloperSupport() {\n+ return BuildConfig.DEBUG;\n+ }\n \n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n+ @Override\n+ protected List getPackages() {\n+ @SuppressWarnings(\"UnnecessaryLocalVariable\")\n+ List packages = new PackageList(this).getPackages();\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return packages;\n+ }\n \n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n+ @Override\n+ protected String getJSMainModuleName() {\n+ return \"index\";\n+ }\n+\n+ @Override\n+ protected boolean isNewArchEnabled() {\n+ return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n+ }\n+\n+ @Override\n+ protected Boolean isHermesEnabled() {\n+ return BuildConfig.IS_HERMES_ENABLED;\n+ }\n+ });\n \n @Override\n public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n+ return mReactNativeHost;\n }\n \n @Override\n public void onCreate() {\n super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ DefaultNewArchitectureEntryPoint.load();\n+ }\n+ ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n ApplicationLifecycleDispatcher.onApplicationCreate(this);\n }\n \n@@ -72,35 +73,4 @@ public class MainApplication extends Application implements ReactApplication {\n super.onConfigurationChanged(newConfig);\n ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex 7665dd923f..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,117 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.fabric.ReactNativeConfig;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- ReactNativeConfig.DEFAULT_CONFIG,\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex cda1391225..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source\n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_runtime \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 0ac23cc626..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,24 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex 0fa43fa69a..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex dbbdc3d132..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 25f27722d0..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(std::string name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 8f7edffd64..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,61 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java b/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java\nnew file mode 100644\nindex 0000000000..b510364404\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java\n@@ -0,0 +1,20 @@\n+/**\n+ * Copyright (c) Meta Platforms, Inc. and affiliates.\n+ *\n+ *

This source code is licensed under the MIT license found in the LICENSE file in the root\n+ * directory of this source tree.\n+ */\n+package com.helloworld;\n+\n+import android.content.Context;\n+import com.facebook.react.ReactInstanceManager;\n+\n+/**\n+ * Class responsible of loading Flipper inside your React Native application. This is the release\n+ * flavor of it so it's empty as we don't want to load Flipper.\n+ */\n+public class ReactNativeFlipper {\n+ public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {\n+ // Do nothing as we don't want to initialize Flipper on Release.\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/build.gradle b/templates/expo-template-bare-minimum/android/build.gradle\nindex f259b31a11..e5fda82878 100644\n--- a/templates/expo-template-bare-minimum/android/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/build.gradle\n@@ -1,49 +1,31 @@\n-import org.apache.tools.ant.taskdefs.condition.Os\n-\n // Top-level build file where you can add configuration options common to all sub-projects/modules.\n+\n buildscript {\n ext {\n- buildToolsVersion = findProperty('android.buildToolsVersion') ?: '31.0.0'\n+ buildToolsVersion = findProperty('android.buildToolsVersion') ?: '33.0.0'\n minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '21')\n- compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '31')\n- targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '31')\n+ compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '33')\n+ targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '33')\n if (findProperty('android.kotlinVersion')) {\n kotlinVersion = findProperty('android.kotlinVersion')\n }\n frescoVersion = findProperty('expo.frescoVersion') ?: '2.5.0'\n \n- if (System.properties['os.arch'] == 'aarch64') {\n- // For M1 Users we need to use the NDK 24 which added support for aarch64\n- ndkVersion = '24.0.8215888'\n- } else {\n- // Otherwise we default to the side-by-side NDK version from AGP.\n- ndkVersion = '21.4.7075529'\n- }\n+ // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.\n+ ndkVersion = \"23.1.7779620\"\n }\n repositories {\n google()\n mavenCentral()\n }\n dependencies {\n- classpath('com.android.tools.build:gradle:7.1.1')\n+ classpath('com.android.tools.build:gradle:7.4.1')\n classpath('com.facebook.react:react-native-gradle-plugin')\n- classpath('de.undercouch:gradle-download-task:5.0.1')\n- // NOTE: Do not place your application dependencies here; they belong\n- // in the individual module build.gradle files\n }\n }\n \n-def REACT_NATIVE_VERSION = new File(['node', '--print',\"JSON.parse(require('fs').readFileSync(require.resolve('react-native/package.json'), 'utf-8')).version\"].execute(null, rootDir).text.trim())\n-\n allprojects {\n- configurations.all {\n- resolutionStrategy {\n- force \"com.facebook.react:react-native:\" + REACT_NATIVE_VERSION\n- }\n- }\n-\n repositories {\n- mavenLocal()\n maven {\n // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm\n url(new File(['node', '--print', \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), '../android'))\n@@ -54,19 +36,7 @@ allprojects {\n }\n \n google()\n- mavenCentral {\n- // We don't want to fetch react-native from Maven Central as there are\n- // older versions over there.\n- content {\n- excludeGroup 'com.facebook.react'\n- }\n- }\n+ mavenCentral()\n maven { url 'https://www.jitpack.io' }\n }\n }\n-\n-configurations.all {\n- resolutionStrategy {\n- force 'com.facebook.react:react-native:0.69.6'\n- }\n-}\n\\ No newline at end of file\ndiff --git a/templates/expo-template-bare-minimum/android/gitignore b/templates/expo-template-bare-minimum/android/gitignore\nindex 64436baaf5..877b87e9a5 100644\n--- a/templates/expo-template-bare-minimum/android/gitignore\n+++ b/templates/expo-template-bare-minimum/android/gitignore\n@@ -11,11 +11,5 @@ local.properties\n *.iml\n *.hprof\n \n-# BUCK\n-buck-out/\n-\\.buckd/\n-*.keystore\n-!debug.keystore\n-\n # Bundle artifacts\n *.jsbundle\ndiff --git a/templates/expo-template-bare-minimum/android/gradle.properties b/templates/expo-template-bare-minimum/android/gradle.properties\nindex fab3fb6bcf..9911ac4afd 100644\n--- a/templates/expo-template-bare-minimum/android/gradle.properties\n+++ b/templates/expo-template-bare-minimum/android/gradle.properties\n@@ -42,7 +42,7 @@ newArchEnabled=false\n \n # The hosted JavaScript engine\n # Supported values: expo.jsEngine = \"hermes\" | \"jsc\"\n-expo.jsEngine=jsc\n+expo.jsEngine=hermes\n \n # Enable GIF support in React Native images (~200 B increase)\n expo.gif.enabled=true\ndiff --git a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar\nindex 7454180f2a..249e5832f0 100644\nBinary files a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar and b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar differ\ndiff --git a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\nindex 669386b870..8fad3f5a98 100644\n--- a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\n+++ b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\n@@ -1,5 +1,5 @@\n distributionBase=GRADLE_USER_HOME\n distributionPath=wrapper/dists\n-distributionUrl=https\\://services.gradle.org/distributions/gradle-7.3.3-all.zip\n+distributionUrl=https\\://services.gradle.org/distributions/gradle-7.5.1-all.zip\n zipStoreBase=GRADLE_USER_HOME\n zipStorePath=wrapper/dists\ndiff --git a/templates/expo-template-bare-minimum/android/gradlew b/templates/expo-template-bare-minimum/android/gradlew\nindex 1b6c787337..a69d9cb6c2 100755\n--- a/templates/expo-template-bare-minimum/android/gradlew\n+++ b/templates/expo-template-bare-minimum/android/gradlew\n@@ -205,6 +205,12 @@ set -- \\\n org.gradle.wrapper.GradleWrapperMain \\\n \"$@\"\n \n+# Stop when \"xargs\" is not available.\n+if ! command -v xargs >/dev/null 2>&1\n+then\n+ die \"xargs is not available\"\n+fi\n+\n # Use \"xargs\" to parse quoted args.\n #\n # With -n1 it outputs one arg per line, with the quotes and backslashes removed.\ndiff --git a/templates/expo-template-bare-minimum/android/gradlew.bat b/templates/expo-template-bare-minimum/android/gradlew.bat\nindex ac1b06f938..53a6b238d4 100644\n--- a/templates/expo-template-bare-minimum/android/gradlew.bat\n+++ b/templates/expo-template-bare-minimum/android/gradlew.bat\n@@ -14,7 +14,7 @@\n @rem limitations under the License.\r\n @rem\r\n \r\n-@if \"%DEBUG%\" == \"\" @echo off\r\n+@if \"%DEBUG%\"==\"\" @echo off\r\n @rem ##########################################################################\r\n @rem\r\n @rem Gradle startup script for Windows\r\n@@ -25,7 +25,7 @@\n if \"%OS%\"==\"Windows_NT\" setlocal\r\n \r\n set DIRNAME=%~dp0\r\n-if \"%DIRNAME%\" == \"\" set DIRNAME=.\r\n+if \"%DIRNAME%\"==\"\" set DIRNAME=.\r\n set APP_BASE_NAME=%~n0\r\n set APP_HOME=%DIRNAME%\r\n \r\n@@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome\n \r\n set JAVA_EXE=java.exe\r\n %JAVA_EXE% -version >NUL 2>&1\r\n-if \"%ERRORLEVEL%\" == \"0\" goto execute\r\n+if %ERRORLEVEL% equ 0 goto execute\r\n \r\n echo.\r\n echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\r\n@@ -75,13 +75,15 @@ set CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\n \r\n :end\r\n @rem End local scope for the variables with windows NT shell\r\n-if \"%ERRORLEVEL%\"==\"0\" goto mainEnd\r\n+if %ERRORLEVEL% equ 0 goto mainEnd\r\n \r\n :fail\r\n rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\r\n rem the _cmd.exe /c_ return code!\r\n-if not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\r\n-exit /b 1\r\n+set EXIT_CODE=%ERRORLEVEL%\r\n+if %EXIT_CODE% equ 0 set EXIT_CODE=1\r\n+if not \"\"==\"%GRADLE_EXIT_CONSOLE%\" exit %EXIT_CODE%\r\n+exit /b %EXIT_CODE%\r\n \r\n :mainEnd\r\n if \"%OS%\"==\"Windows_NT\" endlocal\r\ndiff --git a/templates/expo-template-bare-minimum/android/settings.gradle b/templates/expo-template-bare-minimum/android/settings.gradle\nindex b3332319f9..1dc416e7c1 100644\n--- a/templates/expo-template-bare-minimum/android/settings.gradle\n+++ b/templates/expo-template-bare-minimum/android/settings.gradle\n@@ -8,10 +8,3 @@ applyNativeModulesSettingsGradle(settings)\n \n include ':app'\n includeBuild(new File([\"node\", \"--print\", \"require.resolve('react-native-gradle-plugin/package.json')\"].execute(null, rootDir).text.trim()).getParentFile())\n-\n-if (settings.hasProperty(\"newArchEnabled\") && settings.newArchEnabled == \"true\") {\n- include(\":ReactAndroid\")\n- project(\":ReactAndroid\").projectDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../ReactAndroid\");\n- include(\":ReactAndroid:hermes-engine\")\n- project(\":ReactAndroid:hermes-engine\").projectDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../ReactAndroid/hermes-engine\");\n-}\ndiff --git a/templates/expo-template-bare-minimum/gitignore b/templates/expo-template-bare-minimum/gitignore\nindex c8eb0f9a64..df57ba88a1 100644\n--- a/templates/expo-template-bare-minimum/gitignore\n+++ b/templates/expo-template-bare-minimum/gitignore\n@@ -30,6 +30,9 @@ build/\n local.properties\n *.iml\n *.hprof\n+.cxx/\n+*.keystore\n+!debug.keystore\n \n # node.js\n #\n@@ -37,18 +40,15 @@ node_modules/\n npm-debug.log\n yarn-error.log\n \n-# BUCK\n-buck-out/\n-\\.buckd/\n-*.keystore\n-!debug.keystore\n-\n # Bundle artifacts\n *.jsbundle\n \n # CocoaPods\n /ios/Pods/\n \n+# Temporary files created by Metro to check the health of the file watcher\n+.metro-health-check*\n+\n # Expo\n .expo/\n web-build/\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\nindex a4a049f05d..98e6c2afea 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n@@ -214,7 +214,7 @@\n \t\t\t);\n \t\t\trunOnlyForDeploymentPostprocessing = 0;\n \t\t\tshellPath = /bin/sh;\n-\t\t\tshellScript = \"if [[ -f \\\"$PODS_ROOT/../.xcode.env\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env\\\"\\nfi\\nif [[ -f \\\"$PODS_ROOT/../.xcode.env.local\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env.local\\\"\\nfi\\n\\n# The project root by default is one level up from the ios directory\\nexport PROJECT_ROOT=\\\"$PROJECT_DIR\\\"/..\\n\\nif [[ \\\"$CONFIGURATION\\\" = *Debug* ]]; then\\n export SKIP_BUNDLING=1\\nfi\\n`\\\"$NODE_BINARY\\\" --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\\\"`\\n\\n\";\n+\t\t\tshellScript = \"if [[ -f \\\"$PODS_ROOT/../.xcode.env\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env\\\"\\nfi\\nif [[ -f \\\"$PODS_ROOT/../.xcode.env.local\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env.local\\\"\\nfi\\n\\n# The project root by default is one level up from the ios directory\\nexport PROJECT_ROOT=\\\"$PROJECT_DIR\\\"/..\\n\\nif [[ \\\"$CONFIGURATION\\\" = *Debug* ]]; then\\n export SKIP_BUNDLING=1\\nfi\\nif [[ -z \\\"$ENTRY_FILE\\\" ]]; then\\n # Set the entry JS file using the bundler's entry resolution.\\n export ENTRY_FILE=\\\"$(\\\"$NODE_BINARY\\\" -e \\\"require('expo/scripts/resolveAppEntry')\\\" $PROJECT_ROOT ios relative | tail -n 1)\\\"\\nfi\\n\\n`\\\"$NODE_BINARY\\\" --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\\\"`\\n\\n\";\n \t\t};\n \t\t08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = {\n \t\t\tisa = PBXShellScriptBuildPhase;\n@@ -308,8 +308,9 @@\n \t\t\t\t\t\"FB_SONARKIT_ENABLED=1\",\n \t\t\t\t);\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n+ MARKETING_VERSION = 1.0;\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n \t\t\t\t\t\"-ObjC\",\n@@ -331,8 +332,9 @@\n \t\t\t\tCLANG_ENABLE_MODULES = YES;\n \t\t\t\tCURRENT_PROJECT_VERSION = 1;\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n+ MARKETING_VERSION = 1.0;\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n \t\t\t\t\t\"-ObjC\",\n@@ -392,7 +394,7 @@\n \t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n \t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n \t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n \t\t\t\tLIBRARY_SEARCH_PATHS = \"\\\"$(inherited)\\\"\";\n \t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n@@ -441,7 +443,7 @@\n \t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n \t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n \t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n \t\t\t\tLIBRARY_SEARCH_PATHS = \"\\\"$(inherited)\\\"\";\n \t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\nindex f7d2972042..1658a437eb 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\n@@ -1,9 +1,7 @@\n-#import \n-#import \n+#import \n #import \n-\n #import \n \n-@interface AppDelegate : EXAppDelegateWrapper \n+@interface AppDelegate : EXAppDelegateWrapper\n \n @end\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\nindex a6e13e11ab..8cb5aef137 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\n@@ -1,100 +1,40 @@\n #import \"AppDelegate.h\"\n \n-#import \n #import \n-#import \n #import \n-#import \n-\n-#import \n-\n-#if RCT_NEW_ARCH_ENABLED\n-#import \n-#import \n-#import \n-#import \n-#import \n-#import \n-\n-#import \n-\n-static NSString *const kRNConcurrentRoot = @\"concurrentRoot\";\n-\n-@interface AppDelegate () {\n- RCTTurboModuleManager *_turboModuleManager;\n- RCTSurfacePresenterBridgeAdapter *_bridgeAdapter;\n- std::shared_ptr _reactNativeConfig;\n- facebook::react::ContextContainer::Shared _contextContainer;\n-}\n-@end\n-#endif\n \n @implementation AppDelegate\n \n - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions\n {\n- RCTAppSetupPrepareApp(application);\n-\n- RCTBridge *bridge = [self.reactDelegate createBridgeWithDelegate:self launchOptions:launchOptions];\n-\n-#if RCT_NEW_ARCH_ENABLED\n- _contextContainer = std::make_shared();\n- _reactNativeConfig = std::make_shared();\n- _contextContainer->insert(\"ReactNativeConfig\", _reactNativeConfig);\n- _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer];\n- bridge.surfacePresenter = _bridgeAdapter.surfacePresenter;\n-#endif\n-\n- NSDictionary *initProps = [self prepareInitialProps];\n- UIView *rootView = [self.reactDelegate createRootViewWithBridge:bridge moduleName:@\"main\" initialProperties:initProps];\n-\n- rootView.backgroundColor = [UIColor whiteColor];\n- self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];\n- UIViewController *rootViewController = [self.reactDelegate createRootViewController];\n- rootViewController.view = rootView;\n- self.window.rootViewController = rootViewController;\n- [self.window makeKeyAndVisible];\n+ self.moduleName = @\"main\";\n \n- [super application:application didFinishLaunchingWithOptions:launchOptions];\n+ // You can add your custom initial props in the dictionary below.\n+ // They will be passed down to the ViewController used by React Native.\n+ self.initialProps = @{};\n \n- return YES;\n+ return [super application:application didFinishLaunchingWithOptions:launchOptions];\n }\n \n-- (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge\n+- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n {\n- // If you'd like to export some custom RCTBridgeModules, add them here!\n- return @[];\n+#if DEBUG\n+ return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"index\"];\n+#else\n+ return [[NSBundle mainBundle] URLForResource:@\"main\" withExtension:@\"jsbundle\"];\n+#endif\n }\n \n /// This method controls whether the `concurrentRoot`feature of React18 is turned on or off.\n ///\n /// @see: https://reactjs.org/blog/2022/03/29/react-v18.html\n /// @note: This requires to be rendering on Fabric (i.e. on the New Architecture).\n-/// @return: `true` if the `concurrentRoot` feture is enabled. Otherwise, it returns `false`.\n+/// @return: `true` if the `concurrentRoot` feature is enabled. Otherwise, it returns `false`.\n - (BOOL)concurrentRootEnabled\n {\n- // Switch this bool to turn on and off the concurrent root\n return true;\n }\n \n-- (NSDictionary *)prepareInitialProps\n-{\n- NSMutableDictionary *initProps = [NSMutableDictionary new];\n-#if RCT_NEW_ARCH_ENABLED\n- initProps[kRNConcurrentRoot] = @([self concurrentRootEnabled]);\n-#endif\n- return initProps;\n-}\n-\n-- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n-{\n-#if DEBUG\n- return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"index\"];\n-#else\n- return [[NSBundle mainBundle] URLForResource:@\"main\" withExtension:@\"jsbundle\"];\n-#endif\n-}\n-\n // Linking API\n - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options {\n return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options];\n@@ -124,43 +64,4 @@ static NSString *const kRNConcurrentRoot = @\"concurrentRoot\";\n return [super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];\n }\n \n-#if RCT_NEW_ARCH_ENABLED\n-\n-#pragma mark - RCTCxxBridgeDelegate\n-\n-- (std::unique_ptr)jsExecutorFactoryForBridge:(RCTBridge *)bridge\n-{\n- _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge\n- delegate:self\n- jsInvoker:bridge.jsCallInvoker];\n- return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager);\n-}\n-\n-#pragma mark RCTTurboModuleManagerDelegate\n-\n-- (Class)getModuleClassFromName:(const char *)name\n-{\n- return RCTCoreModulesClassProvider(name);\n-}\n-\n-- (std::shared_ptr)getTurboModule:(const std::string &)name\n- jsInvoker:(std::shared_ptr)jsInvoker\n-{\n- return nullptr;\n-}\n-\n-- (std::shared_ptr)getTurboModule:(const std::string &)name\n- initParams:\n- (const facebook::react::ObjCTurboModule::InitParams &)params\n-{\n- return nullptr;\n-}\n-\n-- (id)getModuleInstanceFromClass:(Class)moduleClass\n-{\n- return RCTAppSetupDefaultModuleFromClass(moduleClass);\n-}\n-\n-#endif\n-\n @end\ndiff --git a/templates/expo-template-bare-minimum/ios/Podfile b/templates/expo-template-bare-minimum/ios/Podfile\nindex 91612acca9..e523ea5cac 100644\n--- a/templates/expo-template-bare-minimum/ios/Podfile\n+++ b/templates/expo-template-bare-minimum/ios/Podfile\n@@ -5,36 +5,67 @@ require File.join(File.dirname(`node --print \"require.resolve('@react-native-com\n require 'json'\n podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}\n \n-platform :ios, podfile_properties['ios.deploymentTarget'] || '12.4'\n+ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0'\n+ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = '1' if podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR'] == 'true'\n+\n+platform :ios, podfile_properties['ios.deploymentTarget'] || '13.0'\n install! 'cocoapods',\n :deterministic_uuids => false\n \n+prepare_react_native_project!\n+\n+# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set.\n+# because `react-native-flipper` depends on (FlipperKit,...), which will be excluded. To fix this,\n+# you can also exclude `react-native-flipper` in `react-native.config.js`\n+#\n+# ```js\n+# module.exports = {\n+# dependencies: {\n+# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),\n+# }\n+# }\n+# ```\n+flipper_config = FlipperConfiguration.disabled\n+if ENV['NO_FLIPPER'] == '1' then\n+ # Explicitly disabled through environment variables\n+ flipper_config = FlipperConfiguration.disabled\n+elsif podfile_properties.key?('ios.flipper') then\n+ # Configure Flipper in Podfile.properties.json\n+ if podfile_properties['ios.flipper'] == 'true' then\n+ flipper_config = FlipperConfiguration.enabled([\"Debug\", \"Release\"])\n+ elsif podfile_properties['ios.flipper'] != 'false' then\n+ flipper_config = FlipperConfiguration.enabled([\"Debug\", \"Release\"], { 'Flipper' => podfile_properties['ios.flipper'] })\n+ end\n+end\n+\n target 'HelloWorld' do\n use_expo_modules!\n config = use_native_modules!\n \n use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks']\n+ use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS']\n \n # Flags change depending on the env values.\n flags = get_default_flags()\n \n use_react_native!(\n :path => config[:reactNativePath],\n- :hermes_enabled => flags[:hermes_enabled] || podfile_properties['expo.jsEngine'] == 'hermes',\n+ :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes',\n :fabric_enabled => flags[:fabric_enabled],\n # An absolute path to your application root.\n- :app_path => \"#{Dir.pwd}/..\"\n+ :app_path => \"#{Pod::Config.instance.installation_root}/..\",\n+ # Note that if you have use_frameworks! enabled, Flipper will not work if enabled\n+ :flipper_configuration => flipper_config\n )\n \n- # Uncomment to opt-in to using Flipper\n- # Note that if you have use_frameworks! enabled, Flipper will not work\n- #\n- # if !ENV['CI']\n- # use_flipper!()\n- # end\n-\n post_install do |installer|\n- react_native_post_install(installer)\n+ react_native_post_install(\n+ installer,\n+ config[:reactNativePath],\n+ # Set `mac_catalyst_enabled` to `true` in order to apply patches\n+ # necessary for Mac Catalyst builds\n+ :mac_catalyst_enabled => false\n+ )\n __apply_Xcode_12_5_M1_post_install_workaround(installer)\n \n # This is necessary for Xcode 14, because it signs resource bundles by default\ndiff --git a/templates/expo-template-bare-minimum/ios/Podfile.properties.json b/templates/expo-template-bare-minimum/ios/Podfile.properties.json\nindex f6d872e81a..b1bd45da51 100644\n--- a/templates/expo-template-bare-minimum/ios/Podfile.properties.json\n+++ b/templates/expo-template-bare-minimum/ios/Podfile.properties.json\n@@ -1,3 +1,3 @@\n {\n- \"expo.jsEngine\": \"jsc\"\n+ \"expo.jsEngine\": \"hermes\"\n }\ndiff --git a/templates/expo-template-bare-minimum/package.json b/templates/expo-template-bare-minimum/package.json\nindex d5ca09a584..d1fcd513cc 100644\n--- a/templates/expo-template-bare-minimum/package.json\n+++ b/templates/expo-template-bare-minimum/package.json\n@@ -1,7 +1,7 @@\n {\n \"name\": \"expo-template-bare-minimum\",\n \"description\": \"This bare project template includes a minimal setup for using unimodules with React Native.\",\n- \"version\": \"46.0.37\",\n+ \"version\": \"48.0.21\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"start\": \"expo start --dev-client\",\n@@ -10,15 +10,13 @@\n \"web\": \"expo start --web\"\n },\n \"dependencies\": {\n- \"expo\": \"~46.0.21\",\n- \"expo-splash-screen\": \"~0.16.2\",\n- \"expo-status-bar\": \"~1.4.0\",\n- \"react\": \"18.0.0\",\n- \"react-dom\": \"18.0.0\",\n- \"react-native\": \"0.69.9\",\n- \"react-native-web\": \"~0.18.7\"\n+ \"expo\": \"~48.0.21\",\n+ \"expo-splash-screen\": \"~0.18.2\",\n+ \"expo-status-bar\": \"~1.4.4\",\n+ \"react\": \"18.2.0\",\n+ \"react-native\": \"0.71.14\"\n },\n \"devDependencies\": {\n- \"@babel/core\": \"^7.12.9\"\n+ \"@babel/core\": \"^7.20.0\"\n }\n }\n","47..48":"diff --git a/templates/expo-template-bare-minimum/.buckconfig b/templates/expo-template-bare-minimum/.buckconfig\ndeleted file mode 100644\nindex 934256cb29..0000000000\n--- a/templates/expo-template-bare-minimum/.buckconfig\n+++ /dev/null\n@@ -1,6 +0,0 @@\n-\n-[android]\n- target = Google Inc.:Google APIs:23\n-\n-[maven_repositories]\n- central = https://repo1.maven.org/maven2\ndiff --git a/templates/expo-template-bare-minimum/.npmignore b/templates/expo-template-bare-minimum/.npmignore\nindex 35490b6612..4e6ce00391 100644\n--- a/templates/expo-template-bare-minimum/.npmignore\n+++ b/templates/expo-template-bare-minimum/.npmignore\n@@ -20,3 +20,4 @@ ios/Pods\n android/.build\n android/app/build\n android/.gradle\n+ios/.xcode.env.local\ndiff --git a/templates/expo-template-bare-minimum/android/app/BUCK b/templates/expo-template-bare-minimum/android/app/BUCK\ndeleted file mode 100644\nindex 0e77904834..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/BUCK\n+++ /dev/null\n@@ -1,55 +0,0 @@\n-# To learn about Buck see [Docs](https://buckbuild.com/).\n-# To run your application with Buck:\n-# - install Buck\n-# - `npm start` - to start the packager\n-# - `cd android`\n-# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname \"CN=Android Debug,O=Android,C=US\"`\n-# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck\n-# - `buck install -r android/app` - compile, install and run application\n-#\n-\n-load(\":build_defs.bzl\", \"create_aar_targets\", \"create_jar_targets\")\n-\n-lib_deps = []\n-\n-create_aar_targets(glob([\"libs/*.aar\"]))\n-\n-create_jar_targets(glob([\"libs/*.jar\"]))\n-\n-android_library(\n- name = \"all-libs\",\n- exported_deps = lib_deps,\n-)\n-\n-android_library(\n- name = \"app-code\",\n- srcs = glob([\n- \"src/main/java/**/*.java\",\n- ]),\n- deps = [\n- \":all-libs\",\n- \":build_config\",\n- \":res\",\n- ],\n-)\n-\n-android_build_config(\n- name = \"build_config\",\n- package = \"com.helloworld\",\n-)\n-\n-android_resource(\n- name = \"res\",\n- package = \"com.helloworld\",\n- res = \"src/main/res\",\n-)\n-\n-android_binary(\n- name = \"app\",\n- keystore = \"//android/keystores:debug\",\n- manifest = \"src/main/AndroidManifest.xml\",\n- package_type = \"debug\",\n- deps = [\n- \":app-code\",\n- ],\n-)\ndiff --git a/templates/expo-template-bare-minimum/android/app/build.gradle b/templates/expo-template-bare-minimum/android/app/build.gradle\nindex 648135611c..189390e7e3 100644\n--- a/templates/expo-template-bare-minimum/android/app/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/app/build.gradle\n@@ -1,135 +1,107 @@\n apply plugin: \"com.android.application\"\n+apply plugin: \"com.facebook.react\"\n \n import com.android.build.OutputFile\n \n-/**\n- * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets\n- * and bundleReleaseJsAndAssets).\n- * These basically call `react-native bundle` with the correct arguments during the Android build\n- * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the\n- * bundle directly from the development server. Below you can see all the possible configurations\n- * and their defaults. If you decide to add a configuration block, make sure to add it before the\n- * `apply from: \"../../node_modules/react-native/react.gradle\"` line.\n- *\n- * project.ext.react = [\n- * // the name of the generated asset file containing your JS bundle\n- * bundleAssetName: \"index.android.bundle\",\n- *\n- * // the entry file for bundle generation. If none specified and\n- * // \"index.android.js\" exists, it will be used. Otherwise \"index.js\" is\n- * // default. Can be overridden with ENTRY_FILE environment variable.\n- * entryFile: \"index.android.js\",\n- *\n- * // https://reactnative.dev/docs/performance#enable-the-ram-format\n- * bundleCommand: \"ram-bundle\",\n- *\n- * // whether to bundle JS and assets in debug mode\n- * bundleInDebug: false,\n- *\n- * // whether to bundle JS and assets in release mode\n- * bundleInRelease: true,\n- *\n- * // whether to bundle JS and assets in another build variant (if configured).\n- * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants\n- * // The configuration property can be in the following formats\n- * // 'bundleIn${productFlavor}${buildType}'\n- * // 'bundleIn${buildType}'\n- * // bundleInFreeDebug: true,\n- * // bundleInPaidRelease: true,\n- * // bundleInBeta: true,\n- *\n- * // whether to disable dev mode in custom build variants (by default only disabled in release)\n- * // for example: to disable dev mode in the staging build type (if configured)\n- * devDisabledInStaging: true,\n- * // The configuration property can be in the following formats\n- * // 'devDisabledIn${productFlavor}${buildType}'\n- * // 'devDisabledIn${buildType}'\n- *\n- * // the root of your project, i.e. where \"package.json\" lives\n- * root: \"../../\",\n- *\n- * // where to put the JS bundle asset in debug mode\n- * jsBundleDirDebug: \"$buildDir/intermediates/assets/debug\",\n- *\n- * // where to put the JS bundle asset in release mode\n- * jsBundleDirRelease: \"$buildDir/intermediates/assets/release\",\n- *\n- * // where to put drawable resources / React Native assets, e.g. the ones you use via\n- * // require('./image.png')), in debug mode\n- * resourcesDirDebug: \"$buildDir/intermediates/res/merged/debug\",\n- *\n- * // where to put drawable resources / React Native assets, e.g. the ones you use via\n- * // require('./image.png')), in release mode\n- * resourcesDirRelease: \"$buildDir/intermediates/res/merged/release\",\n- *\n- * // by default the gradle tasks are skipped if none of the JS files or assets change; this means\n- * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to\n- * // date; if you have any other folders that you want to ignore for performance reasons (gradle\n- * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/\n- * // for example, you might want to remove it from here.\n- * inputExcludes: [\"android/**\", \"ios/**\"],\n- *\n- * // override which node gets called and with what additional arguments\n- * nodeExecutableAndArgs: [\"node\"],\n- *\n- * // supply additional arguments to the packager\n- * extraPackagerArgs: []\n- * ]\n- */\n-\n def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath()\n+def expoDebuggableVariants = ['debug']\n+// Override `debuggableVariants` for expo-updates debugging\n+if (System.getenv('EX_UPDATES_NATIVE_DEBUG') == \"1\") {\n+ react {\n+ expoDebuggableVariants = []\n+ }\n+}\n \n-def reactNativeRoot = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath()\n \n-project.ext.react = [\n- entryFile: [\"node\", \"-e\", \"require('expo/scripts/resolveAppEntry')\", projectRoot, \"android\"].execute(null, rootDir).text.trim(),\n- enableHermes: (findProperty('expo.jsEngine') ?: \"jsc\") == \"hermes\",\n- hermesCommand: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/sdks/hermesc/%OS-BIN%/hermesc\",\n- cliPath: \"${reactNativeRoot}/cli.js\",\n- composeSourceMapsPath: \"${reactNativeRoot}/scripts/compose-source-maps.js\",\n-]\n+/**\n+ * This is the configuration block to customize your React Native Android app.\n+ * By default you don't need to apply any configuration, just uncomment the lines you need.\n+ */\n+react {\n+ entryFile = file([\"node\", \"-e\", \"require('expo/scripts/resolveAppEntry')\", projectRoot, \"android\", \"absolute\"].execute(null, rootDir).text.trim())\n+ reactNativeDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()\n+ hermesCommand = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/sdks/hermesc/%OS-BIN%/hermesc\"\n+ debuggableVariants = expoDebuggableVariants\n+\n+ /* Folders */\n+ // The root of your project, i.e. where \"package.json\" lives. Default is '..'\n+ // root = file(\"../\")\n+ // The folder where the react-native NPM package is. Default is ../node_modules/react-native\n+ // reactNativeDir = file(\"../node_modules/react-native\")\n+ // The folder where the react-native Codegen package is. Default is ../node_modules/react-native-codegen\n+ // codegenDir = file(\"../node_modules/react-native-codegen\")\n+ // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js\n+ // cliFile = file(\"../node_modules/react-native/cli.js\")\n+\n+ /* Variants */\n+ // The list of variants to that are debuggable. For those we're going to\n+ // skip the bundling of the JS bundle and the assets. By default is just 'debug'.\n+ // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.\n+ // debuggableVariants = [\"liteDebug\", \"prodDebug\"]\n+\n+ /* Bundling */\n+ // A list containing the node command and its flags. Default is just 'node'.\n+ // nodeExecutableAndArgs = [\"node\"]\n+ //\n+ // The command to run when bundling. By default is 'bundle'\n+ // bundleCommand = \"ram-bundle\"\n+ //\n+ // The path to the CLI configuration file. Default is empty.\n+ // bundleConfig = file(../rn-cli.config.js)\n+ //\n+ // The name of the generated asset file containing your JS bundle\n+ // bundleAssetName = \"MyApplication.android.bundle\"\n+ //\n+ // The entry file for bundle generation. Default is 'index.android.js' or 'index.js'\n+ // entryFile = file(\"../js/MyApplication.android.js\")\n+ //\n+ // A list of extra flags to pass to the 'bundle' commands.\n+ // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle\n+ // extraPackagerArgs = []\n+\n+ /* Hermes Commands */\n+ // The hermes compiler command to run. By default it is 'hermesc'\n+ // hermesCommand = \"$rootDir/my-custom-hermesc/bin/hermesc\"\n+ //\n+ // The list of flags to pass to the Hermes compiler. By default is \"-O\", \"-output-source-map\"\n+ // hermesFlags = [\"-O\", \"-output-source-map\"]\n+}\n \n-apply from: new File(reactNativeRoot, \"react.gradle\")\n+// Override `hermesEnabled` by `expo.jsEngine`\n+ext {\n+ hermesEnabled = (findProperty('expo.jsEngine') ?: \"hermes\") == \"hermes\"\n+}\n \n /**\n- * Set this to true to create two separate APKs instead of one:\n- * - An APK that only works on ARM devices\n- * - An APK that only works on x86 devices\n- * The advantage is the size of the APK is reduced by about 4MB.\n- * Upload all the APKs to the Play Store and people will download\n- * the correct one based on the CPU architecture of their device.\n+ * Set this to true to create four separate APKs instead of one,\n+ * one for each native architecture. This is useful if you don't\n+ * use App Bundles (https://developer.android.com/guide/app-bundle/)\n+ * and want to have separate APKs to upload to the Play Store.\n */\n def enableSeparateBuildPerCPUArchitecture = false\n \n /**\n- * Run Proguard to shrink the Java bytecode in release builds.\n+ * Set this to true to Run Proguard on Release builds to minify the Java bytecode.\n */\n def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInReleaseBuilds') ?: false).toBoolean()\n \n /**\n- * The preferred build flavor of JavaScriptCore.\n+ * The preferred build flavor of JavaScriptCore (JSC)\n *\n * For example, to use the international variant, you can use:\n * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`\n *\n * The international variant includes ICU i18n library and necessary data\n * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that\n- * give correct results when using with locales other than en-US. Note that\n+ * give correct results when using with locales other than en-US. Note that\n * this variant is about 6MiB larger per architecture than default.\n */\n def jscFlavor = 'org.webkit:android-jsc:+'\n \n /**\n- * Whether to enable the Hermes VM.\n- *\n- * This should be set on project.ext.react and that value will be read here. If it is not set\n- * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode\n- * and the benefits of using Hermes will therefore be sharply reduced.\n- */\n-def enableHermes = project.ext.react.get(\"enableHermes\", false);\n-\n-/**\n- * Architectures to build native code for.\n+ * Private function to get the list of Native Architectures you want to build.\n+ * This reads the value from reactNativeArchitectures in your gradle.properties\n+ * file and works together with the --active-arch-only flag of react-native run-android.\n */\n def reactNativeArchitectures() {\n def value = project.getProperties().get(\"reactNativeArchitectures\")\n@@ -141,72 +113,13 @@ android {\n \n compileSdkVersion rootProject.ext.compileSdkVersion\n \n+ namespace \"com.helloworld\"\n defaultConfig {\n applicationId \"com.helloworld\"\n minSdkVersion rootProject.ext.minSdkVersion\n targetSdkVersion rootProject.ext.targetSdkVersion\n versionCode 1\n versionName \"1.0\"\n- buildConfigField \"boolean\", \"IS_NEW_ARCHITECTURE_ENABLED\", isNewArchitectureEnabled().toString()\n-\n- if (isNewArchitectureEnabled()) {\n- // We configure the CMake build only if you decide to opt-in for the New Architecture.\n- externalNativeBuild {\n- cmake {\n- arguments \"-DPROJECT_BUILD_DIR=$buildDir\",\n- \"-DREACT_ANDROID_DIR=${reactNativeRoot}/ReactAndroid\",\n- \"-DREACT_ANDROID_BUILD_DIR=${reactNativeRoot}/ReactAndroid/build\",\n- \"-DNODE_MODULES_DIR=$rootDir/../node_modules\",\n- \"-DANDROID_STL=c++_shared\"\n- }\n- }\n- if (!enableSeparateBuildPerCPUArchitecture) {\n- ndk {\n- abiFilters (*reactNativeArchitectures())\n- }\n- }\n- }\n- }\n-\n- if (isNewArchitectureEnabled()) {\n- // We configure the CMake build only if you decide to opt-in for the New Architecture.\n- externalNativeBuild {\n- cmake {\n- path \"$projectDir/src/main/jni/CMakeLists.txt\"\n- }\n- }\n- def reactAndroidProjectDir = project(':ReactAndroid').projectDir\n- def packageReactNdkDebugLibs = tasks.register(\"packageReactNdkDebugLibs\", Copy) {\n- dependsOn(\":ReactAndroid:packageReactNdkDebugLibsForBuck\")\n- from(\"$reactAndroidProjectDir/src/main/jni/prebuilt/lib\")\n- into(\"$buildDir/react-ndk/exported\")\n- }\n- def packageReactNdkReleaseLibs = tasks.register(\"packageReactNdkReleaseLibs\", Copy) {\n- dependsOn(\":ReactAndroid:packageReactNdkReleaseLibsForBuck\")\n- from(\"$reactAndroidProjectDir/src/main/jni/prebuilt/lib\")\n- into(\"$buildDir/react-ndk/exported\")\n- }\n- afterEvaluate {\n- // If you wish to add a custom TurboModule or component locally,\n- // you should uncomment this line.\n- // preBuild.dependsOn(\"generateCodegenArtifactsFromSchema\")\n- preDebugBuild.dependsOn(packageReactNdkDebugLibs)\n- preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)\n-\n- // Due to a bug inside AGP, we have to explicitly set a dependency\n- // between configureCMakeDebug* tasks and the preBuild tasks.\n- // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732\n- configureCMakeRelWithDebInfo.dependsOn(preReleaseBuild)\n- configureCMakeDebug.dependsOn(preDebugBuild)\n- reactNativeArchitectures().each { architecture ->\n- tasks.findByName(\"configureCMakeDebug[${architecture}]\")?.configure {\n- dependsOn(\"preDebugBuild\")\n- }\n- tasks.findByName(\"configureCMakeRelWithDebInfo[${architecture}]\")?.configure {\n- dependsOn(\"preReleaseBuild\")\n- }\n- }\n- }\n }\n \n splits {\n@@ -233,6 +146,7 @@ android {\n // Caution! In production, you need to generate your own keystore file.\n // see https://reactnative.dev/docs/signed-apk-android.\n signingConfig signingConfigs.debug\n+ shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false)\n minifyEnabled enableProguardInReleaseBuilds\n proguardFiles getDefaultProguardFile(\"proguard-android.txt\"), \"proguard-rules.pro\"\n }\n@@ -243,11 +157,12 @@ android {\n variant.outputs.each { output ->\n // For each separate APK per architecture, set a unique version code as described here:\n // https://developer.android.com/studio/build/configure-apk-splits.html\n+ // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc.\n def versionCodes = [\"armeabi-v7a\": 1, \"x86\": 2, \"arm64-v8a\": 3, \"x86_64\": 4]\n def abi = output.getFilter(OutputFile.ABI)\n if (abi != null) { // null for the universal-debug, universal-release variants\n output.versionCodeOverride =\n- versionCodes.get(abi) * 1048576 + defaultConfig.versionCode\n+ defaultConfig.versionCode * 1000 + versionCodes.get(abi)\n }\n \n }\n@@ -275,10 +190,8 @@ android {\n }\n \n dependencies {\n- implementation fileTree(dir: \"libs\", include: [\"*.jar\"])\n-\n- //noinspection GradleDynamicVersion\n- implementation \"com.facebook.react:react-native:+\" // From node_modules\n+ // The version of react-native is set by the React Native Gradle Plugin\n+ implementation(\"com.facebook.react:react-android\")\n \n def isGifEnabled = (findProperty('expo.gif.enabled') ?: \"\") == \"true\";\n def isWebpEnabled = (findProperty('expo.webp.enabled') ?: \"\") == \"true\";\n@@ -287,76 +200,38 @@ dependencies {\n \n // If your app supports Android versions before Ice Cream Sandwich (API level 14)\n if (isGifEnabled || isWebpEnabled) {\n- implementation \"com.facebook.fresco:fresco:${frescoVersion}\"\n- implementation \"com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:fresco:${frescoVersion}\")\n+ implementation(\"com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}\")\n }\n \n if (isGifEnabled) {\n // For animated gif support\n- implementation \"com.facebook.fresco:animated-gif:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:animated-gif:${frescoVersion}\")\n }\n \n if (isWebpEnabled) {\n // For webp support\n- implementation \"com.facebook.fresco:webpsupport:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:webpsupport:${frescoVersion}\")\n if (isWebpAnimatedEnabled) {\n // Animated webp support\n- implementation \"com.facebook.fresco:animated-webp:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:animated-webp:${frescoVersion}\")\n }\n }\n \n- implementation \"androidx.swiperefreshlayout:swiperefreshlayout:1.0.0\"\n- debugImplementation(\"com.facebook.flipper:flipper:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.fbjni'\n- }\n+ implementation(\"androidx.swiperefreshlayout:swiperefreshlayout:1.0.0\")\n+\n+ debugImplementation(\"com.facebook.flipper:flipper:${FLIPPER_VERSION}\")\n debugImplementation(\"com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.flipper'\n exclude group:'com.squareup.okhttp3', module:'okhttp'\n }\n- debugImplementation(\"com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.flipper'\n- }\n+ debugImplementation(\"com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}\")\n \n- if (enableHermes) {\n- //noinspection GradleDynamicVersion\n- implementation(\"com.facebook.react:hermes-engine:+\") { // From node_modules\n- exclude group:'com.facebook.fbjni'\n- }\n+ if (hermesEnabled.toBoolean()) {\n+ implementation(\"com.facebook.react:hermes-android\")\n } else {\n implementation jscFlavor\n }\n }\n \n-if (isNewArchitectureEnabled()) {\n- // If new architecture is enabled, we let you build RN from source\n- // Otherwise we fallback to a prebuilt .aar bundled in the NPM package.\n- // This will be applied to all the imported transtitive dependency.\n- configurations.all {\n- resolutionStrategy.dependencySubstitution {\n- substitute(module(\"com.facebook.react:react-native\"))\n- .using(project(\":ReactAndroid\"))\n- .because(\"On New Architecture we're building React Native from source\")\n- substitute(module(\"com.facebook.react:hermes-engine\"))\n- .using(project(\":ReactAndroid:hermes-engine\"))\n- .because(\"On New Architecture we're building Hermes from source\")\n- }\n- }\n-}\n-\n-// Run this once to be able to run the application with BUCK\n-// puts all compile dependencies into folder libs for BUCK to use\n-task copyDownloadableDepsToLibs(type: Copy) {\n- from configurations.implementation\n- into 'libs'\n-}\n-\n apply from: new File([\"node\", \"--print\", \"require.resolve('@react-native-community/cli-platform-android/package.json')\"].execute(null, rootDir).text.trim(), \"../native_modules.gradle\");\n applyNativeModulesAppBuildGradle(project)\n-\n-def isNewArchitectureEnabled() {\n- // To opt-in for the New Architecture, you can either:\n- // - Set `newArchEnabled` to true inside the `gradle.properties` file\n- // - Invoke gradle with `-newArchEnabled=true`\n- // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`\n- return project.hasProperty(\"newArchEnabled\") && project.newArchEnabled == \"true\"\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/build_defs.bzl b/templates/expo-template-bare-minimum/android/app/build_defs.bzl\ndeleted file mode 100644\nindex fff270f8d1..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/build_defs.bzl\n+++ /dev/null\n@@ -1,19 +0,0 @@\n-\"\"\"Helper definitions to glob .aar and .jar targets\"\"\"\n-\n-def create_aar_targets(aarfiles):\n- for aarfile in aarfiles:\n- name = \"aars__\" + aarfile[aarfile.rindex(\"/\") + 1:aarfile.rindex(\".aar\")]\n- lib_deps.append(\":\" + name)\n- android_prebuilt_aar(\n- name = name,\n- aar = aarfile,\n- )\n-\n-def create_jar_targets(jarfiles):\n- for jarfile in jarfiles:\n- name = \"jars__\" + jarfile[jarfile.rindex(\"/\") + 1:jarfile.rindex(\".jar\")]\n- lib_deps.append(\":\" + name)\n- prebuilt_jar(\n- name = name,\n- binary_jar = jarfile,\n- )\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java b/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\nindex 8cddb11cb2..595dd5831c 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\n@@ -1,5 +1,5 @@\n /**\n- * Copyright (c) Facebook, Inc. and its affiliates.\n+ * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n *

This source code is licensed under the MIT license found in the LICENSE file in the root\n * directory of this source tree.\n@@ -17,22 +17,27 @@ import com.facebook.flipper.plugins.inspector.DescriptorMapping;\n import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;\n import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;\n import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;\n-import com.facebook.flipper.plugins.react.ReactFlipperPlugin;\n import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;\n+import com.facebook.react.ReactInstanceEventListener;\n import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.bridge.ReactContext;\n import com.facebook.react.modules.network.NetworkingModule;\n import okhttp3.OkHttpClient;\n \n+/**\n+ * Class responsible of loading Flipper inside your React Native application. This is the debug\n+ * flavor of it. Here you can add your own plugins and customize the Flipper setup.\n+ */\n public class ReactNativeFlipper {\n public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {\n if (FlipperUtils.shouldEnableFlipper(context)) {\n final FlipperClient client = AndroidFlipperClient.getInstance(context);\n+\n client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));\n- client.addPlugin(new ReactFlipperPlugin());\n client.addPlugin(new DatabasesFlipperPlugin(context));\n client.addPlugin(new SharedPreferencesFlipperPlugin(context));\n client.addPlugin(CrashReporterPlugin.getInstance());\n+\n NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();\n NetworkingModule.setCustomClientBuilder(\n new NetworkingModule.CustomClientBuilder() {\n@@ -43,12 +48,13 @@ public class ReactNativeFlipper {\n });\n client.addPlugin(networkFlipperPlugin);\n client.start();\n+\n // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized\n // Hence we run if after all native modules have been initialized\n ReactContext reactContext = reactInstanceManager.getCurrentReactContext();\n if (reactContext == null) {\n reactInstanceManager.addReactInstanceEventListener(\n- new ReactInstanceManager.ReactInstanceEventListener() {\n+ new ReactInstanceEventListener() {\n @Override\n public void onReactContextInitialized(ReactContext reactContext) {\n reactInstanceManager.removeReactInstanceEventListener(this);\n@@ -66,4 +72,4 @@ public class ReactNativeFlipper {\n }\n }\n }\n-}\n\\ No newline at end of file\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml b/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\nindex 0cad655b33..6536fc03ad 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n@@ -1,4 +1,4 @@\n-\n+\n \n \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\nindex 8e13797d9b..7e2823fb6c 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n@@ -5,7 +5,8 @@ import android.os.Bundle;\n \n import com.facebook.react.ReactActivity;\n import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactActivityDelegate;\n \n import expo.modules.ReactActivityDelegateWrapper;\n \n@@ -29,15 +30,20 @@ public class MainActivity extends ReactActivity {\n }\n \n /**\n- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n- * (Paper).\n+ * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link\n+ * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React\n+ * (aka React 18) with two boolean flags.\n */\n @Override\n protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n- new MainActivityDelegate(this, getMainComponentName())\n- );\n+ return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, new DefaultReactActivityDelegate(\n+ this,\n+ getMainComponentName(),\n+ // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n+ DefaultNewArchitectureEntryPoint.getFabricEnabled(), // fabricEnabled\n+ // If you opted-in for the New Architecture, we enable Concurrent React (i.e. React 18).\n+ DefaultNewArchitectureEntryPoint.getConcurrentReactEnabled() // concurrentRootEnabled\n+ ));\n }\n \n /**\n@@ -59,25 +65,4 @@ public class MainActivity extends ReactActivity {\n // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n super.invokeDefaultOnBackPressed();\n }\n-\n- public static class MainActivityDelegate extends ReactActivityDelegate {\n- public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n- super(activity, mainComponentName);\n- }\n-\n- @Override\n- protected ReactRootView createRootView() {\n- ReactRootView reactRootView = new ReactRootView(getContext());\n- // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n- reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n- return reactRootView;\n- }\n-\n- @Override\n- protected boolean isConcurrentRootEnabled() {\n- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\nindex 7deb688b07..31c2b288c1 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n@@ -1,69 +1,70 @@\n package com.helloworld;\n \n import android.app.Application;\n-import android.content.Context;\n import android.content.res.Configuration;\n import androidx.annotation.NonNull;\n \n import com.facebook.react.PackageList;\n import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.ReactNativeHost;\n import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactNativeHost;\n import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n \n import expo.modules.ApplicationLifecycleDispatcher;\n import expo.modules.ReactNativeHostWrapper;\n \n-import java.lang.reflect.InvocationTargetException;\n import java.util.List;\n \n public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n \n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n+ private final ReactNativeHost mReactNativeHost =\n+ new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) {\n+ @Override\n+ public boolean getUseDeveloperSupport() {\n+ return BuildConfig.DEBUG;\n+ }\n \n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n+ @Override\n+ protected List getPackages() {\n+ @SuppressWarnings(\"UnnecessaryLocalVariable\")\n+ List packages = new PackageList(this).getPackages();\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return packages;\n+ }\n \n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n+ @Override\n+ protected String getJSMainModuleName() {\n+ return \"index\";\n+ }\n+\n+ @Override\n+ protected boolean isNewArchEnabled() {\n+ return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n+ }\n+\n+ @Override\n+ protected Boolean isHermesEnabled() {\n+ return BuildConfig.IS_HERMES_ENABLED;\n+ }\n+ });\n \n @Override\n public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n+ return mReactNativeHost;\n }\n \n @Override\n public void onCreate() {\n super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ DefaultNewArchitectureEntryPoint.load();\n+ }\n+ ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n ApplicationLifecycleDispatcher.onApplicationCreate(this);\n }\n \n@@ -72,35 +73,4 @@ public class MainApplication extends Application implements ReactApplication {\n super.onConfigurationChanged(newConfig);\n ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex 7665dd923f..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,117 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.fabric.ReactNativeConfig;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- ReactNativeConfig.DEFAULT_CONFIG,\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt b/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\ndeleted file mode 100644\nindex d2cad3a326..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\n+++ /dev/null\n@@ -1,7 +0,0 @@\n-cmake_minimum_required(VERSION 3.13)\n-\n-# Define the library name here.\n-project(helloworld_appmodules)\n-\n-# This file includes all the necessary to let you build your application with the New Architecture.\n-include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 26162dd872..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string &moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n-\n- // Module providers autolinked by RN CLI\n- auto rncli_module = rncli_ModuleProvider(moduleName, params);\n- if (rncli_module != nullptr) {\n- return rncli_module;\n- }\n-\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex b38ccf53fd..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string &moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex 5fd688c509..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string &name,\n- const std::shared_ptr &jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string &name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- const std::string &name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 9ee38a81f6..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string &name,\n- const std::shared_ptr &jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string &name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(const std::string &name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 54f598a486..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,65 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Autolinked providers registered by RN CLI\n- rncli_registerProviders(providerRegistry);\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java b/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java\nnew file mode 100644\nindex 0000000000..b510364404\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java\n@@ -0,0 +1,20 @@\n+/**\n+ * Copyright (c) Meta Platforms, Inc. and affiliates.\n+ *\n+ *

This source code is licensed under the MIT license found in the LICENSE file in the root\n+ * directory of this source tree.\n+ */\n+package com.helloworld;\n+\n+import android.content.Context;\n+import com.facebook.react.ReactInstanceManager;\n+\n+/**\n+ * Class responsible of loading Flipper inside your React Native application. This is the release\n+ * flavor of it so it's empty as we don't want to load Flipper.\n+ */\n+public class ReactNativeFlipper {\n+ public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {\n+ // Do nothing as we don't want to initialize Flipper on Release.\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/build.gradle b/templates/expo-template-bare-minimum/android/build.gradle\nindex 8181b282cd..e5fda82878 100644\n--- a/templates/expo-template-bare-minimum/android/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/build.gradle\n@@ -2,47 +2,30 @@\n \n buildscript {\n ext {\n- buildToolsVersion = findProperty('android.buildToolsVersion') ?: '31.0.0'\n+ buildToolsVersion = findProperty('android.buildToolsVersion') ?: '33.0.0'\n minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '21')\n- compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '31')\n- targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '31')\n+ compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '33')\n+ targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '33')\n if (findProperty('android.kotlinVersion')) {\n kotlinVersion = findProperty('android.kotlinVersion')\n }\n frescoVersion = findProperty('expo.frescoVersion') ?: '2.5.0'\n \n- if (System.properties['os.arch'] == 'aarch64') {\n- // For M1 Users we need to use the NDK 24 which added support for aarch64\n- ndkVersion = '24.0.8215888'\n- } else {\n- // Otherwise we default to the side-by-side NDK version from AGP.\n- ndkVersion = '21.4.7075529'\n- }\n+ // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.\n+ ndkVersion = \"23.1.7779620\"\n }\n repositories {\n google()\n mavenCentral()\n }\n dependencies {\n- classpath('com.android.tools.build:gradle:7.2.1')\n+ classpath('com.android.tools.build:gradle:7.4.1')\n classpath('com.facebook.react:react-native-gradle-plugin')\n- classpath('de.undercouch:gradle-download-task:5.0.1')\n- // NOTE: Do not place your application dependencies here; they belong\n- // in the individual module build.gradle files\n }\n }\n \n-def REACT_NATIVE_VERSION = new File(['node', '--print', \"JSON.parse(require('fs').readFileSync(require.resolve('react-native/package.json'), 'utf-8')).version\"].execute(null, rootDir).text.trim())\n-\n allprojects {\n- configurations.all {\n- resolutionStrategy {\n- force \"com.facebook.react:react-native:\" + REACT_NATIVE_VERSION\n- }\n- }\n-\n repositories {\n- mavenLocal()\n maven {\n // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm\n url(new File(['node', '--print', \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), '../android'))\n@@ -53,13 +36,7 @@ allprojects {\n }\n \n google()\n- mavenCentral {\n- // We don't want to fetch react-native from Maven Central as there are\n- // older versions over there.\n- content {\n- excludeGroup 'com.facebook.react'\n- }\n- }\n+ mavenCentral()\n maven { url 'https://www.jitpack.io' }\n }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/gitignore b/templates/expo-template-bare-minimum/android/gitignore\nindex 64436baaf5..877b87e9a5 100644\n--- a/templates/expo-template-bare-minimum/android/gitignore\n+++ b/templates/expo-template-bare-minimum/android/gitignore\n@@ -11,11 +11,5 @@ local.properties\n *.iml\n *.hprof\n \n-# BUCK\n-buck-out/\n-\\.buckd/\n-*.keystore\n-!debug.keystore\n-\n # Bundle artifacts\n *.jsbundle\ndiff --git a/templates/expo-template-bare-minimum/android/gradle.properties b/templates/expo-template-bare-minimum/android/gradle.properties\nindex fab3fb6bcf..9911ac4afd 100644\n--- a/templates/expo-template-bare-minimum/android/gradle.properties\n+++ b/templates/expo-template-bare-minimum/android/gradle.properties\n@@ -42,7 +42,7 @@ newArchEnabled=false\n \n # The hosted JavaScript engine\n # Supported values: expo.jsEngine = \"hermes\" | \"jsc\"\n-expo.jsEngine=jsc\n+expo.jsEngine=hermes\n \n # Enable GIF support in React Native images (~200 B increase)\n expo.gif.enabled=true\ndiff --git a/templates/expo-template-bare-minimum/android/settings.gradle b/templates/expo-template-bare-minimum/android/settings.gradle\nindex b3332319f9..1dc416e7c1 100644\n--- a/templates/expo-template-bare-minimum/android/settings.gradle\n+++ b/templates/expo-template-bare-minimum/android/settings.gradle\n@@ -8,10 +8,3 @@ applyNativeModulesSettingsGradle(settings)\n \n include ':app'\n includeBuild(new File([\"node\", \"--print\", \"require.resolve('react-native-gradle-plugin/package.json')\"].execute(null, rootDir).text.trim()).getParentFile())\n-\n-if (settings.hasProperty(\"newArchEnabled\") && settings.newArchEnabled == \"true\") {\n- include(\":ReactAndroid\")\n- project(\":ReactAndroid\").projectDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../ReactAndroid\");\n- include(\":ReactAndroid:hermes-engine\")\n- project(\":ReactAndroid:hermes-engine\").projectDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../ReactAndroid/hermes-engine\");\n-}\ndiff --git a/templates/expo-template-bare-minimum/gitignore b/templates/expo-template-bare-minimum/gitignore\nindex 67397f65f9..df57ba88a1 100644\n--- a/templates/expo-template-bare-minimum/gitignore\n+++ b/templates/expo-template-bare-minimum/gitignore\n@@ -31,6 +31,8 @@ local.properties\n *.iml\n *.hprof\n .cxx/\n+*.keystore\n+!debug.keystore\n \n # node.js\n #\n@@ -38,18 +40,15 @@ node_modules/\n npm-debug.log\n yarn-error.log\n \n-# BUCK\n-buck-out/\n-\\.buckd/\n-*.keystore\n-!debug.keystore\n-\n # Bundle artifacts\n *.jsbundle\n \n # CocoaPods\n /ios/Pods/\n \n+# Temporary files created by Metro to check the health of the file watcher\n+.metro-health-check*\n+\n # Expo\n .expo/\n web-build/\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\nindex 62a1be2493..98e6c2afea 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n@@ -310,6 +310,7 @@\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n \t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n+ MARKETING_VERSION = 1.0;\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n \t\t\t\t\t\"-ObjC\",\n@@ -333,6 +334,7 @@\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n \t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n+ MARKETING_VERSION = 1.0;\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n \t\t\t\t\t\"-ObjC\",\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\nindex f7d2972042..1658a437eb 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\n@@ -1,9 +1,7 @@\n-#import \n-#import \n+#import \n #import \n-\n #import \n \n-@interface AppDelegate : EXAppDelegateWrapper \n+@interface AppDelegate : EXAppDelegateWrapper\n \n @end\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\nindex a6e13e11ab..8cb5aef137 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\n@@ -1,100 +1,40 @@\n #import \"AppDelegate.h\"\n \n-#import \n #import \n-#import \n #import \n-#import \n-\n-#import \n-\n-#if RCT_NEW_ARCH_ENABLED\n-#import \n-#import \n-#import \n-#import \n-#import \n-#import \n-\n-#import \n-\n-static NSString *const kRNConcurrentRoot = @\"concurrentRoot\";\n-\n-@interface AppDelegate () {\n- RCTTurboModuleManager *_turboModuleManager;\n- RCTSurfacePresenterBridgeAdapter *_bridgeAdapter;\n- std::shared_ptr _reactNativeConfig;\n- facebook::react::ContextContainer::Shared _contextContainer;\n-}\n-@end\n-#endif\n \n @implementation AppDelegate\n \n - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions\n {\n- RCTAppSetupPrepareApp(application);\n-\n- RCTBridge *bridge = [self.reactDelegate createBridgeWithDelegate:self launchOptions:launchOptions];\n-\n-#if RCT_NEW_ARCH_ENABLED\n- _contextContainer = std::make_shared();\n- _reactNativeConfig = std::make_shared();\n- _contextContainer->insert(\"ReactNativeConfig\", _reactNativeConfig);\n- _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer];\n- bridge.surfacePresenter = _bridgeAdapter.surfacePresenter;\n-#endif\n-\n- NSDictionary *initProps = [self prepareInitialProps];\n- UIView *rootView = [self.reactDelegate createRootViewWithBridge:bridge moduleName:@\"main\" initialProperties:initProps];\n-\n- rootView.backgroundColor = [UIColor whiteColor];\n- self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];\n- UIViewController *rootViewController = [self.reactDelegate createRootViewController];\n- rootViewController.view = rootView;\n- self.window.rootViewController = rootViewController;\n- [self.window makeKeyAndVisible];\n+ self.moduleName = @\"main\";\n \n- [super application:application didFinishLaunchingWithOptions:launchOptions];\n+ // You can add your custom initial props in the dictionary below.\n+ // They will be passed down to the ViewController used by React Native.\n+ self.initialProps = @{};\n \n- return YES;\n+ return [super application:application didFinishLaunchingWithOptions:launchOptions];\n }\n \n-- (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge\n+- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n {\n- // If you'd like to export some custom RCTBridgeModules, add them here!\n- return @[];\n+#if DEBUG\n+ return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"index\"];\n+#else\n+ return [[NSBundle mainBundle] URLForResource:@\"main\" withExtension:@\"jsbundle\"];\n+#endif\n }\n \n /// This method controls whether the `concurrentRoot`feature of React18 is turned on or off.\n ///\n /// @see: https://reactjs.org/blog/2022/03/29/react-v18.html\n /// @note: This requires to be rendering on Fabric (i.e. on the New Architecture).\n-/// @return: `true` if the `concurrentRoot` feture is enabled. Otherwise, it returns `false`.\n+/// @return: `true` if the `concurrentRoot` feature is enabled. Otherwise, it returns `false`.\n - (BOOL)concurrentRootEnabled\n {\n- // Switch this bool to turn on and off the concurrent root\n return true;\n }\n \n-- (NSDictionary *)prepareInitialProps\n-{\n- NSMutableDictionary *initProps = [NSMutableDictionary new];\n-#if RCT_NEW_ARCH_ENABLED\n- initProps[kRNConcurrentRoot] = @([self concurrentRootEnabled]);\n-#endif\n- return initProps;\n-}\n-\n-- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n-{\n-#if DEBUG\n- return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"index\"];\n-#else\n- return [[NSBundle mainBundle] URLForResource:@\"main\" withExtension:@\"jsbundle\"];\n-#endif\n-}\n-\n // Linking API\n - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options {\n return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options];\n@@ -124,43 +64,4 @@ static NSString *const kRNConcurrentRoot = @\"concurrentRoot\";\n return [super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];\n }\n \n-#if RCT_NEW_ARCH_ENABLED\n-\n-#pragma mark - RCTCxxBridgeDelegate\n-\n-- (std::unique_ptr)jsExecutorFactoryForBridge:(RCTBridge *)bridge\n-{\n- _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge\n- delegate:self\n- jsInvoker:bridge.jsCallInvoker];\n- return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager);\n-}\n-\n-#pragma mark RCTTurboModuleManagerDelegate\n-\n-- (Class)getModuleClassFromName:(const char *)name\n-{\n- return RCTCoreModulesClassProvider(name);\n-}\n-\n-- (std::shared_ptr)getTurboModule:(const std::string &)name\n- jsInvoker:(std::shared_ptr)jsInvoker\n-{\n- return nullptr;\n-}\n-\n-- (std::shared_ptr)getTurboModule:(const std::string &)name\n- initParams:\n- (const facebook::react::ObjCTurboModule::InitParams &)params\n-{\n- return nullptr;\n-}\n-\n-- (id)getModuleInstanceFromClass:(Class)moduleClass\n-{\n- return RCTAppSetupDefaultModuleFromClass(moduleClass);\n-}\n-\n-#endif\n-\n @end\ndiff --git a/templates/expo-template-bare-minimum/ios/Podfile b/templates/expo-template-bare-minimum/ios/Podfile\nindex 474455b90d..e523ea5cac 100644\n--- a/templates/expo-template-bare-minimum/ios/Podfile\n+++ b/templates/expo-template-bare-minimum/ios/Podfile\n@@ -5,34 +5,63 @@ require File.join(File.dirname(`node --print \"require.resolve('@react-native-com\n require 'json'\n podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}\n \n+ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0'\n+ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = '1' if podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR'] == 'true'\n+\n platform :ios, podfile_properties['ios.deploymentTarget'] || '13.0'\n install! 'cocoapods',\n :deterministic_uuids => false\n \n+prepare_react_native_project!\n+\n+# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set.\n+# because `react-native-flipper` depends on (FlipperKit,...), which will be excluded. To fix this,\n+# you can also exclude `react-native-flipper` in `react-native.config.js`\n+#\n+# ```js\n+# module.exports = {\n+# dependencies: {\n+# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),\n+# }\n+# }\n+# ```\n+flipper_config = FlipperConfiguration.disabled\n+if ENV['NO_FLIPPER'] == '1' then\n+ # Explicitly disabled through environment variables\n+ flipper_config = FlipperConfiguration.disabled\n+elsif podfile_properties.key?('ios.flipper') then\n+ # Configure Flipper in Podfile.properties.json\n+ if podfile_properties['ios.flipper'] == 'true' then\n+ flipper_config = FlipperConfiguration.enabled([\"Debug\", \"Release\"])\n+ elsif podfile_properties['ios.flipper'] != 'false' then\n+ flipper_config = FlipperConfiguration.enabled([\"Debug\", \"Release\"], { 'Flipper' => podfile_properties['ios.flipper'] })\n+ end\n+end\n+\n target 'HelloWorld' do\n use_expo_modules!\n config = use_native_modules!\n \n use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks']\n+ use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS']\n \n # Flags change depending on the env values.\n flags = get_default_flags()\n \n use_react_native!(\n :path => config[:reactNativePath],\n- :hermes_enabled => podfile_properties['expo.jsEngine'] == 'hermes',\n+ :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes',\n :fabric_enabled => flags[:fabric_enabled],\n # An absolute path to your application root.\n :app_path => \"#{Pod::Config.instance.installation_root}/..\",\n- #\n- # Uncomment to opt-in to using Flipper\n- # Note that if you have use_frameworks! enabled, Flipper will not work\n- # :flipper_configuration => !ENV['CI'] ? FlipperConfiguration.enabled : FlipperConfiguration.disabled,\n+ # Note that if you have use_frameworks! enabled, Flipper will not work if enabled\n+ :flipper_configuration => flipper_config\n )\n \n post_install do |installer|\n react_native_post_install(\n installer,\n+ config[:reactNativePath],\n # Set `mac_catalyst_enabled` to `true` in order to apply patches\n # necessary for Mac Catalyst builds\n :mac_catalyst_enabled => false\ndiff --git a/templates/expo-template-bare-minimum/ios/Podfile.properties.json b/templates/expo-template-bare-minimum/ios/Podfile.properties.json\nindex f6d872e81a..b1bd45da51 100644\n--- a/templates/expo-template-bare-minimum/ios/Podfile.properties.json\n+++ b/templates/expo-template-bare-minimum/ios/Podfile.properties.json\n@@ -1,3 +1,3 @@\n {\n- \"expo.jsEngine\": \"jsc\"\n+ \"expo.jsEngine\": \"hermes\"\n }\ndiff --git a/templates/expo-template-bare-minimum/package.json b/templates/expo-template-bare-minimum/package.json\nindex a41fdc0d8d..d1fcd513cc 100644\n--- a/templates/expo-template-bare-minimum/package.json\n+++ b/templates/expo-template-bare-minimum/package.json\n@@ -1,7 +1,7 @@\n {\n \"name\": \"expo-template-bare-minimum\",\n \"description\": \"This bare project template includes a minimal setup for using unimodules with React Native.\",\n- \"version\": \"47.0.26\",\n+ \"version\": \"48.0.21\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"start\": \"expo start --dev-client\",\n@@ -10,13 +10,13 @@\n \"web\": \"expo start --web\"\n },\n \"dependencies\": {\n- \"expo\": \"~47.0.14\",\n- \"expo-splash-screen\": \"~0.17.5\",\n- \"expo-status-bar\": \"~1.4.2\",\n- \"react\": \"18.1.0\",\n- \"react-native\": \"0.70.8\"\n+ \"expo\": \"~48.0.21\",\n+ \"expo-splash-screen\": \"~0.18.2\",\n+ \"expo-status-bar\": \"~1.4.4\",\n+ \"react\": \"18.2.0\",\n+ \"react-native\": \"0.71.14\"\n },\n \"devDependencies\": {\n- \"@babel/core\": \"^7.12.9\"\n+ \"@babel/core\": \"^7.20.0\"\n }\n }\n","48..48":"","45..49":"diff --git a/templates/expo-template-bare-minimum/.buckconfig b/templates/expo-template-bare-minimum/.buckconfig\ndeleted file mode 100644\nindex 934256cb29..0000000000\n--- a/templates/expo-template-bare-minimum/.buckconfig\n+++ /dev/null\n@@ -1,6 +0,0 @@\n-\n-[android]\n- target = Google Inc.:Google APIs:23\n-\n-[maven_repositories]\n- central = https://repo1.maven.org/maven2\ndiff --git a/templates/expo-template-bare-minimum/.npmignore b/templates/expo-template-bare-minimum/.npmignore\nindex 35490b6612..bc0b76356d 100644\n--- a/templates/expo-template-bare-minimum/.npmignore\n+++ b/templates/expo-template-bare-minimum/.npmignore\n@@ -17,6 +17,8 @@ web-build/\n HelloWorld.xcworkspace\n Podfile.lock\n ios/Pods\n+ios/.xcode.env.local\n android/.build\n android/app/build\n android/.gradle\n+ios/.xcode.env.local\ndiff --git a/templates/expo-template-bare-minimum/android/app/BUCK b/templates/expo-template-bare-minimum/android/app/BUCK\ndeleted file mode 100644\nindex 0e77904834..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/BUCK\n+++ /dev/null\n@@ -1,55 +0,0 @@\n-# To learn about Buck see [Docs](https://buckbuild.com/).\n-# To run your application with Buck:\n-# - install Buck\n-# - `npm start` - to start the packager\n-# - `cd android`\n-# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname \"CN=Android Debug,O=Android,C=US\"`\n-# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck\n-# - `buck install -r android/app` - compile, install and run application\n-#\n-\n-load(\":build_defs.bzl\", \"create_aar_targets\", \"create_jar_targets\")\n-\n-lib_deps = []\n-\n-create_aar_targets(glob([\"libs/*.aar\"]))\n-\n-create_jar_targets(glob([\"libs/*.jar\"]))\n-\n-android_library(\n- name = \"all-libs\",\n- exported_deps = lib_deps,\n-)\n-\n-android_library(\n- name = \"app-code\",\n- srcs = glob([\n- \"src/main/java/**/*.java\",\n- ]),\n- deps = [\n- \":all-libs\",\n- \":build_config\",\n- \":res\",\n- ],\n-)\n-\n-android_build_config(\n- name = \"build_config\",\n- package = \"com.helloworld\",\n-)\n-\n-android_resource(\n- name = \"res\",\n- package = \"com.helloworld\",\n- res = \"src/main/res\",\n-)\n-\n-android_binary(\n- name = \"app\",\n- keystore = \"//android/keystores:debug\",\n- manifest = \"src/main/AndroidManifest.xml\",\n- package_type = \"debug\",\n- deps = [\n- \":app-code\",\n- ],\n-)\ndiff --git a/templates/expo-template-bare-minimum/android/app/build.gradle b/templates/expo-template-bare-minimum/android/app/build.gradle\nindex 346fb02564..7105aaaa3f 100644\n--- a/templates/expo-template-bare-minimum/android/app/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/app/build.gradle\n@@ -1,232 +1,95 @@\n apply plugin: \"com.android.application\"\n-\n-import com.android.build.OutputFile\n-import org.apache.tools.ant.taskdefs.condition.Os\n-\n-/**\n- * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets\n- * and bundleReleaseJsAndAssets).\n- * These basically call `react-native bundle` with the correct arguments during the Android build\n- * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the\n- * bundle directly from the development server. Below you can see all the possible configurations\n- * and their defaults. If you decide to add a configuration block, make sure to add it before the\n- * `apply from: \"../../node_modules/react-native/react.gradle\"` line.\n- *\n- * project.ext.react = [\n- * // the name of the generated asset file containing your JS bundle\n- * bundleAssetName: \"index.android.bundle\",\n- *\n- * // the entry file for bundle generation. If none specified and\n- * // \"index.android.js\" exists, it will be used. Otherwise \"index.js\" is\n- * // default. Can be overridden with ENTRY_FILE environment variable.\n- * entryFile: \"index.android.js\",\n- *\n- * // https://reactnative.dev/docs/performance#enable-the-ram-format\n- * bundleCommand: \"ram-bundle\",\n- *\n- * // whether to bundle JS and assets in debug mode\n- * bundleInDebug: false,\n- *\n- * // whether to bundle JS and assets in release mode\n- * bundleInRelease: true,\n- *\n- * // whether to bundle JS and assets in another build variant (if configured).\n- * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants\n- * // The configuration property can be in the following formats\n- * // 'bundleIn${productFlavor}${buildType}'\n- * // 'bundleIn${buildType}'\n- * // bundleInFreeDebug: true,\n- * // bundleInPaidRelease: true,\n- * // bundleInBeta: true,\n- *\n- * // whether to disable dev mode in custom build variants (by default only disabled in release)\n- * // for example: to disable dev mode in the staging build type (if configured)\n- * devDisabledInStaging: true,\n- * // The configuration property can be in the following formats\n- * // 'devDisabledIn${productFlavor}${buildType}'\n- * // 'devDisabledIn${buildType}'\n- *\n- * // the root of your project, i.e. where \"package.json\" lives\n- * root: \"../../\",\n- *\n- * // where to put the JS bundle asset in debug mode\n- * jsBundleDirDebug: \"$buildDir/intermediates/assets/debug\",\n- *\n- * // where to put the JS bundle asset in release mode\n- * jsBundleDirRelease: \"$buildDir/intermediates/assets/release\",\n- *\n- * // where to put drawable resources / React Native assets, e.g. the ones you use via\n- * // require('./image.png')), in debug mode\n- * resourcesDirDebug: \"$buildDir/intermediates/res/merged/debug\",\n- *\n- * // where to put drawable resources / React Native assets, e.g. the ones you use via\n- * // require('./image.png')), in release mode\n- * resourcesDirRelease: \"$buildDir/intermediates/res/merged/release\",\n- *\n- * // by default the gradle tasks are skipped if none of the JS files or assets change; this means\n- * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to\n- * // date; if you have any other folders that you want to ignore for performance reasons (gradle\n- * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/\n- * // for example, you might want to remove it from here.\n- * inputExcludes: [\"android/**\", \"ios/**\"],\n- *\n- * // override which node gets called and with what additional arguments\n- * nodeExecutableAndArgs: [\"node\"],\n- *\n- * // supply additional arguments to the packager\n- * extraPackagerArgs: []\n- * ]\n- */\n+apply plugin: \"com.facebook.react\"\n \n def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath()\n \n-project.ext.react = [\n- entryFile: [\"node\", \"-e\", \"require('expo/scripts/resolveAppEntry')\", projectRoot, \"android\"].execute(null, rootDir).text.trim(),\n- enableHermes: (findProperty('expo.jsEngine') ?: \"jsc\") == \"hermes\",\n- cliPath: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/cli.js\",\n- hermesCommand: new File([\"node\", \"--print\", \"require.resolve('hermes-engine/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/%OS-BIN%/hermesc\",\n- composeSourceMapsPath: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/scripts/compose-source-maps.js\",\n-]\n-\n-apply from: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../react.gradle\")\n-\n /**\n- * Set this to true to create two separate APKs instead of one:\n- * - An APK that only works on ARM devices\n- * - An APK that only works on x86 devices\n- * The advantage is the size of the APK is reduced by about 4MB.\n- * Upload all the APKs to the Play Store and people will download\n- * the correct one based on the CPU architecture of their device.\n+ * This is the configuration block to customize your React Native Android app.\n+ * By default you don't need to apply any configuration, just uncomment the lines you need.\n */\n-def enableSeparateBuildPerCPUArchitecture = false\n+react {\n+ entryFile = file([\"node\", \"-e\", \"require('expo/scripts/resolveAppEntry')\", projectRoot, \"android\", \"absolute\"].execute(null, rootDir).text.trim())\n+ reactNativeDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()\n+ hermesCommand = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/sdks/hermesc/%OS-BIN%/hermesc\"\n+ codegenDir = new File([\"node\", \"--print\", \"require.resolve('@react-native/codegen/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()\n+\n+ // Use Expo CLI to bundle the app, this ensures the Metro config\n+ // works correctly with Expo projects.\n+ cliFile = new File([\"node\", \"--print\", \"require.resolve('@expo/cli')\"].execute(null, rootDir).text.trim())\n+ bundleCommand = \"export:embed\"\n+\n+ /* Folders */\n+ // The root of your project, i.e. where \"package.json\" lives. Default is '..'\n+ // root = file(\"../\")\n+ // The folder where the react-native NPM package is. Default is ../node_modules/react-native\n+ // reactNativeDir = file(\"../node_modules/react-native\")\n+ // The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen\n+ // codegenDir = file(\"../node_modules/@react-native/codegen\")\n+\n+ /* Variants */\n+ // The list of variants to that are debuggable. For those we're going to\n+ // skip the bundling of the JS bundle and the assets. By default is just 'debug'.\n+ // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.\n+ // debuggableVariants = [\"liteDebug\", \"prodDebug\"]\n+\n+ /* Bundling */\n+ // A list containing the node command and its flags. Default is just 'node'.\n+ // nodeExecutableAndArgs = [\"node\"]\n+\n+ //\n+ // The path to the CLI configuration file. Default is empty.\n+ // bundleConfig = file(../rn-cli.config.js)\n+ //\n+ // The name of the generated asset file containing your JS bundle\n+ // bundleAssetName = \"MyApplication.android.bundle\"\n+ //\n+ // The entry file for bundle generation. Default is 'index.android.js' or 'index.js'\n+ // entryFile = file(\"../js/MyApplication.android.js\")\n+ //\n+ // A list of extra flags to pass to the 'bundle' commands.\n+ // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle\n+ // extraPackagerArgs = []\n+\n+ /* Hermes Commands */\n+ // The hermes compiler command to run. By default it is 'hermesc'\n+ // hermesCommand = \"$rootDir/my-custom-hermesc/bin/hermesc\"\n+ //\n+ // The list of flags to pass to the Hermes compiler. By default is \"-O\", \"-output-source-map\"\n+ // hermesFlags = [\"-O\", \"-output-source-map\"]\n+}\n \n /**\n- * Run Proguard to shrink the Java bytecode in release builds.\n+ * Set this to true to Run Proguard on Release builds to minify the Java bytecode.\n */\n def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInReleaseBuilds') ?: false).toBoolean()\n \n /**\n- * The preferred build flavor of JavaScriptCore.\n+ * The preferred build flavor of JavaScriptCore (JSC)\n *\n * For example, to use the international variant, you can use:\n * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`\n *\n * The international variant includes ICU i18n library and necessary data\n * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that\n- * give correct results when using with locales other than en-US. Note that\n+ * give correct results when using with locales other than en-US. Note that\n * this variant is about 6MiB larger per architecture than default.\n */\n def jscFlavor = 'org.webkit:android-jsc:+'\n \n-/**\n- * Whether to enable the Hermes VM.\n- *\n- * This should be set on project.ext.react and that value will be read here. If it is not set\n- * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode\n- * and the benefits of using Hermes will therefore be sharply reduced.\n- */\n-def enableHermes = project.ext.react.get(\"enableHermes\", false);\n-\n-/**\n- * Architectures to build native code for.\n- */\n-def reactNativeArchitectures() {\n- def value = project.getProperties().get(\"reactNativeArchitectures\")\n- return value ? value.split(\",\") : [\"armeabi-v7a\", \"x86\", \"x86_64\", \"arm64-v8a\"]\n-}\n-\n android {\n ndkVersion rootProject.ext.ndkVersion\n \n compileSdkVersion rootProject.ext.compileSdkVersion\n \n+ namespace \"com.helloworld\"\n defaultConfig {\n applicationId \"com.helloworld\"\n minSdkVersion rootProject.ext.minSdkVersion\n targetSdkVersion rootProject.ext.targetSdkVersion\n versionCode 1\n versionName \"1.0\"\n- buildConfigField \"boolean\", \"IS_NEW_ARCHITECTURE_ENABLED\", isNewArchitectureEnabled().toString()\n-\n- if (isNewArchitectureEnabled()) {\n- // We configure the NDK build only if you decide to opt-in for the New Architecture.\n- externalNativeBuild {\n- ndkBuild {\n- arguments \"APP_PLATFORM=android-21\",\n- \"APP_STL=c++_shared\",\n- \"NDK_TOOLCHAIN_VERSION=clang\",\n- \"GENERATED_SRC_DIR=$buildDir/generated/source\",\n- \"PROJECT_BUILD_DIR=$buildDir\",\n- \"REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid\",\n- \"REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build\"\n- cFlags \"-Wall\", \"-Werror\", \"-fexceptions\", \"-frtti\", \"-DWITH_INSPECTOR=1\"\n- cppFlags \"-std=c++17\"\n- // Make sure this target name is the same you specify inside the\n- // src/main/jni/Android.mk file for the `LOCAL_MODULE` variable.\n- targets \"helloworld_appmodules\"\n-\n- // Fix for windows limit on number of character in file paths and in command lines\n- if (Os.isFamily(Os.FAMILY_WINDOWS)) {\n- arguments \"NDK_APP_SHORT_COMMANDS=true\"\n- }\n- }\n- }\n- if (!enableSeparateBuildPerCPUArchitecture) {\n- ndk {\n- abiFilters (*reactNativeArchitectures())\n- }\n- }\n- }\n- }\n-\n- if (isNewArchitectureEnabled()) {\n- // We configure the NDK build only if you decide to opt-in for the New Architecture.\n- externalNativeBuild {\n- ndkBuild {\n- path \"$projectDir/src/main/jni/Android.mk\"\n- }\n- }\n- def reactAndroidProjectDir = project(':ReactAndroid').projectDir\n- def packageReactNdkDebugLibs = tasks.register(\"packageReactNdkDebugLibs\", Copy) {\n- dependsOn(\":ReactAndroid:packageReactNdkDebugLibsForBuck\")\n- from(\"$reactAndroidProjectDir/src/main/jni/prebuilt/lib\")\n- into(\"$buildDir/react-ndk/exported\")\n- }\n- def packageReactNdkReleaseLibs = tasks.register(\"packageReactNdkReleaseLibs\", Copy) {\n- dependsOn(\":ReactAndroid:packageReactNdkReleaseLibsForBuck\")\n- from(\"$reactAndroidProjectDir/src/main/jni/prebuilt/lib\")\n- into(\"$buildDir/react-ndk/exported\")\n- }\n- afterEvaluate {\n- // If you wish to add a custom TurboModule or component locally,\n- // you should uncomment this line.\n- // preBuild.dependsOn(\"generateCodegenArtifactsFromSchema\")\n- preDebugBuild.dependsOn(packageReactNdkDebugLibs)\n- preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)\n \n- // Due to a bug inside AGP, we have to explicitly set a dependency\n- // between configureNdkBuild* tasks and the preBuild tasks.\n- // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732\n- configureNdkBuildRelease.dependsOn(preReleaseBuild)\n- configureNdkBuildDebug.dependsOn(preDebugBuild)\n- reactNativeArchitectures().each { architecture ->\n- tasks.findByName(\"configureNdkBuildDebug[${architecture}]\")?.configure {\n- dependsOn(\"preDebugBuild\")\n- }\n- tasks.findByName(\"configureNdkBuildRelease[${architecture}]\")?.configure {\n- dependsOn(\"preReleaseBuild\")\n- }\n- }\n- }\n- }\n-\n- splits {\n- abi {\n- reset()\n- enable enableSeparateBuildPerCPUArchitecture\n- universalApk false // If true, also generate a universal APK\n- include (*reactNativeArchitectures())\n- }\n+ buildConfigField(\"boolean\", \"REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS\", (findProperty(\"reactNative.unstable_useRuntimeSchedulerAlways\") ?: true).toString())\n }\n signingConfigs {\n debug {\n@@ -244,25 +107,11 @@ android {\n // Caution! In production, you need to generate your own keystore file.\n // see https://reactnative.dev/docs/signed-apk-android.\n signingConfig signingConfigs.debug\n+ shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false)\n minifyEnabled enableProguardInReleaseBuilds\n proguardFiles getDefaultProguardFile(\"proguard-android.txt\"), \"proguard-rules.pro\"\n }\n }\n-\n- // applicationVariants are e.g. debug, release\n- applicationVariants.all { variant ->\n- variant.outputs.each { output ->\n- // For each separate APK per architecture, set a unique version code as described here:\n- // https://developer.android.com/studio/build/configure-apk-splits.html\n- def versionCodes = [\"armeabi-v7a\": 1, \"x86\": 2, \"arm64-v8a\": 3, \"x86_64\": 4]\n- def abi = output.getFilter(OutputFile.ABI)\n- if (abi != null) { // null for the universal-debug, universal-release variants\n- output.versionCodeOverride =\n- versionCodes.get(abi) * 1048576 + defaultConfig.versionCode\n- }\n-\n- }\n- }\n }\n \n // Apply static values from `gradle.properties` to the `android.packagingOptions`\n@@ -286,10 +135,8 @@ android {\n }\n \n dependencies {\n- implementation fileTree(dir: \"libs\", include: [\"*.jar\"])\n-\n- //noinspection GradleDynamicVersion\n- implementation \"com.facebook.react:react-native:+\" // From node_modules\n+ // The version of react-native is set by the React Native Gradle Plugin\n+ implementation(\"com.facebook.react:react-android\")\n \n def isGifEnabled = (findProperty('expo.gif.enabled') ?: \"\") == \"true\";\n def isWebpEnabled = (findProperty('expo.webp.enabled') ?: \"\") == \"true\";\n@@ -298,70 +145,36 @@ dependencies {\n \n // If your app supports Android versions before Ice Cream Sandwich (API level 14)\n if (isGifEnabled || isWebpEnabled) {\n- implementation \"com.facebook.fresco:fresco:${frescoVersion}\"\n- implementation \"com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:fresco:${frescoVersion}\")\n+ implementation(\"com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}\")\n }\n \n if (isGifEnabled) {\n // For animated gif support\n- implementation \"com.facebook.fresco:animated-gif:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:animated-gif:${frescoVersion}\")\n }\n \n if (isWebpEnabled) {\n // For webp support\n- implementation \"com.facebook.fresco:webpsupport:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:webpsupport:${frescoVersion}\")\n if (isWebpAnimatedEnabled) {\n // Animated webp support\n- implementation \"com.facebook.fresco:animated-webp:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:animated-webp:${frescoVersion}\")\n }\n }\n \n- implementation \"androidx.swiperefreshlayout:swiperefreshlayout:1.0.0\"\n- debugImplementation(\"com.facebook.flipper:flipper:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.fbjni'\n- }\n+ debugImplementation(\"com.facebook.flipper:flipper:${FLIPPER_VERSION}\")\n debugImplementation(\"com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.flipper'\n exclude group:'com.squareup.okhttp3', module:'okhttp'\n }\n- debugImplementation(\"com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.flipper'\n- }\n+ debugImplementation(\"com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}\")\n \n- if (enableHermes) {\n- debugImplementation files(new File([\"node\", \"--print\", \"require.resolve('hermes-engine/package.json')\"].execute(null, rootDir).text.trim(), \"../android/hermes-debug.aar\"))\n- releaseImplementation files(new File([\"node\", \"--print\", \"require.resolve('hermes-engine/package.json')\"].execute(null, rootDir).text.trim(), \"../android/hermes-release.aar\"))\n+ if (hermesEnabled.toBoolean()) {\n+ implementation(\"com.facebook.react:hermes-android\")\n } else {\n implementation jscFlavor\n }\n }\n \n-if (isNewArchitectureEnabled()) {\n- // If new architecture is enabled, we let you build RN from source\n- // Otherwise we fallback to a prebuilt .aar bundled in the NPM package.\n- // This will be applied to all the imported transtitive dependency.\n- configurations.all {\n- resolutionStrategy.dependencySubstitution {\n- substitute(module(\"com.facebook.react:react-native\"))\n- .using(project(\":ReactAndroid\")).because(\"On New Architecture we're building React Native from source\")\n- }\n- }\n-}\n-\n-// Run this once to be able to run the application with BUCK\n-// puts all compile dependencies into folder libs for BUCK to use\n-task copyDownloadableDepsToLibs(type: Copy) {\n- from configurations.implementation\n- into 'libs'\n-}\n-\n apply from: new File([\"node\", \"--print\", \"require.resolve('@react-native-community/cli-platform-android/package.json')\"].execute(null, rootDir).text.trim(), \"../native_modules.gradle\");\n applyNativeModulesAppBuildGradle(project)\n-\n-def isNewArchitectureEnabled() {\n- // To opt-in for the New Architecture, you can either:\n- // - Set `newArchEnabled` to true inside the `gradle.properties` file\n- // - Invoke gradle with `-newArchEnabled=true`\n- // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`\n- return project.hasProperty(\"newArchEnabled\") && project.newArchEnabled == \"true\"\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/build_defs.bzl b/templates/expo-template-bare-minimum/android/app/build_defs.bzl\ndeleted file mode 100644\nindex fff270f8d1..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/build_defs.bzl\n+++ /dev/null\n@@ -1,19 +0,0 @@\n-\"\"\"Helper definitions to glob .aar and .jar targets\"\"\"\n-\n-def create_aar_targets(aarfiles):\n- for aarfile in aarfiles:\n- name = \"aars__\" + aarfile[aarfile.rindex(\"/\") + 1:aarfile.rindex(\".aar\")]\n- lib_deps.append(\":\" + name)\n- android_prebuilt_aar(\n- name = name,\n- aar = aarfile,\n- )\n-\n-def create_jar_targets(jarfiles):\n- for jarfile in jarfiles:\n- name = \"jars__\" + jarfile[jarfile.rindex(\"/\") + 1:jarfile.rindex(\".jar\")]\n- lib_deps.append(\":\" + name)\n- prebuilt_jar(\n- name = name,\n- binary_jar = jarfile,\n- )\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/debug/AndroidManifest.xml b/templates/expo-template-bare-minimum/android/app/src/debug/AndroidManifest.xml\nindex 99e38fc5f8..3ec2507bab 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/debug/AndroidManifest.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/debug/AndroidManifest.xml\n@@ -3,5 +3,5 @@\n \n \n \n- \n+ \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java b/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\nindex 8cddb11cb2..595dd5831c 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\n@@ -1,5 +1,5 @@\n /**\n- * Copyright (c) Facebook, Inc. and its affiliates.\n+ * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n *

This source code is licensed under the MIT license found in the LICENSE file in the root\n * directory of this source tree.\n@@ -17,22 +17,27 @@ import com.facebook.flipper.plugins.inspector.DescriptorMapping;\n import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;\n import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;\n import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;\n-import com.facebook.flipper.plugins.react.ReactFlipperPlugin;\n import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;\n+import com.facebook.react.ReactInstanceEventListener;\n import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.bridge.ReactContext;\n import com.facebook.react.modules.network.NetworkingModule;\n import okhttp3.OkHttpClient;\n \n+/**\n+ * Class responsible of loading Flipper inside your React Native application. This is the debug\n+ * flavor of it. Here you can add your own plugins and customize the Flipper setup.\n+ */\n public class ReactNativeFlipper {\n public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {\n if (FlipperUtils.shouldEnableFlipper(context)) {\n final FlipperClient client = AndroidFlipperClient.getInstance(context);\n+\n client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));\n- client.addPlugin(new ReactFlipperPlugin());\n client.addPlugin(new DatabasesFlipperPlugin(context));\n client.addPlugin(new SharedPreferencesFlipperPlugin(context));\n client.addPlugin(CrashReporterPlugin.getInstance());\n+\n NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();\n NetworkingModule.setCustomClientBuilder(\n new NetworkingModule.CustomClientBuilder() {\n@@ -43,12 +48,13 @@ public class ReactNativeFlipper {\n });\n client.addPlugin(networkFlipperPlugin);\n client.start();\n+\n // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized\n // Hence we run if after all native modules have been initialized\n ReactContext reactContext = reactInstanceManager.getCurrentReactContext();\n if (reactContext == null) {\n reactInstanceManager.addReactInstanceEventListener(\n- new ReactInstanceManager.ReactInstanceEventListener() {\n+ new ReactInstanceEventListener() {\n @Override\n public void onReactContextInitialized(ReactContext reactContext) {\n reactInstanceManager.removeReactInstanceEventListener(this);\n@@ -66,4 +72,4 @@ public class ReactNativeFlipper {\n }\n }\n }\n-}\n\\ No newline at end of file\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml b/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\nindex 0cad655b33..34a7ca8314 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n@@ -1,4 +1,4 @@\n-\n+\n \n \n \n@@ -18,7 +18,7 @@\n \n \n \n- \n+ \n \n \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\nindex 576e23db45..176fbf6a2a 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n@@ -5,7 +5,8 @@ import android.os.Bundle;\n \n import com.facebook.react.ReactActivity;\n import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactActivityDelegate;\n \n import expo.modules.ReactActivityDelegateWrapper;\n \n@@ -28,11 +29,18 @@ public class MainActivity extends ReactActivity {\n return \"main\";\n }\n \n+ /**\n+ * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link\n+ * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React\n+ * (aka React 18) with two boolean flags.\n+ */\n @Override\n protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this,\n- new ReactActivityDelegate(this, getMainComponentName())\n- );\n+ return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, new DefaultReactActivityDelegate(\n+ this,\n+ getMainComponentName(),\n+ // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n+ DefaultNewArchitectureEntryPoint.getFabricEnabled()));\n }\n \n /**\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\nindex 7deb688b07..e7f376902d 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n@@ -1,69 +1,76 @@\n package com.helloworld;\n \n import android.app.Application;\n-import android.content.Context;\n import android.content.res.Configuration;\n import androidx.annotation.NonNull;\n \n import com.facebook.react.PackageList;\n import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.ReactNativeHost;\n import com.facebook.react.ReactPackage;\n import com.facebook.react.config.ReactFeatureFlags;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactNativeHost;\n import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n \n import expo.modules.ApplicationLifecycleDispatcher;\n import expo.modules.ReactNativeHostWrapper;\n \n-import java.lang.reflect.InvocationTargetException;\n import java.util.List;\n \n public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n \n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n+ private final ReactNativeHost mReactNativeHost =\n+ new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) {\n+ @Override\n+ public boolean getUseDeveloperSupport() {\n+ return BuildConfig.DEBUG;\n+ }\n \n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n+ @Override\n+ protected List getPackages() {\n+ @SuppressWarnings(\"UnnecessaryLocalVariable\")\n+ List packages = new PackageList(this).getPackages();\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return packages;\n+ }\n \n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n+ @Override\n+ protected String getJSMainModuleName() {\n+ return \".expo/.virtual-metro-entry\";\n+ }\n+\n+ @Override\n+ protected boolean isNewArchEnabled() {\n+ return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n+ }\n+\n+ @Override\n+ protected Boolean isHermesEnabled() {\n+ return BuildConfig.IS_HERMES_ENABLED;\n+ }\n+ });\n \n @Override\n public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n+ return mReactNativeHost;\n }\n \n @Override\n public void onCreate() {\n super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ if (!BuildConfig.REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS) {\n+ ReactFeatureFlags.unstable_useRuntimeSchedulerAlways = false;\n+ }\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ DefaultNewArchitectureEntryPoint.load();\n+ }\n+ if (BuildConfig.DEBUG) {\n+ ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ }\n ApplicationLifecycleDispatcher.onApplicationCreate(this);\n }\n \n@@ -72,35 +79,4 @@ public class MainApplication extends Application implements ReactApplication {\n super.onConfigurationChanged(newConfig);\n ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex f555e36448..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,116 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- new EmptyReactNativeConfig(),\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex 0ae6366756..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,49 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source \n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_futures \\\n- libfolly_json \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 0ac23cc626..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,24 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex 0fa43fa69a..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex dbbdc3d132..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 25f27722d0..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(std::string name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 8f7edffd64..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,61 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..73b37e4d99 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -20,7 +20,7 @@\n android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n \n \n- \n@@ -18,7 +18,7 @@\n \n \n \n- \n+ \n \n \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\nindex 8e13797d9b..176fbf6a2a 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n@@ -5,7 +5,8 @@ import android.os.Bundle;\n \n import com.facebook.react.ReactActivity;\n import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactActivityDelegate;\n \n import expo.modules.ReactActivityDelegateWrapper;\n \n@@ -29,15 +30,17 @@ public class MainActivity extends ReactActivity {\n }\n \n /**\n- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n- * (Paper).\n+ * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link\n+ * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React\n+ * (aka React 18) with two boolean flags.\n */\n @Override\n protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n- new MainActivityDelegate(this, getMainComponentName())\n- );\n+ return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, new DefaultReactActivityDelegate(\n+ this,\n+ getMainComponentName(),\n+ // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n+ DefaultNewArchitectureEntryPoint.getFabricEnabled()));\n }\n \n /**\n@@ -59,25 +62,4 @@ public class MainActivity extends ReactActivity {\n // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n super.invokeDefaultOnBackPressed();\n }\n-\n- public static class MainActivityDelegate extends ReactActivityDelegate {\n- public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n- super(activity, mainComponentName);\n- }\n-\n- @Override\n- protected ReactRootView createRootView() {\n- ReactRootView reactRootView = new ReactRootView(getContext());\n- // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n- reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n- return reactRootView;\n- }\n-\n- @Override\n- protected boolean isConcurrentRootEnabled() {\n- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\nindex 7deb688b07..e7f376902d 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n@@ -1,69 +1,76 @@\n package com.helloworld;\n \n import android.app.Application;\n-import android.content.Context;\n import android.content.res.Configuration;\n import androidx.annotation.NonNull;\n \n import com.facebook.react.PackageList;\n import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.ReactNativeHost;\n import com.facebook.react.ReactPackage;\n import com.facebook.react.config.ReactFeatureFlags;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactNativeHost;\n import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n \n import expo.modules.ApplicationLifecycleDispatcher;\n import expo.modules.ReactNativeHostWrapper;\n \n-import java.lang.reflect.InvocationTargetException;\n import java.util.List;\n \n public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n \n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n+ private final ReactNativeHost mReactNativeHost =\n+ new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) {\n+ @Override\n+ public boolean getUseDeveloperSupport() {\n+ return BuildConfig.DEBUG;\n+ }\n \n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n+ @Override\n+ protected List getPackages() {\n+ @SuppressWarnings(\"UnnecessaryLocalVariable\")\n+ List packages = new PackageList(this).getPackages();\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return packages;\n+ }\n \n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n+ @Override\n+ protected String getJSMainModuleName() {\n+ return \".expo/.virtual-metro-entry\";\n+ }\n+\n+ @Override\n+ protected boolean isNewArchEnabled() {\n+ return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n+ }\n+\n+ @Override\n+ protected Boolean isHermesEnabled() {\n+ return BuildConfig.IS_HERMES_ENABLED;\n+ }\n+ });\n \n @Override\n public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n+ return mReactNativeHost;\n }\n \n @Override\n public void onCreate() {\n super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ if (!BuildConfig.REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS) {\n+ ReactFeatureFlags.unstable_useRuntimeSchedulerAlways = false;\n+ }\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ DefaultNewArchitectureEntryPoint.load();\n+ }\n+ if (BuildConfig.DEBUG) {\n+ ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ }\n ApplicationLifecycleDispatcher.onApplicationCreate(this);\n }\n \n@@ -72,35 +79,4 @@ public class MainApplication extends Application implements ReactApplication {\n super.onConfigurationChanged(newConfig);\n ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex 7665dd923f..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,117 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.fabric.ReactNativeConfig;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- ReactNativeConfig.DEFAULT_CONFIG,\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex cda1391225..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source\n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_runtime \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 0ac23cc626..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,24 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex 0fa43fa69a..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex dbbdc3d132..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 25f27722d0..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(std::string name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 8f7edffd64..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,61 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..73b37e4d99 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -20,7 +20,7 @@\n android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n \n \n- \n@@ -18,7 +18,7 @@\n \n \n \n- \n+ \n \n \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\nindex 8e13797d9b..176fbf6a2a 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n@@ -5,7 +5,8 @@ import android.os.Bundle;\n \n import com.facebook.react.ReactActivity;\n import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactActivityDelegate;\n \n import expo.modules.ReactActivityDelegateWrapper;\n \n@@ -29,15 +30,17 @@ public class MainActivity extends ReactActivity {\n }\n \n /**\n- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n- * (Paper).\n+ * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link\n+ * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React\n+ * (aka React 18) with two boolean flags.\n */\n @Override\n protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n- new MainActivityDelegate(this, getMainComponentName())\n- );\n+ return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, new DefaultReactActivityDelegate(\n+ this,\n+ getMainComponentName(),\n+ // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n+ DefaultNewArchitectureEntryPoint.getFabricEnabled()));\n }\n \n /**\n@@ -59,25 +62,4 @@ public class MainActivity extends ReactActivity {\n // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n super.invokeDefaultOnBackPressed();\n }\n-\n- public static class MainActivityDelegate extends ReactActivityDelegate {\n- public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n- super(activity, mainComponentName);\n- }\n-\n- @Override\n- protected ReactRootView createRootView() {\n- ReactRootView reactRootView = new ReactRootView(getContext());\n- // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n- reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n- return reactRootView;\n- }\n-\n- @Override\n- protected boolean isConcurrentRootEnabled() {\n- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\nindex 7deb688b07..e7f376902d 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n@@ -1,69 +1,76 @@\n package com.helloworld;\n \n import android.app.Application;\n-import android.content.Context;\n import android.content.res.Configuration;\n import androidx.annotation.NonNull;\n \n import com.facebook.react.PackageList;\n import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.ReactNativeHost;\n import com.facebook.react.ReactPackage;\n import com.facebook.react.config.ReactFeatureFlags;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactNativeHost;\n import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n \n import expo.modules.ApplicationLifecycleDispatcher;\n import expo.modules.ReactNativeHostWrapper;\n \n-import java.lang.reflect.InvocationTargetException;\n import java.util.List;\n \n public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n \n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n+ private final ReactNativeHost mReactNativeHost =\n+ new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) {\n+ @Override\n+ public boolean getUseDeveloperSupport() {\n+ return BuildConfig.DEBUG;\n+ }\n \n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n+ @Override\n+ protected List getPackages() {\n+ @SuppressWarnings(\"UnnecessaryLocalVariable\")\n+ List packages = new PackageList(this).getPackages();\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return packages;\n+ }\n \n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n+ @Override\n+ protected String getJSMainModuleName() {\n+ return \".expo/.virtual-metro-entry\";\n+ }\n+\n+ @Override\n+ protected boolean isNewArchEnabled() {\n+ return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n+ }\n+\n+ @Override\n+ protected Boolean isHermesEnabled() {\n+ return BuildConfig.IS_HERMES_ENABLED;\n+ }\n+ });\n \n @Override\n public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n+ return mReactNativeHost;\n }\n \n @Override\n public void onCreate() {\n super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ if (!BuildConfig.REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS) {\n+ ReactFeatureFlags.unstable_useRuntimeSchedulerAlways = false;\n+ }\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ DefaultNewArchitectureEntryPoint.load();\n+ }\n+ if (BuildConfig.DEBUG) {\n+ ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ }\n ApplicationLifecycleDispatcher.onApplicationCreate(this);\n }\n \n@@ -72,35 +79,4 @@ public class MainApplication extends Application implements ReactApplication {\n super.onConfigurationChanged(newConfig);\n ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex 7665dd923f..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,117 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.fabric.ReactNativeConfig;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- ReactNativeConfig.DEFAULT_CONFIG,\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt b/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\ndeleted file mode 100644\nindex d2cad3a326..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\n+++ /dev/null\n@@ -1,7 +0,0 @@\n-cmake_minimum_required(VERSION 3.13)\n-\n-# Define the library name here.\n-project(helloworld_appmodules)\n-\n-# This file includes all the necessary to let you build your application with the New Architecture.\n-include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 26162dd872..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string &moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n-\n- // Module providers autolinked by RN CLI\n- auto rncli_module = rncli_ModuleProvider(moduleName, params);\n- if (rncli_module != nullptr) {\n- return rncli_module;\n- }\n-\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex b38ccf53fd..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string &moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex 5fd688c509..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string &name,\n- const std::shared_ptr &jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string &name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- const std::string &name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 9ee38a81f6..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string &name,\n- const std::shared_ptr &jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string &name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(const std::string &name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 54f598a486..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,65 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Autolinked providers registered by RN CLI\n- rncli_registerProviders(providerRegistry);\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..73b37e4d99 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -20,7 +20,7 @@\n android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n \n \n- \n@@ -18,10 +18,10 @@\n \n \n \n- \n+ \n \n \n- \n+ \n \n \n \n@@ -29,4 +29,4 @@\n \n \n \n-\n+\n\\ No newline at end of file\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\ndeleted file mode 100644\nindex 576e23db45..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ /dev/null\n@@ -1,57 +0,0 @@\n-package com.helloworld;\n-\n-import android.os.Build;\n-import android.os.Bundle;\n-\n-import com.facebook.react.ReactActivity;\n-import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n-\n-import expo.modules.ReactActivityDelegateWrapper;\n-\n-public class MainActivity extends ReactActivity {\n- @Override\n- protected void onCreate(Bundle savedInstanceState) {\n- // Set the theme to AppTheme BEFORE onCreate to support \n- // coloring the background, status bar, and navigation bar.\n- // This is required for expo-splash-screen.\n- setTheme(R.style.AppTheme);\n- super.onCreate(null);\n- }\n-\n- /**\n- * Returns the name of the main component registered from JavaScript.\n- * This is used to schedule rendering of the component.\n- */\n- @Override\n- protected String getMainComponentName() {\n- return \"main\";\n- }\n-\n- @Override\n- protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this,\n- new ReactActivityDelegate(this, getMainComponentName())\n- );\n- }\n-\n- /**\n- * Align the back button behavior with Android S\n- * where moving root activities to background instead of finishing activities.\n- * @see onBackPressed\n- */\n- @Override\n- public void invokeDefaultOnBackPressed() {\n- if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n- if (!moveTaskToBack(false)) {\n- // For non-root activities, use the default implementation to finish them.\n- super.invokeDefaultOnBackPressed();\n- }\n- return;\n- }\n-\n- // Use the default back button implementation on Android S\n- // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n- super.invokeDefaultOnBackPressed();\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\nnew file mode 100644\nindex 0000000000..c4467326aa\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\n@@ -0,0 +1,61 @@\n+package com.helloworld\n+\n+import android.os.Build\n+import android.os.Bundle\n+\n+import com.facebook.react.ReactActivity\n+import com.facebook.react.ReactActivityDelegate\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled\n+import com.facebook.react.defaults.DefaultReactActivityDelegate\n+\n+import expo.modules.ReactActivityDelegateWrapper\n+\n+class MainActivity : ReactActivity() {\n+ override fun onCreate(savedInstanceState: Bundle?) {\n+ // Set the theme to AppTheme BEFORE onCreate to support\n+ // coloring the background, status bar, and navigation bar.\n+ // This is required for expo-splash-screen.\n+ setTheme(R.style.AppTheme);\n+ super.onCreate(null)\n+ }\n+\n+ /**\n+ * Returns the name of the main component registered from JavaScript. This is used to schedule\n+ * rendering of the component.\n+ */\n+ override fun getMainComponentName(): String = \"main\"\n+\n+ /**\n+ * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]\n+ * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]\n+ */\n+ override fun createReactActivityDelegate(): ReactActivityDelegate {\n+ return ReactActivityDelegateWrapper(\n+ this,\n+ BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n+ object : DefaultReactActivityDelegate(\n+ this,\n+ mainComponentName,\n+ fabricEnabled\n+ ){})\n+ }\n+\n+ /**\n+ * Align the back button behavior with Android S\n+ * where moving root activities to background instead of finishing activities.\n+ * @see onBackPressed\n+ */\n+ override fun invokeDefaultOnBackPressed() {\n+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n+ if (!moveTaskToBack(false)) {\n+ // For non-root activities, use the default implementation to finish them.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+ return\n+ }\n+\n+ // Use the default back button implementation on Android S\n+ // because it's doing more than [Activity.moveTaskToBack] in fact.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\ndeleted file mode 100644\nindex 7deb688b07..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ /dev/null\n@@ -1,106 +0,0 @@\n-package com.helloworld;\n-\n-import android.app.Application;\n-import android.content.Context;\n-import android.content.res.Configuration;\n-import androidx.annotation.NonNull;\n-\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n-import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n-\n-import expo.modules.ApplicationLifecycleDispatcher;\n-import expo.modules.ReactNativeHostWrapper;\n-\n-import java.lang.reflect.InvocationTargetException;\n-import java.util.List;\n-\n-public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n-\n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n-\n- @Override\n- public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n- }\n-\n- @Override\n- public void onCreate() {\n- super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- ApplicationLifecycleDispatcher.onApplicationCreate(this);\n- }\n-\n- @Override\n- public void onConfigurationChanged(@NonNull Configuration newConfig) {\n- super.onConfigurationChanged(newConfig);\n- ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n- }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\nnew file mode 100644\nindex 0000000000..8258c40ed4\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\n@@ -0,0 +1,65 @@\n+package com.helloworld\n+\n+import android.app.Application\n+import android.content.res.Configuration\n+import androidx.annotation.NonNull\n+\n+import com.facebook.react.PackageList\n+import com.facebook.react.ReactApplication\n+import com.facebook.react.ReactNativeHost\n+import com.facebook.react.ReactPackage\n+import com.facebook.react.ReactHost\n+import com.facebook.react.config.ReactFeatureFlags\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load\n+import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost\n+import com.facebook.react.defaults.DefaultReactNativeHost\n+import com.facebook.react.flipper.ReactNativeFlipper\n+import com.facebook.soloader.SoLoader\n+\n+import expo.modules.ApplicationLifecycleDispatcher\n+import expo.modules.ReactNativeHostWrapper\n+\n+class MainApplication : Application(), ReactApplication {\n+\n+ override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(\n+ this,\n+ object : DefaultReactNativeHost(this) {\n+ override fun getPackages(): List {\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return PackageList(this).packages\n+ }\n+\n+ override fun getJSMainModuleName(): String = \".expo/.virtual-metro-entry\"\n+\n+ override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG\n+\n+ override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED\n+ override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED\n+ }\n+ )\n+\n+ override val reactHost: ReactHost\n+ get() = getDefaultReactHost(this.applicationContext, reactNativeHost)\n+\n+ override fun onCreate() {\n+ super.onCreate()\n+ SoLoader.init(this, false)\n+ if (!BuildConfig.REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS) {\n+ ReactFeatureFlags.unstable_useRuntimeSchedulerAlways = false\n+ }\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ load()\n+ }\n+ if (BuildConfig.DEBUG) {\n+ ReactNativeFlipper.initializeFlipper(this, reactNativeHost.reactInstanceManager)\n+ }\n+ ApplicationLifecycleDispatcher.onApplicationCreate(this)\n+ }\n+\n+ override fun onConfigurationChanged(newConfig: Configuration) {\n+ super.onConfigurationChanged(newConfig)\n+ ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig)\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex f555e36448..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,116 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- new EmptyReactNativeConfig(),\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex 0ae6366756..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,49 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source \n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_futures \\\n- libfolly_json \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 0ac23cc626..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,24 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex 0fa43fa69a..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex dbbdc3d132..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 25f27722d0..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(std::string name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 8f7edffd64..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,61 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..73b37e4d99 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -20,7 +20,7 @@\n android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n \n \n- \n@@ -18,10 +18,10 @@\n \n \n \n- \n+ \n \n \n- \n+ \n \n \n \n@@ -29,4 +29,4 @@\n \n \n \n-\n+\n\\ No newline at end of file\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\ndeleted file mode 100644\nindex 8e13797d9b..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ /dev/null\n@@ -1,83 +0,0 @@\n-package com.helloworld;\n-\n-import android.os.Build;\n-import android.os.Bundle;\n-\n-import com.facebook.react.ReactActivity;\n-import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n-\n-import expo.modules.ReactActivityDelegateWrapper;\n-\n-public class MainActivity extends ReactActivity {\n- @Override\n- protected void onCreate(Bundle savedInstanceState) {\n- // Set the theme to AppTheme BEFORE onCreate to support \n- // coloring the background, status bar, and navigation bar.\n- // This is required for expo-splash-screen.\n- setTheme(R.style.AppTheme);\n- super.onCreate(null);\n- }\n-\n- /**\n- * Returns the name of the main component registered from JavaScript.\n- * This is used to schedule rendering of the component.\n- */\n- @Override\n- protected String getMainComponentName() {\n- return \"main\";\n- }\n-\n- /**\n- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n- * (Paper).\n- */\n- @Override\n- protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n- new MainActivityDelegate(this, getMainComponentName())\n- );\n- }\n-\n- /**\n- * Align the back button behavior with Android S\n- * where moving root activities to background instead of finishing activities.\n- * @see onBackPressed\n- */\n- @Override\n- public void invokeDefaultOnBackPressed() {\n- if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n- if (!moveTaskToBack(false)) {\n- // For non-root activities, use the default implementation to finish them.\n- super.invokeDefaultOnBackPressed();\n- }\n- return;\n- }\n-\n- // Use the default back button implementation on Android S\n- // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n- super.invokeDefaultOnBackPressed();\n- }\n-\n- public static class MainActivityDelegate extends ReactActivityDelegate {\n- public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n- super(activity, mainComponentName);\n- }\n-\n- @Override\n- protected ReactRootView createRootView() {\n- ReactRootView reactRootView = new ReactRootView(getContext());\n- // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n- reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n- return reactRootView;\n- }\n-\n- @Override\n- protected boolean isConcurrentRootEnabled() {\n- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\nnew file mode 100644\nindex 0000000000..c4467326aa\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\n@@ -0,0 +1,61 @@\n+package com.helloworld\n+\n+import android.os.Build\n+import android.os.Bundle\n+\n+import com.facebook.react.ReactActivity\n+import com.facebook.react.ReactActivityDelegate\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled\n+import com.facebook.react.defaults.DefaultReactActivityDelegate\n+\n+import expo.modules.ReactActivityDelegateWrapper\n+\n+class MainActivity : ReactActivity() {\n+ override fun onCreate(savedInstanceState: Bundle?) {\n+ // Set the theme to AppTheme BEFORE onCreate to support\n+ // coloring the background, status bar, and navigation bar.\n+ // This is required for expo-splash-screen.\n+ setTheme(R.style.AppTheme);\n+ super.onCreate(null)\n+ }\n+\n+ /**\n+ * Returns the name of the main component registered from JavaScript. This is used to schedule\n+ * rendering of the component.\n+ */\n+ override fun getMainComponentName(): String = \"main\"\n+\n+ /**\n+ * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]\n+ * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]\n+ */\n+ override fun createReactActivityDelegate(): ReactActivityDelegate {\n+ return ReactActivityDelegateWrapper(\n+ this,\n+ BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n+ object : DefaultReactActivityDelegate(\n+ this,\n+ mainComponentName,\n+ fabricEnabled\n+ ){})\n+ }\n+\n+ /**\n+ * Align the back button behavior with Android S\n+ * where moving root activities to background instead of finishing activities.\n+ * @see onBackPressed\n+ */\n+ override fun invokeDefaultOnBackPressed() {\n+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n+ if (!moveTaskToBack(false)) {\n+ // For non-root activities, use the default implementation to finish them.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+ return\n+ }\n+\n+ // Use the default back button implementation on Android S\n+ // because it's doing more than [Activity.moveTaskToBack] in fact.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\ndeleted file mode 100644\nindex 7deb688b07..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ /dev/null\n@@ -1,106 +0,0 @@\n-package com.helloworld;\n-\n-import android.app.Application;\n-import android.content.Context;\n-import android.content.res.Configuration;\n-import androidx.annotation.NonNull;\n-\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n-import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n-\n-import expo.modules.ApplicationLifecycleDispatcher;\n-import expo.modules.ReactNativeHostWrapper;\n-\n-import java.lang.reflect.InvocationTargetException;\n-import java.util.List;\n-\n-public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n-\n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n-\n- @Override\n- public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n- }\n-\n- @Override\n- public void onCreate() {\n- super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- ApplicationLifecycleDispatcher.onApplicationCreate(this);\n- }\n-\n- @Override\n- public void onConfigurationChanged(@NonNull Configuration newConfig) {\n- super.onConfigurationChanged(newConfig);\n- ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n- }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\nnew file mode 100644\nindex 0000000000..8258c40ed4\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\n@@ -0,0 +1,65 @@\n+package com.helloworld\n+\n+import android.app.Application\n+import android.content.res.Configuration\n+import androidx.annotation.NonNull\n+\n+import com.facebook.react.PackageList\n+import com.facebook.react.ReactApplication\n+import com.facebook.react.ReactNativeHost\n+import com.facebook.react.ReactPackage\n+import com.facebook.react.ReactHost\n+import com.facebook.react.config.ReactFeatureFlags\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load\n+import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost\n+import com.facebook.react.defaults.DefaultReactNativeHost\n+import com.facebook.react.flipper.ReactNativeFlipper\n+import com.facebook.soloader.SoLoader\n+\n+import expo.modules.ApplicationLifecycleDispatcher\n+import expo.modules.ReactNativeHostWrapper\n+\n+class MainApplication : Application(), ReactApplication {\n+\n+ override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(\n+ this,\n+ object : DefaultReactNativeHost(this) {\n+ override fun getPackages(): List {\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return PackageList(this).packages\n+ }\n+\n+ override fun getJSMainModuleName(): String = \".expo/.virtual-metro-entry\"\n+\n+ override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG\n+\n+ override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED\n+ override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED\n+ }\n+ )\n+\n+ override val reactHost: ReactHost\n+ get() = getDefaultReactHost(this.applicationContext, reactNativeHost)\n+\n+ override fun onCreate() {\n+ super.onCreate()\n+ SoLoader.init(this, false)\n+ if (!BuildConfig.REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS) {\n+ ReactFeatureFlags.unstable_useRuntimeSchedulerAlways = false\n+ }\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ load()\n+ }\n+ if (BuildConfig.DEBUG) {\n+ ReactNativeFlipper.initializeFlipper(this, reactNativeHost.reactInstanceManager)\n+ }\n+ ApplicationLifecycleDispatcher.onApplicationCreate(this)\n+ }\n+\n+ override fun onConfigurationChanged(newConfig: Configuration) {\n+ super.onConfigurationChanged(newConfig)\n+ ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig)\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex 7665dd923f..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,117 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.fabric.ReactNativeConfig;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- ReactNativeConfig.DEFAULT_CONFIG,\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex cda1391225..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source\n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_runtime \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 0ac23cc626..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,24 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex 0fa43fa69a..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex dbbdc3d132..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 25f27722d0..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(std::string name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 8f7edffd64..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,61 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..73b37e4d99 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -20,7 +20,7 @@\n android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n \n \n- \n@@ -18,10 +18,10 @@\n \n \n \n- \n+ \n \n \n- \n+ \n \n \n \n@@ -29,4 +29,4 @@\n \n \n \n-\n+\n\\ No newline at end of file\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\ndeleted file mode 100644\nindex 8e13797d9b..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ /dev/null\n@@ -1,83 +0,0 @@\n-package com.helloworld;\n-\n-import android.os.Build;\n-import android.os.Bundle;\n-\n-import com.facebook.react.ReactActivity;\n-import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n-\n-import expo.modules.ReactActivityDelegateWrapper;\n-\n-public class MainActivity extends ReactActivity {\n- @Override\n- protected void onCreate(Bundle savedInstanceState) {\n- // Set the theme to AppTheme BEFORE onCreate to support \n- // coloring the background, status bar, and navigation bar.\n- // This is required for expo-splash-screen.\n- setTheme(R.style.AppTheme);\n- super.onCreate(null);\n- }\n-\n- /**\n- * Returns the name of the main component registered from JavaScript.\n- * This is used to schedule rendering of the component.\n- */\n- @Override\n- protected String getMainComponentName() {\n- return \"main\";\n- }\n-\n- /**\n- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n- * (Paper).\n- */\n- @Override\n- protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n- new MainActivityDelegate(this, getMainComponentName())\n- );\n- }\n-\n- /**\n- * Align the back button behavior with Android S\n- * where moving root activities to background instead of finishing activities.\n- * @see onBackPressed\n- */\n- @Override\n- public void invokeDefaultOnBackPressed() {\n- if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n- if (!moveTaskToBack(false)) {\n- // For non-root activities, use the default implementation to finish them.\n- super.invokeDefaultOnBackPressed();\n- }\n- return;\n- }\n-\n- // Use the default back button implementation on Android S\n- // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n- super.invokeDefaultOnBackPressed();\n- }\n-\n- public static class MainActivityDelegate extends ReactActivityDelegate {\n- public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n- super(activity, mainComponentName);\n- }\n-\n- @Override\n- protected ReactRootView createRootView() {\n- ReactRootView reactRootView = new ReactRootView(getContext());\n- // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n- reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n- return reactRootView;\n- }\n-\n- @Override\n- protected boolean isConcurrentRootEnabled() {\n- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\nnew file mode 100644\nindex 0000000000..c4467326aa\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\n@@ -0,0 +1,61 @@\n+package com.helloworld\n+\n+import android.os.Build\n+import android.os.Bundle\n+\n+import com.facebook.react.ReactActivity\n+import com.facebook.react.ReactActivityDelegate\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled\n+import com.facebook.react.defaults.DefaultReactActivityDelegate\n+\n+import expo.modules.ReactActivityDelegateWrapper\n+\n+class MainActivity : ReactActivity() {\n+ override fun onCreate(savedInstanceState: Bundle?) {\n+ // Set the theme to AppTheme BEFORE onCreate to support\n+ // coloring the background, status bar, and navigation bar.\n+ // This is required for expo-splash-screen.\n+ setTheme(R.style.AppTheme);\n+ super.onCreate(null)\n+ }\n+\n+ /**\n+ * Returns the name of the main component registered from JavaScript. This is used to schedule\n+ * rendering of the component.\n+ */\n+ override fun getMainComponentName(): String = \"main\"\n+\n+ /**\n+ * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]\n+ * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]\n+ */\n+ override fun createReactActivityDelegate(): ReactActivityDelegate {\n+ return ReactActivityDelegateWrapper(\n+ this,\n+ BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n+ object : DefaultReactActivityDelegate(\n+ this,\n+ mainComponentName,\n+ fabricEnabled\n+ ){})\n+ }\n+\n+ /**\n+ * Align the back button behavior with Android S\n+ * where moving root activities to background instead of finishing activities.\n+ * @see onBackPressed\n+ */\n+ override fun invokeDefaultOnBackPressed() {\n+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n+ if (!moveTaskToBack(false)) {\n+ // For non-root activities, use the default implementation to finish them.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+ return\n+ }\n+\n+ // Use the default back button implementation on Android S\n+ // because it's doing more than [Activity.moveTaskToBack] in fact.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\ndeleted file mode 100644\nindex 7deb688b07..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ /dev/null\n@@ -1,106 +0,0 @@\n-package com.helloworld;\n-\n-import android.app.Application;\n-import android.content.Context;\n-import android.content.res.Configuration;\n-import androidx.annotation.NonNull;\n-\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n-import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n-\n-import expo.modules.ApplicationLifecycleDispatcher;\n-import expo.modules.ReactNativeHostWrapper;\n-\n-import java.lang.reflect.InvocationTargetException;\n-import java.util.List;\n-\n-public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n-\n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n-\n- @Override\n- public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n- }\n-\n- @Override\n- public void onCreate() {\n- super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- ApplicationLifecycleDispatcher.onApplicationCreate(this);\n- }\n-\n- @Override\n- public void onConfigurationChanged(@NonNull Configuration newConfig) {\n- super.onConfigurationChanged(newConfig);\n- ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n- }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\nnew file mode 100644\nindex 0000000000..8258c40ed4\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\n@@ -0,0 +1,65 @@\n+package com.helloworld\n+\n+import android.app.Application\n+import android.content.res.Configuration\n+import androidx.annotation.NonNull\n+\n+import com.facebook.react.PackageList\n+import com.facebook.react.ReactApplication\n+import com.facebook.react.ReactNativeHost\n+import com.facebook.react.ReactPackage\n+import com.facebook.react.ReactHost\n+import com.facebook.react.config.ReactFeatureFlags\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load\n+import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost\n+import com.facebook.react.defaults.DefaultReactNativeHost\n+import com.facebook.react.flipper.ReactNativeFlipper\n+import com.facebook.soloader.SoLoader\n+\n+import expo.modules.ApplicationLifecycleDispatcher\n+import expo.modules.ReactNativeHostWrapper\n+\n+class MainApplication : Application(), ReactApplication {\n+\n+ override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(\n+ this,\n+ object : DefaultReactNativeHost(this) {\n+ override fun getPackages(): List {\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return PackageList(this).packages\n+ }\n+\n+ override fun getJSMainModuleName(): String = \".expo/.virtual-metro-entry\"\n+\n+ override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG\n+\n+ override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED\n+ override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED\n+ }\n+ )\n+\n+ override val reactHost: ReactHost\n+ get() = getDefaultReactHost(this.applicationContext, reactNativeHost)\n+\n+ override fun onCreate() {\n+ super.onCreate()\n+ SoLoader.init(this, false)\n+ if (!BuildConfig.REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS) {\n+ ReactFeatureFlags.unstable_useRuntimeSchedulerAlways = false\n+ }\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ load()\n+ }\n+ if (BuildConfig.DEBUG) {\n+ ReactNativeFlipper.initializeFlipper(this, reactNativeHost.reactInstanceManager)\n+ }\n+ ApplicationLifecycleDispatcher.onApplicationCreate(this)\n+ }\n+\n+ override fun onConfigurationChanged(newConfig: Configuration) {\n+ super.onConfigurationChanged(newConfig)\n+ ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig)\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex 7665dd923f..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,117 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.fabric.ReactNativeConfig;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- ReactNativeConfig.DEFAULT_CONFIG,\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt b/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\ndeleted file mode 100644\nindex d2cad3a326..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\n+++ /dev/null\n@@ -1,7 +0,0 @@\n-cmake_minimum_required(VERSION 3.13)\n-\n-# Define the library name here.\n-project(helloworld_appmodules)\n-\n-# This file includes all the necessary to let you build your application with the New Architecture.\n-include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 26162dd872..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string &moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n-\n- // Module providers autolinked by RN CLI\n- auto rncli_module = rncli_ModuleProvider(moduleName, params);\n- if (rncli_module != nullptr) {\n- return rncli_module;\n- }\n-\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex b38ccf53fd..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string &moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex 5fd688c509..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string &name,\n- const std::shared_ptr &jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string &name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- const std::string &name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 9ee38a81f6..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string &name,\n- const std::shared_ptr &jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string &name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(const std::string &name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 54f598a486..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,65 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Autolinked providers registered by RN CLI\n- rncli_registerProviders(providerRegistry);\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..73b37e4d99 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -20,7 +20,7 @@\n android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n \n \n- \n@@ -18,10 +18,10 @@\n \n \n \n- \n+ \n \n- \n- \n+ \n+ \n \n \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\ndeleted file mode 100644\nindex 576e23db45..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ /dev/null\n@@ -1,57 +0,0 @@\n-package com.helloworld;\n-\n-import android.os.Build;\n-import android.os.Bundle;\n-\n-import com.facebook.react.ReactActivity;\n-import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n-\n-import expo.modules.ReactActivityDelegateWrapper;\n-\n-public class MainActivity extends ReactActivity {\n- @Override\n- protected void onCreate(Bundle savedInstanceState) {\n- // Set the theme to AppTheme BEFORE onCreate to support \n- // coloring the background, status bar, and navigation bar.\n- // This is required for expo-splash-screen.\n- setTheme(R.style.AppTheme);\n- super.onCreate(null);\n- }\n-\n- /**\n- * Returns the name of the main component registered from JavaScript.\n- * This is used to schedule rendering of the component.\n- */\n- @Override\n- protected String getMainComponentName() {\n- return \"main\";\n- }\n-\n- @Override\n- protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this,\n- new ReactActivityDelegate(this, getMainComponentName())\n- );\n- }\n-\n- /**\n- * Align the back button behavior with Android S\n- * where moving root activities to background instead of finishing activities.\n- * @see onBackPressed\n- */\n- @Override\n- public void invokeDefaultOnBackPressed() {\n- if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n- if (!moveTaskToBack(false)) {\n- // For non-root activities, use the default implementation to finish them.\n- super.invokeDefaultOnBackPressed();\n- }\n- return;\n- }\n-\n- // Use the default back button implementation on Android S\n- // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n- super.invokeDefaultOnBackPressed();\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\nnew file mode 100644\nindex 0000000000..c4467326aa\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\n@@ -0,0 +1,61 @@\n+package com.helloworld\n+\n+import android.os.Build\n+import android.os.Bundle\n+\n+import com.facebook.react.ReactActivity\n+import com.facebook.react.ReactActivityDelegate\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled\n+import com.facebook.react.defaults.DefaultReactActivityDelegate\n+\n+import expo.modules.ReactActivityDelegateWrapper\n+\n+class MainActivity : ReactActivity() {\n+ override fun onCreate(savedInstanceState: Bundle?) {\n+ // Set the theme to AppTheme BEFORE onCreate to support\n+ // coloring the background, status bar, and navigation bar.\n+ // This is required for expo-splash-screen.\n+ setTheme(R.style.AppTheme);\n+ super.onCreate(null)\n+ }\n+\n+ /**\n+ * Returns the name of the main component registered from JavaScript. This is used to schedule\n+ * rendering of the component.\n+ */\n+ override fun getMainComponentName(): String = \"main\"\n+\n+ /**\n+ * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]\n+ * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]\n+ */\n+ override fun createReactActivityDelegate(): ReactActivityDelegate {\n+ return ReactActivityDelegateWrapper(\n+ this,\n+ BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n+ object : DefaultReactActivityDelegate(\n+ this,\n+ mainComponentName,\n+ fabricEnabled\n+ ){})\n+ }\n+\n+ /**\n+ * Align the back button behavior with Android S\n+ * where moving root activities to background instead of finishing activities.\n+ * @see onBackPressed\n+ */\n+ override fun invokeDefaultOnBackPressed() {\n+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n+ if (!moveTaskToBack(false)) {\n+ // For non-root activities, use the default implementation to finish them.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+ return\n+ }\n+\n+ // Use the default back button implementation on Android S\n+ // because it's doing more than [Activity.moveTaskToBack] in fact.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\ndeleted file mode 100644\nindex 7deb688b07..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ /dev/null\n@@ -1,106 +0,0 @@\n-package com.helloworld;\n-\n-import android.app.Application;\n-import android.content.Context;\n-import android.content.res.Configuration;\n-import androidx.annotation.NonNull;\n-\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n-import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n-\n-import expo.modules.ApplicationLifecycleDispatcher;\n-import expo.modules.ReactNativeHostWrapper;\n-\n-import java.lang.reflect.InvocationTargetException;\n-import java.util.List;\n-\n-public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n-\n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n-\n- @Override\n- public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n- }\n-\n- @Override\n- public void onCreate() {\n- super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- ApplicationLifecycleDispatcher.onApplicationCreate(this);\n- }\n-\n- @Override\n- public void onConfigurationChanged(@NonNull Configuration newConfig) {\n- super.onConfigurationChanged(newConfig);\n- ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n- }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\nnew file mode 100644\nindex 0000000000..95ef45de96\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\n@@ -0,0 +1,57 @@\n+package com.helloworld\n+\n+import android.app.Application\n+import android.content.res.Configuration\n+import androidx.annotation.NonNull\n+\n+import com.facebook.react.PackageList\n+import com.facebook.react.ReactApplication\n+import com.facebook.react.ReactNativeHost\n+import com.facebook.react.ReactPackage\n+import com.facebook.react.ReactHost\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load\n+import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost\n+import com.facebook.react.defaults.DefaultReactNativeHost\n+import com.facebook.soloader.SoLoader\n+\n+import expo.modules.ApplicationLifecycleDispatcher\n+import expo.modules.ReactNativeHostWrapper\n+\n+class MainApplication : Application(), ReactApplication {\n+\n+ override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(\n+ this,\n+ object : DefaultReactNativeHost(this) {\n+ override fun getPackages(): List {\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return PackageList(this).packages\n+ }\n+\n+ override fun getJSMainModuleName(): String = \".expo/.virtual-metro-entry\"\n+\n+ override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG\n+\n+ override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED\n+ override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED\n+ }\n+ )\n+\n+ override val reactHost: ReactHost\n+ get() = getDefaultReactHost(this.applicationContext, reactNativeHost)\n+\n+ override fun onCreate() {\n+ super.onCreate()\n+ SoLoader.init(this, false)\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ load()\n+ }\n+ ApplicationLifecycleDispatcher.onApplicationCreate(this)\n+ }\n+\n+ override fun onConfigurationChanged(newConfig: Configuration) {\n+ super.onConfigurationChanged(newConfig)\n+ ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig)\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex f555e36448..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,116 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- new EmptyReactNativeConfig(),\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex 0ae6366756..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,49 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source \n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_futures \\\n- libfolly_json \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 0ac23cc626..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,24 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex 0fa43fa69a..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex dbbdc3d132..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 25f27722d0..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(std::string name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 8f7edffd64..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,61 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..73b37e4d99 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -20,7 +20,7 @@\n android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n \n \n- \n@@ -18,10 +18,10 @@\n \n \n \n- \n+ \n \n- \n- \n+ \n+ \n \n \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\ndeleted file mode 100644\nindex 8e13797d9b..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ /dev/null\n@@ -1,83 +0,0 @@\n-package com.helloworld;\n-\n-import android.os.Build;\n-import android.os.Bundle;\n-\n-import com.facebook.react.ReactActivity;\n-import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n-\n-import expo.modules.ReactActivityDelegateWrapper;\n-\n-public class MainActivity extends ReactActivity {\n- @Override\n- protected void onCreate(Bundle savedInstanceState) {\n- // Set the theme to AppTheme BEFORE onCreate to support \n- // coloring the background, status bar, and navigation bar.\n- // This is required for expo-splash-screen.\n- setTheme(R.style.AppTheme);\n- super.onCreate(null);\n- }\n-\n- /**\n- * Returns the name of the main component registered from JavaScript.\n- * This is used to schedule rendering of the component.\n- */\n- @Override\n- protected String getMainComponentName() {\n- return \"main\";\n- }\n-\n- /**\n- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n- * (Paper).\n- */\n- @Override\n- protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n- new MainActivityDelegate(this, getMainComponentName())\n- );\n- }\n-\n- /**\n- * Align the back button behavior with Android S\n- * where moving root activities to background instead of finishing activities.\n- * @see onBackPressed\n- */\n- @Override\n- public void invokeDefaultOnBackPressed() {\n- if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n- if (!moveTaskToBack(false)) {\n- // For non-root activities, use the default implementation to finish them.\n- super.invokeDefaultOnBackPressed();\n- }\n- return;\n- }\n-\n- // Use the default back button implementation on Android S\n- // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n- super.invokeDefaultOnBackPressed();\n- }\n-\n- public static class MainActivityDelegate extends ReactActivityDelegate {\n- public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n- super(activity, mainComponentName);\n- }\n-\n- @Override\n- protected ReactRootView createRootView() {\n- ReactRootView reactRootView = new ReactRootView(getContext());\n- // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n- reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n- return reactRootView;\n- }\n-\n- @Override\n- protected boolean isConcurrentRootEnabled() {\n- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\nnew file mode 100644\nindex 0000000000..c4467326aa\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\n@@ -0,0 +1,61 @@\n+package com.helloworld\n+\n+import android.os.Build\n+import android.os.Bundle\n+\n+import com.facebook.react.ReactActivity\n+import com.facebook.react.ReactActivityDelegate\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled\n+import com.facebook.react.defaults.DefaultReactActivityDelegate\n+\n+import expo.modules.ReactActivityDelegateWrapper\n+\n+class MainActivity : ReactActivity() {\n+ override fun onCreate(savedInstanceState: Bundle?) {\n+ // Set the theme to AppTheme BEFORE onCreate to support\n+ // coloring the background, status bar, and navigation bar.\n+ // This is required for expo-splash-screen.\n+ setTheme(R.style.AppTheme);\n+ super.onCreate(null)\n+ }\n+\n+ /**\n+ * Returns the name of the main component registered from JavaScript. This is used to schedule\n+ * rendering of the component.\n+ */\n+ override fun getMainComponentName(): String = \"main\"\n+\n+ /**\n+ * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]\n+ * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]\n+ */\n+ override fun createReactActivityDelegate(): ReactActivityDelegate {\n+ return ReactActivityDelegateWrapper(\n+ this,\n+ BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n+ object : DefaultReactActivityDelegate(\n+ this,\n+ mainComponentName,\n+ fabricEnabled\n+ ){})\n+ }\n+\n+ /**\n+ * Align the back button behavior with Android S\n+ * where moving root activities to background instead of finishing activities.\n+ * @see onBackPressed\n+ */\n+ override fun invokeDefaultOnBackPressed() {\n+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n+ if (!moveTaskToBack(false)) {\n+ // For non-root activities, use the default implementation to finish them.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+ return\n+ }\n+\n+ // Use the default back button implementation on Android S\n+ // because it's doing more than [Activity.moveTaskToBack] in fact.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\ndeleted file mode 100644\nindex 7deb688b07..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ /dev/null\n@@ -1,106 +0,0 @@\n-package com.helloworld;\n-\n-import android.app.Application;\n-import android.content.Context;\n-import android.content.res.Configuration;\n-import androidx.annotation.NonNull;\n-\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n-import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n-\n-import expo.modules.ApplicationLifecycleDispatcher;\n-import expo.modules.ReactNativeHostWrapper;\n-\n-import java.lang.reflect.InvocationTargetException;\n-import java.util.List;\n-\n-public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n-\n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n-\n- @Override\n- public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n- }\n-\n- @Override\n- public void onCreate() {\n- super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- ApplicationLifecycleDispatcher.onApplicationCreate(this);\n- }\n-\n- @Override\n- public void onConfigurationChanged(@NonNull Configuration newConfig) {\n- super.onConfigurationChanged(newConfig);\n- ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n- }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\nnew file mode 100644\nindex 0000000000..95ef45de96\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\n@@ -0,0 +1,57 @@\n+package com.helloworld\n+\n+import android.app.Application\n+import android.content.res.Configuration\n+import androidx.annotation.NonNull\n+\n+import com.facebook.react.PackageList\n+import com.facebook.react.ReactApplication\n+import com.facebook.react.ReactNativeHost\n+import com.facebook.react.ReactPackage\n+import com.facebook.react.ReactHost\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load\n+import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost\n+import com.facebook.react.defaults.DefaultReactNativeHost\n+import com.facebook.soloader.SoLoader\n+\n+import expo.modules.ApplicationLifecycleDispatcher\n+import expo.modules.ReactNativeHostWrapper\n+\n+class MainApplication : Application(), ReactApplication {\n+\n+ override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(\n+ this,\n+ object : DefaultReactNativeHost(this) {\n+ override fun getPackages(): List {\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return PackageList(this).packages\n+ }\n+\n+ override fun getJSMainModuleName(): String = \".expo/.virtual-metro-entry\"\n+\n+ override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG\n+\n+ override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED\n+ override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED\n+ }\n+ )\n+\n+ override val reactHost: ReactHost\n+ get() = getDefaultReactHost(this.applicationContext, reactNativeHost)\n+\n+ override fun onCreate() {\n+ super.onCreate()\n+ SoLoader.init(this, false)\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ load()\n+ }\n+ ApplicationLifecycleDispatcher.onApplicationCreate(this)\n+ }\n+\n+ override fun onConfigurationChanged(newConfig: Configuration) {\n+ super.onConfigurationChanged(newConfig)\n+ ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig)\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex 7665dd923f..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,117 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.fabric.ReactNativeConfig;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- ReactNativeConfig.DEFAULT_CONFIG,\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex cda1391225..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source\n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_runtime \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 0ac23cc626..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,24 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex 0fa43fa69a..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex dbbdc3d132..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 25f27722d0..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(std::string name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 8f7edffd64..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,61 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..73b37e4d99 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -20,7 +20,7 @@\n android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n \n \n- \n@@ -18,10 +18,10 @@\n \n \n \n- \n+ \n \n- \n- \n+ \n+ \n \n \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\ndeleted file mode 100644\nindex 8e13797d9b..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ /dev/null\n@@ -1,83 +0,0 @@\n-package com.helloworld;\n-\n-import android.os.Build;\n-import android.os.Bundle;\n-\n-import com.facebook.react.ReactActivity;\n-import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n-\n-import expo.modules.ReactActivityDelegateWrapper;\n-\n-public class MainActivity extends ReactActivity {\n- @Override\n- protected void onCreate(Bundle savedInstanceState) {\n- // Set the theme to AppTheme BEFORE onCreate to support \n- // coloring the background, status bar, and navigation bar.\n- // This is required for expo-splash-screen.\n- setTheme(R.style.AppTheme);\n- super.onCreate(null);\n- }\n-\n- /**\n- * Returns the name of the main component registered from JavaScript.\n- * This is used to schedule rendering of the component.\n- */\n- @Override\n- protected String getMainComponentName() {\n- return \"main\";\n- }\n-\n- /**\n- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n- * (Paper).\n- */\n- @Override\n- protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n- new MainActivityDelegate(this, getMainComponentName())\n- );\n- }\n-\n- /**\n- * Align the back button behavior with Android S\n- * where moving root activities to background instead of finishing activities.\n- * @see onBackPressed\n- */\n- @Override\n- public void invokeDefaultOnBackPressed() {\n- if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n- if (!moveTaskToBack(false)) {\n- // For non-root activities, use the default implementation to finish them.\n- super.invokeDefaultOnBackPressed();\n- }\n- return;\n- }\n-\n- // Use the default back button implementation on Android S\n- // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n- super.invokeDefaultOnBackPressed();\n- }\n-\n- public static class MainActivityDelegate extends ReactActivityDelegate {\n- public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n- super(activity, mainComponentName);\n- }\n-\n- @Override\n- protected ReactRootView createRootView() {\n- ReactRootView reactRootView = new ReactRootView(getContext());\n- // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n- reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n- return reactRootView;\n- }\n-\n- @Override\n- protected boolean isConcurrentRootEnabled() {\n- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\nnew file mode 100644\nindex 0000000000..c4467326aa\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\n@@ -0,0 +1,61 @@\n+package com.helloworld\n+\n+import android.os.Build\n+import android.os.Bundle\n+\n+import com.facebook.react.ReactActivity\n+import com.facebook.react.ReactActivityDelegate\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled\n+import com.facebook.react.defaults.DefaultReactActivityDelegate\n+\n+import expo.modules.ReactActivityDelegateWrapper\n+\n+class MainActivity : ReactActivity() {\n+ override fun onCreate(savedInstanceState: Bundle?) {\n+ // Set the theme to AppTheme BEFORE onCreate to support\n+ // coloring the background, status bar, and navigation bar.\n+ // This is required for expo-splash-screen.\n+ setTheme(R.style.AppTheme);\n+ super.onCreate(null)\n+ }\n+\n+ /**\n+ * Returns the name of the main component registered from JavaScript. This is used to schedule\n+ * rendering of the component.\n+ */\n+ override fun getMainComponentName(): String = \"main\"\n+\n+ /**\n+ * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]\n+ * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]\n+ */\n+ override fun createReactActivityDelegate(): ReactActivityDelegate {\n+ return ReactActivityDelegateWrapper(\n+ this,\n+ BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n+ object : DefaultReactActivityDelegate(\n+ this,\n+ mainComponentName,\n+ fabricEnabled\n+ ){})\n+ }\n+\n+ /**\n+ * Align the back button behavior with Android S\n+ * where moving root activities to background instead of finishing activities.\n+ * @see onBackPressed\n+ */\n+ override fun invokeDefaultOnBackPressed() {\n+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n+ if (!moveTaskToBack(false)) {\n+ // For non-root activities, use the default implementation to finish them.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+ return\n+ }\n+\n+ // Use the default back button implementation on Android S\n+ // because it's doing more than [Activity.moveTaskToBack] in fact.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\ndeleted file mode 100644\nindex 7deb688b07..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ /dev/null\n@@ -1,106 +0,0 @@\n-package com.helloworld;\n-\n-import android.app.Application;\n-import android.content.Context;\n-import android.content.res.Configuration;\n-import androidx.annotation.NonNull;\n-\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n-import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n-\n-import expo.modules.ApplicationLifecycleDispatcher;\n-import expo.modules.ReactNativeHostWrapper;\n-\n-import java.lang.reflect.InvocationTargetException;\n-import java.util.List;\n-\n-public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n-\n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n-\n- @Override\n- public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n- }\n-\n- @Override\n- public void onCreate() {\n- super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- ApplicationLifecycleDispatcher.onApplicationCreate(this);\n- }\n-\n- @Override\n- public void onConfigurationChanged(@NonNull Configuration newConfig) {\n- super.onConfigurationChanged(newConfig);\n- ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n- }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\nnew file mode 100644\nindex 0000000000..95ef45de96\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\n@@ -0,0 +1,57 @@\n+package com.helloworld\n+\n+import android.app.Application\n+import android.content.res.Configuration\n+import androidx.annotation.NonNull\n+\n+import com.facebook.react.PackageList\n+import com.facebook.react.ReactApplication\n+import com.facebook.react.ReactNativeHost\n+import com.facebook.react.ReactPackage\n+import com.facebook.react.ReactHost\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load\n+import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost\n+import com.facebook.react.defaults.DefaultReactNativeHost\n+import com.facebook.soloader.SoLoader\n+\n+import expo.modules.ApplicationLifecycleDispatcher\n+import expo.modules.ReactNativeHostWrapper\n+\n+class MainApplication : Application(), ReactApplication {\n+\n+ override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(\n+ this,\n+ object : DefaultReactNativeHost(this) {\n+ override fun getPackages(): List {\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return PackageList(this).packages\n+ }\n+\n+ override fun getJSMainModuleName(): String = \".expo/.virtual-metro-entry\"\n+\n+ override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG\n+\n+ override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED\n+ override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED\n+ }\n+ )\n+\n+ override val reactHost: ReactHost\n+ get() = getDefaultReactHost(this.applicationContext, reactNativeHost)\n+\n+ override fun onCreate() {\n+ super.onCreate()\n+ SoLoader.init(this, false)\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ load()\n+ }\n+ ApplicationLifecycleDispatcher.onApplicationCreate(this)\n+ }\n+\n+ override fun onConfigurationChanged(newConfig: Configuration) {\n+ super.onConfigurationChanged(newConfig)\n+ ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig)\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex 7665dd923f..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,117 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.fabric.ReactNativeConfig;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- ReactNativeConfig.DEFAULT_CONFIG,\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt b/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\ndeleted file mode 100644\nindex d2cad3a326..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\n+++ /dev/null\n@@ -1,7 +0,0 @@\n-cmake_minimum_required(VERSION 3.13)\n-\n-# Define the library name here.\n-project(helloworld_appmodules)\n-\n-# This file includes all the necessary to let you build your application with the New Architecture.\n-include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 26162dd872..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string &moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n-\n- // Module providers autolinked by RN CLI\n- auto rncli_module = rncli_ModuleProvider(moduleName, params);\n- if (rncli_module != nullptr) {\n- return rncli_module;\n- }\n-\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex b38ccf53fd..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string &moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex 5fd688c509..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string &name,\n- const std::shared_ptr &jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string &name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- const std::string &name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 9ee38a81f6..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string &name,\n- const std::shared_ptr &jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string &name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(const std::string &name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 54f598a486..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,65 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Autolinked providers registered by RN CLI\n- rncli_registerProviders(providerRegistry);\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..73b37e4d99 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -20,7 +20,7 @@\n android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n \n \n- \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\nindex 576e23db45..7e2823fb6c 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n@@ -5,7 +5,8 @@ import android.os.Bundle;\n \n import com.facebook.react.ReactActivity;\n import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactActivityDelegate;\n \n import expo.modules.ReactActivityDelegateWrapper;\n \n@@ -28,11 +29,21 @@ public class MainActivity extends ReactActivity {\n return \"main\";\n }\n \n+ /**\n+ * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link\n+ * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React\n+ * (aka React 18) with two boolean flags.\n+ */\n @Override\n protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this,\n- new ReactActivityDelegate(this, getMainComponentName())\n- );\n+ return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, new DefaultReactActivityDelegate(\n+ this,\n+ getMainComponentName(),\n+ // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n+ DefaultNewArchitectureEntryPoint.getFabricEnabled(), // fabricEnabled\n+ // If you opted-in for the New Architecture, we enable Concurrent React (i.e. React 18).\n+ DefaultNewArchitectureEntryPoint.getConcurrentReactEnabled() // concurrentRootEnabled\n+ ));\n }\n \n /**\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\nindex 7deb688b07..31c2b288c1 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n@@ -1,69 +1,70 @@\n package com.helloworld;\n \n import android.app.Application;\n-import android.content.Context;\n import android.content.res.Configuration;\n import androidx.annotation.NonNull;\n \n import com.facebook.react.PackageList;\n import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.ReactNativeHost;\n import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactNativeHost;\n import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n \n import expo.modules.ApplicationLifecycleDispatcher;\n import expo.modules.ReactNativeHostWrapper;\n \n-import java.lang.reflect.InvocationTargetException;\n import java.util.List;\n \n public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n \n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n+ private final ReactNativeHost mReactNativeHost =\n+ new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) {\n+ @Override\n+ public boolean getUseDeveloperSupport() {\n+ return BuildConfig.DEBUG;\n+ }\n \n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n+ @Override\n+ protected List getPackages() {\n+ @SuppressWarnings(\"UnnecessaryLocalVariable\")\n+ List packages = new PackageList(this).getPackages();\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return packages;\n+ }\n \n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n+ @Override\n+ protected String getJSMainModuleName() {\n+ return \"index\";\n+ }\n+\n+ @Override\n+ protected boolean isNewArchEnabled() {\n+ return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n+ }\n+\n+ @Override\n+ protected Boolean isHermesEnabled() {\n+ return BuildConfig.IS_HERMES_ENABLED;\n+ }\n+ });\n \n @Override\n public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n+ return mReactNativeHost;\n }\n \n @Override\n public void onCreate() {\n super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ DefaultNewArchitectureEntryPoint.load();\n+ }\n+ ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n ApplicationLifecycleDispatcher.onApplicationCreate(this);\n }\n \n@@ -72,35 +73,4 @@ public class MainApplication extends Application implements ReactApplication {\n super.onConfigurationChanged(newConfig);\n ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex f555e36448..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,116 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- new EmptyReactNativeConfig(),\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex 0ae6366756..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,49 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source \n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_futures \\\n- libfolly_json \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 0ac23cc626..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,24 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex 0fa43fa69a..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex dbbdc3d132..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 25f27722d0..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(std::string name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 8f7edffd64..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,61 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java b/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java\nnew file mode 100644\nindex 0000000000..b510364404\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java\n@@ -0,0 +1,20 @@\n+/**\n+ * Copyright (c) Meta Platforms, Inc. and affiliates.\n+ *\n+ *

This source code is licensed under the MIT license found in the LICENSE file in the root\n+ * directory of this source tree.\n+ */\n+package com.helloworld;\n+\n+import android.content.Context;\n+import com.facebook.react.ReactInstanceManager;\n+\n+/**\n+ * Class responsible of loading Flipper inside your React Native application. This is the release\n+ * flavor of it so it's empty as we don't want to load Flipper.\n+ */\n+public class ReactNativeFlipper {\n+ public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {\n+ // Do nothing as we don't want to initialize Flipper on Release.\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/build.gradle b/templates/expo-template-bare-minimum/android/build.gradle\nindex fa77528908..e5fda82878 100644\n--- a/templates/expo-template-bare-minimum/android/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/build.gradle\n@@ -1,50 +1,31 @@\n-import org.apache.tools.ant.taskdefs.condition.Os\n-\n // Top-level build file where you can add configuration options common to all sub-projects/modules.\n \n buildscript {\n ext {\n- buildToolsVersion = findProperty('android.buildToolsVersion') ?: '31.0.0'\n+ buildToolsVersion = findProperty('android.buildToolsVersion') ?: '33.0.0'\n minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '21')\n- compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '31')\n- targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '31')\n+ compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '33')\n+ targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '33')\n if (findProperty('android.kotlinVersion')) {\n kotlinVersion = findProperty('android.kotlinVersion')\n }\n frescoVersion = findProperty('expo.frescoVersion') ?: '2.5.0'\n \n- if (System.properties['os.arch'] == 'aarch64') {\n- // For M1 Users we need to use the NDK 24 which added support for aarch64\n- ndkVersion = '24.0.8215888'\n- } else {\n- // Otherwise we default to the side-by-side NDK version from AGP.\n- ndkVersion = '21.4.7075529'\n- }\n+ // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.\n+ ndkVersion = \"23.1.7779620\"\n }\n repositories {\n google()\n mavenCentral()\n }\n dependencies {\n- classpath('com.android.tools.build:gradle:7.0.4')\n+ classpath('com.android.tools.build:gradle:7.4.1')\n classpath('com.facebook.react:react-native-gradle-plugin')\n- classpath('de.undercouch:gradle-download-task:4.1.2')\n- // NOTE: Do not place your application dependencies here; they belong\n- // in the individual module build.gradle files\n }\n }\n \n-def REACT_NATIVE_VERSION = new File(['node', '--print',\"JSON.parse(require('fs').readFileSync(require.resolve('react-native/package.json'), 'utf-8')).version\"].execute(null, rootDir).text.trim())\n-\n allprojects {\n- configurations.all {\n- resolutionStrategy {\n- force \"com.facebook.react:react-native:\" + REACT_NATIVE_VERSION\n- }\n- }\n-\n repositories {\n- mavenLocal()\n maven {\n // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm\n url(new File(['node', '--print', \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), '../android'))\n@@ -55,13 +36,7 @@ allprojects {\n }\n \n google()\n- mavenCentral {\n- // We don't want to fetch react-native from Maven Central as there are\n- // older versions over there.\n- content {\n- excludeGroup 'com.facebook.react'\n- }\n- }\n+ mavenCentral()\n maven { url 'https://www.jitpack.io' }\n }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/gitignore b/templates/expo-template-bare-minimum/android/gitignore\nindex 64436baaf5..877b87e9a5 100644\n--- a/templates/expo-template-bare-minimum/android/gitignore\n+++ b/templates/expo-template-bare-minimum/android/gitignore\n@@ -11,11 +11,5 @@ local.properties\n *.iml\n *.hprof\n \n-# BUCK\n-buck-out/\n-\\.buckd/\n-*.keystore\n-!debug.keystore\n-\n # Bundle artifacts\n *.jsbundle\ndiff --git a/templates/expo-template-bare-minimum/android/gradle.properties b/templates/expo-template-bare-minimum/android/gradle.properties\nindex fab3fb6bcf..9911ac4afd 100644\n--- a/templates/expo-template-bare-minimum/android/gradle.properties\n+++ b/templates/expo-template-bare-minimum/android/gradle.properties\n@@ -42,7 +42,7 @@ newArchEnabled=false\n \n # The hosted JavaScript engine\n # Supported values: expo.jsEngine = \"hermes\" | \"jsc\"\n-expo.jsEngine=jsc\n+expo.jsEngine=hermes\n \n # Enable GIF support in React Native images (~200 B increase)\n expo.gif.enabled=true\ndiff --git a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar\nindex 7454180f2a..249e5832f0 100644\nBinary files a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar and b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar differ\ndiff --git a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\nindex 669386b870..8fad3f5a98 100644\n--- a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\n+++ b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\n@@ -1,5 +1,5 @@\n distributionBase=GRADLE_USER_HOME\n distributionPath=wrapper/dists\n-distributionUrl=https\\://services.gradle.org/distributions/gradle-7.3.3-all.zip\n+distributionUrl=https\\://services.gradle.org/distributions/gradle-7.5.1-all.zip\n zipStoreBase=GRADLE_USER_HOME\n zipStorePath=wrapper/dists\ndiff --git a/templates/expo-template-bare-minimum/android/gradlew b/templates/expo-template-bare-minimum/android/gradlew\nindex 1b6c787337..a69d9cb6c2 100755\n--- a/templates/expo-template-bare-minimum/android/gradlew\n+++ b/templates/expo-template-bare-minimum/android/gradlew\n@@ -205,6 +205,12 @@ set -- \\\n org.gradle.wrapper.GradleWrapperMain \\\n \"$@\"\n \n+# Stop when \"xargs\" is not available.\n+if ! command -v xargs >/dev/null 2>&1\n+then\n+ die \"xargs is not available\"\n+fi\n+\n # Use \"xargs\" to parse quoted args.\n #\n # With -n1 it outputs one arg per line, with the quotes and backslashes removed.\ndiff --git a/templates/expo-template-bare-minimum/android/gradlew.bat b/templates/expo-template-bare-minimum/android/gradlew.bat\nindex ac1b06f938..53a6b238d4 100644\n--- a/templates/expo-template-bare-minimum/android/gradlew.bat\n+++ b/templates/expo-template-bare-minimum/android/gradlew.bat\n@@ -14,7 +14,7 @@\n @rem limitations under the License.\r\n @rem\r\n \r\n-@if \"%DEBUG%\" == \"\" @echo off\r\n+@if \"%DEBUG%\"==\"\" @echo off\r\n @rem ##########################################################################\r\n @rem\r\n @rem Gradle startup script for Windows\r\n@@ -25,7 +25,7 @@\n if \"%OS%\"==\"Windows_NT\" setlocal\r\n \r\n set DIRNAME=%~dp0\r\n-if \"%DIRNAME%\" == \"\" set DIRNAME=.\r\n+if \"%DIRNAME%\"==\"\" set DIRNAME=.\r\n set APP_BASE_NAME=%~n0\r\n set APP_HOME=%DIRNAME%\r\n \r\n@@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome\n \r\n set JAVA_EXE=java.exe\r\n %JAVA_EXE% -version >NUL 2>&1\r\n-if \"%ERRORLEVEL%\" == \"0\" goto execute\r\n+if %ERRORLEVEL% equ 0 goto execute\r\n \r\n echo.\r\n echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\r\n@@ -75,13 +75,15 @@ set CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\n \r\n :end\r\n @rem End local scope for the variables with windows NT shell\r\n-if \"%ERRORLEVEL%\"==\"0\" goto mainEnd\r\n+if %ERRORLEVEL% equ 0 goto mainEnd\r\n \r\n :fail\r\n rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\r\n rem the _cmd.exe /c_ return code!\r\n-if not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\r\n-exit /b 1\r\n+set EXIT_CODE=%ERRORLEVEL%\r\n+if %EXIT_CODE% equ 0 set EXIT_CODE=1\r\n+if not \"\"==\"%GRADLE_EXIT_CONSOLE%\" exit %EXIT_CODE%\r\n+exit /b %EXIT_CODE%\r\n \r\n :mainEnd\r\n if \"%OS%\"==\"Windows_NT\" endlocal\r\ndiff --git a/templates/expo-template-bare-minimum/android/settings.gradle b/templates/expo-template-bare-minimum/android/settings.gradle\nindex fa543f0c69..1dc416e7c1 100644\n--- a/templates/expo-template-bare-minimum/android/settings.gradle\n+++ b/templates/expo-template-bare-minimum/android/settings.gradle\n@@ -8,8 +8,3 @@ applyNativeModulesSettingsGradle(settings)\n \n include ':app'\n includeBuild(new File([\"node\", \"--print\", \"require.resolve('react-native-gradle-plugin/package.json')\"].execute(null, rootDir).text.trim()).getParentFile())\n-\n-if (settings.hasProperty(\"newArchEnabled\") && settings.newArchEnabled == \"true\") {\n- include(\":ReactAndroid\")\n- project(\":ReactAndroid\").projectDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../ReactAndroid\");\n-}\ndiff --git a/templates/expo-template-bare-minimum/gitignore b/templates/expo-template-bare-minimum/gitignore\nindex c8eb0f9a64..df57ba88a1 100644\n--- a/templates/expo-template-bare-minimum/gitignore\n+++ b/templates/expo-template-bare-minimum/gitignore\n@@ -30,6 +30,9 @@ build/\n local.properties\n *.iml\n *.hprof\n+.cxx/\n+*.keystore\n+!debug.keystore\n \n # node.js\n #\n@@ -37,18 +40,15 @@ node_modules/\n npm-debug.log\n yarn-error.log\n \n-# BUCK\n-buck-out/\n-\\.buckd/\n-*.keystore\n-!debug.keystore\n-\n # Bundle artifacts\n *.jsbundle\n \n # CocoaPods\n /ios/Pods/\n \n+# Temporary files created by Metro to check the health of the file watcher\n+.metro-health-check*\n+\n # Expo\n .expo/\n web-build/\ndiff --git a/templates/expo-template-bare-minimum/ios/.xcode.env b/templates/expo-template-bare-minimum/ios/.xcode.env\nnew file mode 100644\nindex 0000000000..3d5782c715\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/ios/.xcode.env\n@@ -0,0 +1,11 @@\n+# This `.xcode.env` file is versioned and is used to source the environment\n+# used when running script phases inside Xcode.\n+# To customize your local environment, you can create an `.xcode.env.local`\n+# file that is not versioned.\n+\n+# NODE_BINARY variable contains the PATH to the node executable.\n+#\n+# Customize the NODE_BINARY variable here.\n+# For example, to use nvm with brew, add the following line\n+# . \"$(brew --prefix nvm)/nvm.sh\" --no-use\n+export NODE_BINARY=$(command -v node)\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\nindex 2ac180e425..98e6c2afea 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n@@ -214,7 +214,7 @@\n \t\t\t);\n \t\t\trunOnlyForDeploymentPostprocessing = 0;\n \t\t\tshellPath = /bin/sh;\n-\t\t\tshellScript = \"export NODE_BINARY=node\\n\\n# The project root by default is one level up from the ios directory\\nexport PROJECT_ROOT=\\\"$PROJECT_DIR\\\"/..\\n\\n`node --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\\\"`\\n\";\n+\t\t\tshellScript = \"if [[ -f \\\"$PODS_ROOT/../.xcode.env\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env\\\"\\nfi\\nif [[ -f \\\"$PODS_ROOT/../.xcode.env.local\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env.local\\\"\\nfi\\n\\n# The project root by default is one level up from the ios directory\\nexport PROJECT_ROOT=\\\"$PROJECT_DIR\\\"/..\\n\\nif [[ \\\"$CONFIGURATION\\\" = *Debug* ]]; then\\n export SKIP_BUNDLING=1\\nfi\\nif [[ -z \\\"$ENTRY_FILE\\\" ]]; then\\n # Set the entry JS file using the bundler's entry resolution.\\n export ENTRY_FILE=\\\"$(\\\"$NODE_BINARY\\\" -e \\\"require('expo/scripts/resolveAppEntry')\\\" $PROJECT_ROOT ios relative | tail -n 1)\\\"\\nfi\\n\\n`\\\"$NODE_BINARY\\\" --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\\\"`\\n\\n\";\n \t\t};\n \t\t08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = {\n \t\t\tisa = PBXShellScriptBuildPhase;\n@@ -276,7 +276,7 @@\n \t\t\t);\n \t\t\trunOnlyForDeploymentPostprocessing = 0;\n \t\t\tshellPath = /bin/sh;\n-\t\t\tshellScript = \"export RCT_METRO_PORT=\\\"${RCT_METRO_PORT:=8081}\\\"\\necho \\\"export RCT_METRO_PORT=${RCT_METRO_PORT}\\\" > `node --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/.packager.env'\\\"`\\nif [ -z \\\"${RCT_NO_LAUNCH_PACKAGER+xxx}\\\" ] ; then\\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\\n if ! curl -s \\\"http://localhost:${RCT_METRO_PORT}/status\\\" | grep -q \\\"packager-status:running\\\" ; then\\n echo \\\"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\\\"\\n exit 2\\n fi\\n else\\n open `node --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/launchPackager.command'\\\"` || echo \\\"Can't start packager automatically\\\"\\n fi\\nfi\\n\";\n+\t\t\tshellScript = \"if [[ -f \\\"$PODS_ROOT/../.xcode.env\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env\\\"\\nfi\\nif [[ -f \\\"$PODS_ROOT/../.xcode.env.local\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env.local\\\"\\nfi\\n\\nexport RCT_METRO_PORT=\\\"${RCT_METRO_PORT:=8081}\\\"\\necho \\\"export RCT_METRO_PORT=${RCT_METRO_PORT}\\\" > `$NODE_BINARY --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/.packager.env'\\\"`\\nif [ -z \\\"${RCT_NO_LAUNCH_PACKAGER+xxx}\\\" ] ; then\\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\\n if ! curl -s \\\"http://localhost:${RCT_METRO_PORT}/status\\\" | grep -q \\\"packager-status:running\\\" ; then\\n echo \\\"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\\\"\\n exit 2\\n fi\\n else\\n open `$NODE_BINARY --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/launchPackager.command'\\\"` || echo \\\"Can't start packager automatically\\\"\\n fi\\nfi\\n\";\n \t\t\tshowEnvVarsInLog = 0;\n \t\t};\n /* End PBXShellScriptBuildPhase section */\n@@ -308,8 +308,9 @@\n \t\t\t\t\t\"FB_SONARKIT_ENABLED=1\",\n \t\t\t\t);\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n+ MARKETING_VERSION = 1.0;\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n \t\t\t\t\t\"-ObjC\",\n@@ -331,8 +332,9 @@\n \t\t\t\tCLANG_ENABLE_MODULES = YES;\n \t\t\t\tCURRENT_PROJECT_VERSION = 1;\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n+ MARKETING_VERSION = 1.0;\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n \t\t\t\t\t\"-ObjC\",\n@@ -392,7 +394,7 @@\n \t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n \t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n \t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n \t\t\t\tLIBRARY_SEARCH_PATHS = \"\\\"$(inherited)\\\"\";\n \t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n@@ -441,7 +443,7 @@\n \t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n \t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n \t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n \t\t\t\tLIBRARY_SEARCH_PATHS = \"\\\"$(inherited)\\\"\";\n \t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\nindex f7d2972042..1658a437eb 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\n@@ -1,9 +1,7 @@\n-#import \n-#import \n+#import \n #import \n-\n #import \n \n-@interface AppDelegate : EXAppDelegateWrapper \n+@interface AppDelegate : EXAppDelegateWrapper\n \n @end\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\nindex aef81ec589..8cb5aef137 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\n@@ -1,66 +1,19 @@\n #import \"AppDelegate.h\"\n \n-#import \n #import \n-#import \n #import \n-#import \n-\n-#import \n-\n-#if RCT_NEW_ARCH_ENABLED\n-#import \n-#import \n-#import \n-#import \n-#import \n-#import \n-\n-#import \n-\n-@interface AppDelegate () {\n- RCTTurboModuleManager *_turboModuleManager;\n- RCTSurfacePresenterBridgeAdapter *_bridgeAdapter;\n- std::shared_ptr _reactNativeConfig;\n- facebook::react::ContextContainer::Shared _contextContainer;\n-}\n-@end\n-#endif\n \n @implementation AppDelegate\n \n - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions\n {\n- RCTAppSetupPrepareApp(application);\n-\n- RCTBridge *bridge = [self.reactDelegate createBridgeWithDelegate:self launchOptions:launchOptions];\n-\n-#if RCT_NEW_ARCH_ENABLED\n- _contextContainer = std::make_shared();\n- _reactNativeConfig = std::make_shared();\n- _contextContainer->insert(\"ReactNativeConfig\", _reactNativeConfig);\n- _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer];\n- bridge.surfacePresenter = _bridgeAdapter.surfacePresenter;\n-#endif\n+ self.moduleName = @\"main\";\n \n- UIView *rootView = [self.reactDelegate createRootViewWithBridge:bridge moduleName:@\"main\" initialProperties:nil];\n+ // You can add your custom initial props in the dictionary below.\n+ // They will be passed down to the ViewController used by React Native.\n+ self.initialProps = @{};\n \n- rootView.backgroundColor = [UIColor whiteColor];\n- self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];\n- UIViewController *rootViewController = [self.reactDelegate createRootViewController];\n- rootViewController.view = rootView;\n- self.window.rootViewController = rootViewController;\n- [self.window makeKeyAndVisible];\n-\n- [super application:application didFinishLaunchingWithOptions:launchOptions];\n-\n- return YES;\n-}\n-\n-- (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge\n-{\n- // If you'd like to export some custom RCTBridgeModules, add them here!\n- return @[];\n+ return [super application:application didFinishLaunchingWithOptions:launchOptions];\n }\n \n - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n@@ -72,6 +25,16 @@\n #endif\n }\n \n+/// This method controls whether the `concurrentRoot`feature of React18 is turned on or off.\n+///\n+/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html\n+/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture).\n+/// @return: `true` if the `concurrentRoot` feature is enabled. Otherwise, it returns `false`.\n+- (BOOL)concurrentRootEnabled\n+{\n+ return true;\n+}\n+\n // Linking API\n - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options {\n return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options];\n@@ -101,43 +64,4 @@\n return [super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];\n }\n \n-#if RCT_NEW_ARCH_ENABLED\n-\n-#pragma mark - RCTCxxBridgeDelegate\n-\n-- (std::unique_ptr)jsExecutorFactoryForBridge:(RCTBridge *)bridge\n-{\n- _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge\n- delegate:self\n- jsInvoker:bridge.jsCallInvoker];\n- return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager);\n-}\n-\n-#pragma mark RCTTurboModuleManagerDelegate\n-\n-- (Class)getModuleClassFromName:(const char *)name\n-{\n- return RCTCoreModulesClassProvider(name);\n-}\n-\n-- (std::shared_ptr)getTurboModule:(const std::string &)name\n- jsInvoker:(std::shared_ptr)jsInvoker\n-{\n- return nullptr;\n-}\n-\n-- (std::shared_ptr)getTurboModule:(const std::string &)name\n- initParams:\n- (const facebook::react::ObjCTurboModule::InitParams &)params\n-{\n- return nullptr;\n-}\n-\n-- (id)getModuleInstanceFromClass:(Class)moduleClass\n-{\n- return RCTAppSetupDefaultModuleFromClass(moduleClass);\n-}\n-\n-#endif\n-\n @end\ndiff --git a/templates/expo-template-bare-minimum/ios/Podfile b/templates/expo-template-bare-minimum/ios/Podfile\nindex 29797efaaa..e523ea5cac 100644\n--- a/templates/expo-template-bare-minimum/ios/Podfile\n+++ b/templates/expo-template-bare-minimum/ios/Podfile\n@@ -5,37 +5,79 @@ require File.join(File.dirname(`node --print \"require.resolve('@react-native-com\n require 'json'\n podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}\n \n-platform :ios, podfile_properties['ios.deploymentTarget'] || '12.0'\n+ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0'\n+ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = '1' if podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR'] == 'true'\n+\n+platform :ios, podfile_properties['ios.deploymentTarget'] || '13.0'\n install! 'cocoapods',\n :deterministic_uuids => false\n \n+prepare_react_native_project!\n+\n+# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set.\n+# because `react-native-flipper` depends on (FlipperKit,...), which will be excluded. To fix this,\n+# you can also exclude `react-native-flipper` in `react-native.config.js`\n+#\n+# ```js\n+# module.exports = {\n+# dependencies: {\n+# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),\n+# }\n+# }\n+# ```\n+flipper_config = FlipperConfiguration.disabled\n+if ENV['NO_FLIPPER'] == '1' then\n+ # Explicitly disabled through environment variables\n+ flipper_config = FlipperConfiguration.disabled\n+elsif podfile_properties.key?('ios.flipper') then\n+ # Configure Flipper in Podfile.properties.json\n+ if podfile_properties['ios.flipper'] == 'true' then\n+ flipper_config = FlipperConfiguration.enabled([\"Debug\", \"Release\"])\n+ elsif podfile_properties['ios.flipper'] != 'false' then\n+ flipper_config = FlipperConfiguration.enabled([\"Debug\", \"Release\"], { 'Flipper' => podfile_properties['ios.flipper'] })\n+ end\n+end\n+\n target 'HelloWorld' do\n use_expo_modules!\n config = use_native_modules!\n \n use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks']\n+ use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS']\n \n # Flags change depending on the env values.\n flags = get_default_flags()\n \n use_react_native!(\n :path => config[:reactNativePath],\n- :hermes_enabled => flags[:hermes_enabled] || podfile_properties['expo.jsEngine'] == 'hermes',\n+ :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes',\n :fabric_enabled => flags[:fabric_enabled],\n # An absolute path to your application root.\n- :app_path => \"#{Dir.pwd}/..\"\n+ :app_path => \"#{Pod::Config.instance.installation_root}/..\",\n+ # Note that if you have use_frameworks! enabled, Flipper will not work if enabled\n+ :flipper_configuration => flipper_config\n )\n \n- # Uncomment to opt-in to using Flipper\n- # Note that if you have use_frameworks! enabled, Flipper will not work\n- #\n- # if !ENV['CI']\n- # use_flipper!()\n- # end\n-\n post_install do |installer|\n- react_native_post_install(installer)\n+ react_native_post_install(\n+ installer,\n+ config[:reactNativePath],\n+ # Set `mac_catalyst_enabled` to `true` in order to apply patches\n+ # necessary for Mac Catalyst builds\n+ :mac_catalyst_enabled => false\n+ )\n __apply_Xcode_12_5_M1_post_install_workaround(installer)\n+\n+ # This is necessary for Xcode 14, because it signs resource bundles by default\n+ # when building for devices.\n+ installer.target_installation_results.pod_target_installation_results\n+ .each do |pod_name, target_installation_result|\n+ target_installation_result.resource_bundle_targets.each do |resource_bundle_target|\n+ resource_bundle_target.build_configurations.each do |config|\n+ config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'\n+ end\n+ end\n+ end\n end\n \n post_integrate do |installer|\n@@ -45,5 +87,4 @@ target 'HelloWorld' do\n Pod::UI.warn e\n end\n end\n-\n end\ndiff --git a/templates/expo-template-bare-minimum/ios/Podfile.properties.json b/templates/expo-template-bare-minimum/ios/Podfile.properties.json\nindex f6d872e81a..b1bd45da51 100644\n--- a/templates/expo-template-bare-minimum/ios/Podfile.properties.json\n+++ b/templates/expo-template-bare-minimum/ios/Podfile.properties.json\n@@ -1,3 +1,3 @@\n {\n- \"expo.jsEngine\": \"jsc\"\n+ \"expo.jsEngine\": \"hermes\"\n }\ndiff --git a/templates/expo-template-bare-minimum/ios/gitignore b/templates/expo-template-bare-minimum/ios/gitignore\nindex 2b13519939..8beb344303 100644\n--- a/templates/expo-template-bare-minimum/ios/gitignore\n+++ b/templates/expo-template-bare-minimum/ios/gitignore\n@@ -21,6 +21,7 @@ DerivedData\n *.ipa\n *.xcuserstate\n project.xcworkspace\n+.xcode.env.local\n \n # Bundle artifacts\n *.jsbundle\ndiff --git a/templates/expo-template-bare-minimum/package.json b/templates/expo-template-bare-minimum/package.json\nindex 69e7eb9619..d1fcd513cc 100644\n--- a/templates/expo-template-bare-minimum/package.json\n+++ b/templates/expo-template-bare-minimum/package.json\n@@ -1,7 +1,7 @@\n {\n \"name\": \"expo-template-bare-minimum\",\n \"description\": \"This bare project template includes a minimal setup for using unimodules with React Native.\",\n- \"version\": \"45.0.6\",\n+ \"version\": \"48.0.21\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"start\": \"expo start --dev-client\",\n@@ -10,15 +10,13 @@\n \"web\": \"expo start --web\"\n },\n \"dependencies\": {\n- \"expo\": \"~45.0.0\",\n- \"expo-splash-screen\": \"~0.15.1\",\n- \"expo-status-bar\": \"~1.3.0\",\n- \"react\": \"17.0.2\",\n- \"react-dom\": \"17.0.2\",\n- \"react-native\": \"0.68.2\",\n- \"react-native-web\": \"0.17.7\"\n+ \"expo\": \"~48.0.21\",\n+ \"expo-splash-screen\": \"~0.18.2\",\n+ \"expo-status-bar\": \"~1.4.4\",\n+ \"react\": \"18.2.0\",\n+ \"react-native\": \"0.71.14\"\n },\n \"devDependencies\": {\n- \"@babel/core\": \"^7.12.9\"\n+ \"@babel/core\": \"^7.20.0\"\n }\n }\n","46..48":"diff --git a/templates/expo-template-bare-minimum/.buckconfig b/templates/expo-template-bare-minimum/.buckconfig\ndeleted file mode 100644\nindex 934256cb29..0000000000\n--- a/templates/expo-template-bare-minimum/.buckconfig\n+++ /dev/null\n@@ -1,6 +0,0 @@\n-\n-[android]\n- target = Google Inc.:Google APIs:23\n-\n-[maven_repositories]\n- central = https://repo1.maven.org/maven2\ndiff --git a/templates/expo-template-bare-minimum/.npmignore b/templates/expo-template-bare-minimum/.npmignore\nindex 35490b6612..4e6ce00391 100644\n--- a/templates/expo-template-bare-minimum/.npmignore\n+++ b/templates/expo-template-bare-minimum/.npmignore\n@@ -20,3 +20,4 @@ ios/Pods\n android/.build\n android/app/build\n android/.gradle\n+ios/.xcode.env.local\ndiff --git a/templates/expo-template-bare-minimum/android/app/BUCK b/templates/expo-template-bare-minimum/android/app/BUCK\ndeleted file mode 100644\nindex 0e77904834..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/BUCK\n+++ /dev/null\n@@ -1,55 +0,0 @@\n-# To learn about Buck see [Docs](https://buckbuild.com/).\n-# To run your application with Buck:\n-# - install Buck\n-# - `npm start` - to start the packager\n-# - `cd android`\n-# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname \"CN=Android Debug,O=Android,C=US\"`\n-# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck\n-# - `buck install -r android/app` - compile, install and run application\n-#\n-\n-load(\":build_defs.bzl\", \"create_aar_targets\", \"create_jar_targets\")\n-\n-lib_deps = []\n-\n-create_aar_targets(glob([\"libs/*.aar\"]))\n-\n-create_jar_targets(glob([\"libs/*.jar\"]))\n-\n-android_library(\n- name = \"all-libs\",\n- exported_deps = lib_deps,\n-)\n-\n-android_library(\n- name = \"app-code\",\n- srcs = glob([\n- \"src/main/java/**/*.java\",\n- ]),\n- deps = [\n- \":all-libs\",\n- \":build_config\",\n- \":res\",\n- ],\n-)\n-\n-android_build_config(\n- name = \"build_config\",\n- package = \"com.helloworld\",\n-)\n-\n-android_resource(\n- name = \"res\",\n- package = \"com.helloworld\",\n- res = \"src/main/res\",\n-)\n-\n-android_binary(\n- name = \"app\",\n- keystore = \"//android/keystores:debug\",\n- manifest = \"src/main/AndroidManifest.xml\",\n- package_type = \"debug\",\n- deps = [\n- \":app-code\",\n- ],\n-)\ndiff --git a/templates/expo-template-bare-minimum/android/app/build.gradle b/templates/expo-template-bare-minimum/android/app/build.gradle\nindex f0293fe400..189390e7e3 100644\n--- a/templates/expo-template-bare-minimum/android/app/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/app/build.gradle\n@@ -1,136 +1,107 @@\n apply plugin: \"com.android.application\"\n+apply plugin: \"com.facebook.react\"\n \n import com.android.build.OutputFile\n-import org.apache.tools.ant.taskdefs.condition.Os\n-\n-/**\n- * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets\n- * and bundleReleaseJsAndAssets).\n- * These basically call `react-native bundle` with the correct arguments during the Android build\n- * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the\n- * bundle directly from the development server. Below you can see all the possible configurations\n- * and their defaults. If you decide to add a configuration block, make sure to add it before the\n- * `apply from: \"../../node_modules/react-native/react.gradle\"` line.\n- *\n- * project.ext.react = [\n- * // the name of the generated asset file containing your JS bundle\n- * bundleAssetName: \"index.android.bundle\",\n- *\n- * // the entry file for bundle generation. If none specified and\n- * // \"index.android.js\" exists, it will be used. Otherwise \"index.js\" is\n- * // default. Can be overridden with ENTRY_FILE environment variable.\n- * entryFile: \"index.android.js\",\n- *\n- * // https://reactnative.dev/docs/performance#enable-the-ram-format\n- * bundleCommand: \"ram-bundle\",\n- *\n- * // whether to bundle JS and assets in debug mode\n- * bundleInDebug: false,\n- *\n- * // whether to bundle JS and assets in release mode\n- * bundleInRelease: true,\n- *\n- * // whether to bundle JS and assets in another build variant (if configured).\n- * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants\n- * // The configuration property can be in the following formats\n- * // 'bundleIn${productFlavor}${buildType}'\n- * // 'bundleIn${buildType}'\n- * // bundleInFreeDebug: true,\n- * // bundleInPaidRelease: true,\n- * // bundleInBeta: true,\n- *\n- * // whether to disable dev mode in custom build variants (by default only disabled in release)\n- * // for example: to disable dev mode in the staging build type (if configured)\n- * devDisabledInStaging: true,\n- * // The configuration property can be in the following formats\n- * // 'devDisabledIn${productFlavor}${buildType}'\n- * // 'devDisabledIn${buildType}'\n- *\n- * // the root of your project, i.e. where \"package.json\" lives\n- * root: \"../../\",\n- *\n- * // where to put the JS bundle asset in debug mode\n- * jsBundleDirDebug: \"$buildDir/intermediates/assets/debug\",\n- *\n- * // where to put the JS bundle asset in release mode\n- * jsBundleDirRelease: \"$buildDir/intermediates/assets/release\",\n- *\n- * // where to put drawable resources / React Native assets, e.g. the ones you use via\n- * // require('./image.png')), in debug mode\n- * resourcesDirDebug: \"$buildDir/intermediates/res/merged/debug\",\n- *\n- * // where to put drawable resources / React Native assets, e.g. the ones you use via\n- * // require('./image.png')), in release mode\n- * resourcesDirRelease: \"$buildDir/intermediates/res/merged/release\",\n- *\n- * // by default the gradle tasks are skipped if none of the JS files or assets change; this means\n- * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to\n- * // date; if you have any other folders that you want to ignore for performance reasons (gradle\n- * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/\n- * // for example, you might want to remove it from here.\n- * inputExcludes: [\"android/**\", \"ios/**\"],\n- *\n- * // override which node gets called and with what additional arguments\n- * nodeExecutableAndArgs: [\"node\"],\n- *\n- * // supply additional arguments to the packager\n- * extraPackagerArgs: []\n- * ]\n- */\n \n def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath()\n+def expoDebuggableVariants = ['debug']\n+// Override `debuggableVariants` for expo-updates debugging\n+if (System.getenv('EX_UPDATES_NATIVE_DEBUG') == \"1\") {\n+ react {\n+ expoDebuggableVariants = []\n+ }\n+}\n \n-def reactNativeRoot = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath()\n \n-project.ext.react = [\n- entryFile: [\"node\", \"-e\", \"require('expo/scripts/resolveAppEntry')\", projectRoot, \"android\"].execute(null, rootDir).text.trim(),\n- enableHermes: (findProperty('expo.jsEngine') ?: \"jsc\") == \"hermes\",\n- hermesCommand: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/sdks/hermesc/%OS-BIN%/hermesc\",\n- cliPath: \"${reactNativeRoot}/cli.js\",\n- composeSourceMapsPath: \"${reactNativeRoot}/scripts/compose-source-maps.js\",\n-]\n+/**\n+ * This is the configuration block to customize your React Native Android app.\n+ * By default you don't need to apply any configuration, just uncomment the lines you need.\n+ */\n+react {\n+ entryFile = file([\"node\", \"-e\", \"require('expo/scripts/resolveAppEntry')\", projectRoot, \"android\", \"absolute\"].execute(null, rootDir).text.trim())\n+ reactNativeDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()\n+ hermesCommand = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/sdks/hermesc/%OS-BIN%/hermesc\"\n+ debuggableVariants = expoDebuggableVariants\n+\n+ /* Folders */\n+ // The root of your project, i.e. where \"package.json\" lives. Default is '..'\n+ // root = file(\"../\")\n+ // The folder where the react-native NPM package is. Default is ../node_modules/react-native\n+ // reactNativeDir = file(\"../node_modules/react-native\")\n+ // The folder where the react-native Codegen package is. Default is ../node_modules/react-native-codegen\n+ // codegenDir = file(\"../node_modules/react-native-codegen\")\n+ // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js\n+ // cliFile = file(\"../node_modules/react-native/cli.js\")\n+\n+ /* Variants */\n+ // The list of variants to that are debuggable. For those we're going to\n+ // skip the bundling of the JS bundle and the assets. By default is just 'debug'.\n+ // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.\n+ // debuggableVariants = [\"liteDebug\", \"prodDebug\"]\n+\n+ /* Bundling */\n+ // A list containing the node command and its flags. Default is just 'node'.\n+ // nodeExecutableAndArgs = [\"node\"]\n+ //\n+ // The command to run when bundling. By default is 'bundle'\n+ // bundleCommand = \"ram-bundle\"\n+ //\n+ // The path to the CLI configuration file. Default is empty.\n+ // bundleConfig = file(../rn-cli.config.js)\n+ //\n+ // The name of the generated asset file containing your JS bundle\n+ // bundleAssetName = \"MyApplication.android.bundle\"\n+ //\n+ // The entry file for bundle generation. Default is 'index.android.js' or 'index.js'\n+ // entryFile = file(\"../js/MyApplication.android.js\")\n+ //\n+ // A list of extra flags to pass to the 'bundle' commands.\n+ // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle\n+ // extraPackagerArgs = []\n+\n+ /* Hermes Commands */\n+ // The hermes compiler command to run. By default it is 'hermesc'\n+ // hermesCommand = \"$rootDir/my-custom-hermesc/bin/hermesc\"\n+ //\n+ // The list of flags to pass to the Hermes compiler. By default is \"-O\", \"-output-source-map\"\n+ // hermesFlags = [\"-O\", \"-output-source-map\"]\n+}\n \n-apply from: new File(reactNativeRoot, \"react.gradle\")\n+// Override `hermesEnabled` by `expo.jsEngine`\n+ext {\n+ hermesEnabled = (findProperty('expo.jsEngine') ?: \"hermes\") == \"hermes\"\n+}\n \n /**\n- * Set this to true to create two separate APKs instead of one:\n- * - An APK that only works on ARM devices\n- * - An APK that only works on x86 devices\n- * The advantage is the size of the APK is reduced by about 4MB.\n- * Upload all the APKs to the Play Store and people will download\n- * the correct one based on the CPU architecture of their device.\n+ * Set this to true to create four separate APKs instead of one,\n+ * one for each native architecture. This is useful if you don't\n+ * use App Bundles (https://developer.android.com/guide/app-bundle/)\n+ * and want to have separate APKs to upload to the Play Store.\n */\n def enableSeparateBuildPerCPUArchitecture = false\n \n /**\n- * Run Proguard to shrink the Java bytecode in release builds.\n+ * Set this to true to Run Proguard on Release builds to minify the Java bytecode.\n */\n def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInReleaseBuilds') ?: false).toBoolean()\n \n /**\n- * The preferred build flavor of JavaScriptCore.\n+ * The preferred build flavor of JavaScriptCore (JSC)\n *\n * For example, to use the international variant, you can use:\n * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`\n *\n * The international variant includes ICU i18n library and necessary data\n * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that\n- * give correct results when using with locales other than en-US. Note that\n+ * give correct results when using with locales other than en-US. Note that\n * this variant is about 6MiB larger per architecture than default.\n */\n def jscFlavor = 'org.webkit:android-jsc:+'\n \n /**\n- * Whether to enable the Hermes VM.\n- *\n- * This should be set on project.ext.react and that value will be read here. If it is not set\n- * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode\n- * and the benefits of using Hermes will therefore be sharply reduced.\n- */\n-def enableHermes = project.ext.react.get(\"enableHermes\", false);\n-\n-/**\n- * Architectures to build native code for.\n+ * Private function to get the list of Native Architectures you want to build.\n+ * This reads the value from reactNativeArchitectures in your gradle.properties\n+ * file and works together with the --active-arch-only flag of react-native run-android.\n */\n def reactNativeArchitectures() {\n def value = project.getProperties().get(\"reactNativeArchitectures\")\n@@ -142,85 +113,13 @@ android {\n \n compileSdkVersion rootProject.ext.compileSdkVersion\n \n+ namespace \"com.helloworld\"\n defaultConfig {\n applicationId \"com.helloworld\"\n minSdkVersion rootProject.ext.minSdkVersion\n targetSdkVersion rootProject.ext.targetSdkVersion\n versionCode 1\n versionName \"1.0\"\n- buildConfigField \"boolean\", \"IS_NEW_ARCHITECTURE_ENABLED\", isNewArchitectureEnabled().toString()\n-\n- if (isNewArchitectureEnabled()) {\n- // We configure the NDK build only if you decide to opt-in for the New Architecture.\n- externalNativeBuild {\n- ndkBuild {\n- arguments \"APP_PLATFORM=android-21\",\n- \"APP_STL=c++_shared\",\n- \"NDK_TOOLCHAIN_VERSION=clang\",\n- \"GENERATED_SRC_DIR=$buildDir/generated/source\",\n- \"PROJECT_BUILD_DIR=$buildDir\",\n- \"REACT_ANDROID_DIR=${reactNativeRoot}/ReactAndroid\",\n- \"REACT_ANDROID_BUILD_DIR=${reactNativeRoot}/ReactAndroid/build\",\n- \"NODE_MODULES_DIR=$rootDir/../node_modules\"\n- cFlags \"-Wall\", \"-Werror\", \"-fexceptions\", \"-frtti\", \"-DWITH_INSPECTOR=1\"\n- cppFlags \"-std=c++17\"\n- // Make sure this target name is the same you specify inside the\n- // src/main/jni/Android.mk file for the `LOCAL_MODULE` variable.\n- targets \"helloworld_appmodules\"\n-\n- // Fix for windows limit on number of character in file paths and in command lines\n- if (Os.isFamily(Os.FAMILY_WINDOWS)) {\n- arguments \"NDK_APP_SHORT_COMMANDS=true\"\n- }\n- }\n- }\n- if (!enableSeparateBuildPerCPUArchitecture) {\n- ndk {\n- abiFilters (*reactNativeArchitectures())\n- }\n- }\n- }\n- }\n-\n- if (isNewArchitectureEnabled()) {\n- // We configure the NDK build only if you decide to opt-in for the New Architecture.\n- externalNativeBuild {\n- ndkBuild {\n- path \"$projectDir/src/main/jni/Android.mk\"\n- }\n- }\n- def reactAndroidProjectDir = project(':ReactAndroid').projectDir\n- def packageReactNdkDebugLibs = tasks.register(\"packageReactNdkDebugLibs\", Copy) {\n- dependsOn(\":ReactAndroid:packageReactNdkDebugLibsForBuck\")\n- from(\"$reactAndroidProjectDir/src/main/jni/prebuilt/lib\")\n- into(\"$buildDir/react-ndk/exported\")\n- }\n- def packageReactNdkReleaseLibs = tasks.register(\"packageReactNdkReleaseLibs\", Copy) {\n- dependsOn(\":ReactAndroid:packageReactNdkReleaseLibsForBuck\")\n- from(\"$reactAndroidProjectDir/src/main/jni/prebuilt/lib\")\n- into(\"$buildDir/react-ndk/exported\")\n- }\n- afterEvaluate {\n- // If you wish to add a custom TurboModule or component locally,\n- // you should uncomment this line.\n- // preBuild.dependsOn(\"generateCodegenArtifactsFromSchema\")\n- preDebugBuild.dependsOn(packageReactNdkDebugLibs)\n- preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)\n-\n- // Due to a bug inside AGP, we have to explicitly set a dependency\n- // between configureNdkBuild* tasks and the preBuild tasks.\n- // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732\n- configureNdkBuildRelease.dependsOn(preReleaseBuild)\n- configureNdkBuildDebug.dependsOn(preDebugBuild)\n- reactNativeArchitectures().each { architecture ->\n- tasks.findByName(\"configureNdkBuildDebug[${architecture}]\")?.configure {\n- dependsOn(\"preDebugBuild\")\n- }\n- tasks.findByName(\"configureNdkBuildRelease[${architecture}]\")?.configure {\n- dependsOn(\"preReleaseBuild\")\n- }\n- }\n- }\n }\n \n splits {\n@@ -247,6 +146,7 @@ android {\n // Caution! In production, you need to generate your own keystore file.\n // see https://reactnative.dev/docs/signed-apk-android.\n signingConfig signingConfigs.debug\n+ shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false)\n minifyEnabled enableProguardInReleaseBuilds\n proguardFiles getDefaultProguardFile(\"proguard-android.txt\"), \"proguard-rules.pro\"\n }\n@@ -257,11 +157,12 @@ android {\n variant.outputs.each { output ->\n // For each separate APK per architecture, set a unique version code as described here:\n // https://developer.android.com/studio/build/configure-apk-splits.html\n+ // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc.\n def versionCodes = [\"armeabi-v7a\": 1, \"x86\": 2, \"arm64-v8a\": 3, \"x86_64\": 4]\n def abi = output.getFilter(OutputFile.ABI)\n if (abi != null) { // null for the universal-debug, universal-release variants\n output.versionCodeOverride =\n- versionCodes.get(abi) * 1048576 + defaultConfig.versionCode\n+ defaultConfig.versionCode * 1000 + versionCodes.get(abi)\n }\n \n }\n@@ -289,10 +190,8 @@ android {\n }\n \n dependencies {\n- implementation fileTree(dir: \"libs\", include: [\"*.jar\"])\n-\n- //noinspection GradleDynamicVersion\n- implementation \"com.facebook.react:react-native:+\" // From node_modules\n+ // The version of react-native is set by the React Native Gradle Plugin\n+ implementation(\"com.facebook.react:react-android\")\n \n def isGifEnabled = (findProperty('expo.gif.enabled') ?: \"\") == \"true\";\n def isWebpEnabled = (findProperty('expo.webp.enabled') ?: \"\") == \"true\";\n@@ -301,76 +200,38 @@ dependencies {\n \n // If your app supports Android versions before Ice Cream Sandwich (API level 14)\n if (isGifEnabled || isWebpEnabled) {\n- implementation \"com.facebook.fresco:fresco:${frescoVersion}\"\n- implementation \"com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:fresco:${frescoVersion}\")\n+ implementation(\"com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}\")\n }\n \n if (isGifEnabled) {\n // For animated gif support\n- implementation \"com.facebook.fresco:animated-gif:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:animated-gif:${frescoVersion}\")\n }\n \n if (isWebpEnabled) {\n // For webp support\n- implementation \"com.facebook.fresco:webpsupport:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:webpsupport:${frescoVersion}\")\n if (isWebpAnimatedEnabled) {\n // Animated webp support\n- implementation \"com.facebook.fresco:animated-webp:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:animated-webp:${frescoVersion}\")\n }\n }\n \n- implementation \"androidx.swiperefreshlayout:swiperefreshlayout:1.0.0\"\n- debugImplementation(\"com.facebook.flipper:flipper:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.fbjni'\n- }\n+ implementation(\"androidx.swiperefreshlayout:swiperefreshlayout:1.0.0\")\n+\n+ debugImplementation(\"com.facebook.flipper:flipper:${FLIPPER_VERSION}\")\n debugImplementation(\"com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.flipper'\n exclude group:'com.squareup.okhttp3', module:'okhttp'\n }\n- debugImplementation(\"com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.flipper'\n- }\n+ debugImplementation(\"com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}\")\n \n- if (enableHermes) {\n- //noinspection GradleDynamicVersion\n- implementation(\"com.facebook.react:hermes-engine:+\") { // From node_modules\n- exclude group:'com.facebook.fbjni'\n- }\n+ if (hermesEnabled.toBoolean()) {\n+ implementation(\"com.facebook.react:hermes-android\")\n } else {\n implementation jscFlavor\n }\n }\n \n-if (isNewArchitectureEnabled()) {\n- // If new architecture is enabled, we let you build RN from source\n- // Otherwise we fallback to a prebuilt .aar bundled in the NPM package.\n- // This will be applied to all the imported transtitive dependency.\n- configurations.all {\n- resolutionStrategy.dependencySubstitution {\n- substitute(module(\"com.facebook.react:react-native\"))\n- .using(project(\":ReactAndroid\"))\n- .because(\"On New Architecture we're building React Native from source\")\n- substitute(module(\"com.facebook.react:hermes-engine\"))\n- .using(project(\":ReactAndroid:hermes-engine\"))\n- .because(\"On New Architecture we're building Hermes from source\")\n- }\n- }\n-}\n-\n-// Run this once to be able to run the application with BUCK\n-// puts all compile dependencies into folder libs for BUCK to use\n-task copyDownloadableDepsToLibs(type: Copy) {\n- from configurations.implementation\n- into 'libs'\n-}\n-\n apply from: new File([\"node\", \"--print\", \"require.resolve('@react-native-community/cli-platform-android/package.json')\"].execute(null, rootDir).text.trim(), \"../native_modules.gradle\");\n applyNativeModulesAppBuildGradle(project)\n-\n-def isNewArchitectureEnabled() {\n- // To opt-in for the New Architecture, you can either:\n- // - Set `newArchEnabled` to true inside the `gradle.properties` file\n- // - Invoke gradle with `-newArchEnabled=true`\n- // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`\n- return project.hasProperty(\"newArchEnabled\") && project.newArchEnabled == \"true\"\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/build_defs.bzl b/templates/expo-template-bare-minimum/android/app/build_defs.bzl\ndeleted file mode 100644\nindex fff270f8d1..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/build_defs.bzl\n+++ /dev/null\n@@ -1,19 +0,0 @@\n-\"\"\"Helper definitions to glob .aar and .jar targets\"\"\"\n-\n-def create_aar_targets(aarfiles):\n- for aarfile in aarfiles:\n- name = \"aars__\" + aarfile[aarfile.rindex(\"/\") + 1:aarfile.rindex(\".aar\")]\n- lib_deps.append(\":\" + name)\n- android_prebuilt_aar(\n- name = name,\n- aar = aarfile,\n- )\n-\n-def create_jar_targets(jarfiles):\n- for jarfile in jarfiles:\n- name = \"jars__\" + jarfile[jarfile.rindex(\"/\") + 1:jarfile.rindex(\".jar\")]\n- lib_deps.append(\":\" + name)\n- prebuilt_jar(\n- name = name,\n- binary_jar = jarfile,\n- )\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java b/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\nindex 8cddb11cb2..595dd5831c 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\n@@ -1,5 +1,5 @@\n /**\n- * Copyright (c) Facebook, Inc. and its affiliates.\n+ * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n *

This source code is licensed under the MIT license found in the LICENSE file in the root\n * directory of this source tree.\n@@ -17,22 +17,27 @@ import com.facebook.flipper.plugins.inspector.DescriptorMapping;\n import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;\n import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;\n import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;\n-import com.facebook.flipper.plugins.react.ReactFlipperPlugin;\n import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;\n+import com.facebook.react.ReactInstanceEventListener;\n import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.bridge.ReactContext;\n import com.facebook.react.modules.network.NetworkingModule;\n import okhttp3.OkHttpClient;\n \n+/**\n+ * Class responsible of loading Flipper inside your React Native application. This is the debug\n+ * flavor of it. Here you can add your own plugins and customize the Flipper setup.\n+ */\n public class ReactNativeFlipper {\n public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {\n if (FlipperUtils.shouldEnableFlipper(context)) {\n final FlipperClient client = AndroidFlipperClient.getInstance(context);\n+\n client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));\n- client.addPlugin(new ReactFlipperPlugin());\n client.addPlugin(new DatabasesFlipperPlugin(context));\n client.addPlugin(new SharedPreferencesFlipperPlugin(context));\n client.addPlugin(CrashReporterPlugin.getInstance());\n+\n NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();\n NetworkingModule.setCustomClientBuilder(\n new NetworkingModule.CustomClientBuilder() {\n@@ -43,12 +48,13 @@ public class ReactNativeFlipper {\n });\n client.addPlugin(networkFlipperPlugin);\n client.start();\n+\n // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized\n // Hence we run if after all native modules have been initialized\n ReactContext reactContext = reactInstanceManager.getCurrentReactContext();\n if (reactContext == null) {\n reactInstanceManager.addReactInstanceEventListener(\n- new ReactInstanceManager.ReactInstanceEventListener() {\n+ new ReactInstanceEventListener() {\n @Override\n public void onReactContextInitialized(ReactContext reactContext) {\n reactInstanceManager.removeReactInstanceEventListener(this);\n@@ -66,4 +72,4 @@ public class ReactNativeFlipper {\n }\n }\n }\n-}\n\\ No newline at end of file\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml b/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\nindex 0cad655b33..6536fc03ad 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n@@ -1,4 +1,4 @@\n-\n+\n \n \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\nindex 8e13797d9b..7e2823fb6c 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n@@ -5,7 +5,8 @@ import android.os.Bundle;\n \n import com.facebook.react.ReactActivity;\n import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactActivityDelegate;\n \n import expo.modules.ReactActivityDelegateWrapper;\n \n@@ -29,15 +30,20 @@ public class MainActivity extends ReactActivity {\n }\n \n /**\n- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n- * (Paper).\n+ * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link\n+ * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React\n+ * (aka React 18) with two boolean flags.\n */\n @Override\n protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n- new MainActivityDelegate(this, getMainComponentName())\n- );\n+ return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, new DefaultReactActivityDelegate(\n+ this,\n+ getMainComponentName(),\n+ // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n+ DefaultNewArchitectureEntryPoint.getFabricEnabled(), // fabricEnabled\n+ // If you opted-in for the New Architecture, we enable Concurrent React (i.e. React 18).\n+ DefaultNewArchitectureEntryPoint.getConcurrentReactEnabled() // concurrentRootEnabled\n+ ));\n }\n \n /**\n@@ -59,25 +65,4 @@ public class MainActivity extends ReactActivity {\n // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n super.invokeDefaultOnBackPressed();\n }\n-\n- public static class MainActivityDelegate extends ReactActivityDelegate {\n- public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n- super(activity, mainComponentName);\n- }\n-\n- @Override\n- protected ReactRootView createRootView() {\n- ReactRootView reactRootView = new ReactRootView(getContext());\n- // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n- reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n- return reactRootView;\n- }\n-\n- @Override\n- protected boolean isConcurrentRootEnabled() {\n- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\nindex 7deb688b07..31c2b288c1 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n@@ -1,69 +1,70 @@\n package com.helloworld;\n \n import android.app.Application;\n-import android.content.Context;\n import android.content.res.Configuration;\n import androidx.annotation.NonNull;\n \n import com.facebook.react.PackageList;\n import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.ReactNativeHost;\n import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactNativeHost;\n import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n \n import expo.modules.ApplicationLifecycleDispatcher;\n import expo.modules.ReactNativeHostWrapper;\n \n-import java.lang.reflect.InvocationTargetException;\n import java.util.List;\n \n public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n \n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n+ private final ReactNativeHost mReactNativeHost =\n+ new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) {\n+ @Override\n+ public boolean getUseDeveloperSupport() {\n+ return BuildConfig.DEBUG;\n+ }\n \n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n+ @Override\n+ protected List getPackages() {\n+ @SuppressWarnings(\"UnnecessaryLocalVariable\")\n+ List packages = new PackageList(this).getPackages();\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return packages;\n+ }\n \n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n+ @Override\n+ protected String getJSMainModuleName() {\n+ return \"index\";\n+ }\n+\n+ @Override\n+ protected boolean isNewArchEnabled() {\n+ return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n+ }\n+\n+ @Override\n+ protected Boolean isHermesEnabled() {\n+ return BuildConfig.IS_HERMES_ENABLED;\n+ }\n+ });\n \n @Override\n public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n+ return mReactNativeHost;\n }\n \n @Override\n public void onCreate() {\n super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ DefaultNewArchitectureEntryPoint.load();\n+ }\n+ ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n ApplicationLifecycleDispatcher.onApplicationCreate(this);\n }\n \n@@ -72,35 +73,4 @@ public class MainApplication extends Application implements ReactApplication {\n super.onConfigurationChanged(newConfig);\n ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex 7665dd923f..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,117 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.fabric.ReactNativeConfig;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- ReactNativeConfig.DEFAULT_CONFIG,\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex cda1391225..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source\n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_runtime \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 0ac23cc626..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,24 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex 0fa43fa69a..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex dbbdc3d132..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 25f27722d0..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(std::string name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 8f7edffd64..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,61 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java b/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java\nnew file mode 100644\nindex 0000000000..b510364404\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java\n@@ -0,0 +1,20 @@\n+/**\n+ * Copyright (c) Meta Platforms, Inc. and affiliates.\n+ *\n+ *

This source code is licensed under the MIT license found in the LICENSE file in the root\n+ * directory of this source tree.\n+ */\n+package com.helloworld;\n+\n+import android.content.Context;\n+import com.facebook.react.ReactInstanceManager;\n+\n+/**\n+ * Class responsible of loading Flipper inside your React Native application. This is the release\n+ * flavor of it so it's empty as we don't want to load Flipper.\n+ */\n+public class ReactNativeFlipper {\n+ public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {\n+ // Do nothing as we don't want to initialize Flipper on Release.\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/build.gradle b/templates/expo-template-bare-minimum/android/build.gradle\nindex f259b31a11..e5fda82878 100644\n--- a/templates/expo-template-bare-minimum/android/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/build.gradle\n@@ -1,49 +1,31 @@\n-import org.apache.tools.ant.taskdefs.condition.Os\n-\n // Top-level build file where you can add configuration options common to all sub-projects/modules.\n+\n buildscript {\n ext {\n- buildToolsVersion = findProperty('android.buildToolsVersion') ?: '31.0.0'\n+ buildToolsVersion = findProperty('android.buildToolsVersion') ?: '33.0.0'\n minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '21')\n- compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '31')\n- targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '31')\n+ compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '33')\n+ targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '33')\n if (findProperty('android.kotlinVersion')) {\n kotlinVersion = findProperty('android.kotlinVersion')\n }\n frescoVersion = findProperty('expo.frescoVersion') ?: '2.5.0'\n \n- if (System.properties['os.arch'] == 'aarch64') {\n- // For M1 Users we need to use the NDK 24 which added support for aarch64\n- ndkVersion = '24.0.8215888'\n- } else {\n- // Otherwise we default to the side-by-side NDK version from AGP.\n- ndkVersion = '21.4.7075529'\n- }\n+ // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.\n+ ndkVersion = \"23.1.7779620\"\n }\n repositories {\n google()\n mavenCentral()\n }\n dependencies {\n- classpath('com.android.tools.build:gradle:7.1.1')\n+ classpath('com.android.tools.build:gradle:7.4.1')\n classpath('com.facebook.react:react-native-gradle-plugin')\n- classpath('de.undercouch:gradle-download-task:5.0.1')\n- // NOTE: Do not place your application dependencies here; they belong\n- // in the individual module build.gradle files\n }\n }\n \n-def REACT_NATIVE_VERSION = new File(['node', '--print',\"JSON.parse(require('fs').readFileSync(require.resolve('react-native/package.json'), 'utf-8')).version\"].execute(null, rootDir).text.trim())\n-\n allprojects {\n- configurations.all {\n- resolutionStrategy {\n- force \"com.facebook.react:react-native:\" + REACT_NATIVE_VERSION\n- }\n- }\n-\n repositories {\n- mavenLocal()\n maven {\n // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm\n url(new File(['node', '--print', \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), '../android'))\n@@ -54,19 +36,7 @@ allprojects {\n }\n \n google()\n- mavenCentral {\n- // We don't want to fetch react-native from Maven Central as there are\n- // older versions over there.\n- content {\n- excludeGroup 'com.facebook.react'\n- }\n- }\n+ mavenCentral()\n maven { url 'https://www.jitpack.io' }\n }\n }\n-\n-configurations.all {\n- resolutionStrategy {\n- force 'com.facebook.react:react-native:0.69.6'\n- }\n-}\n\\ No newline at end of file\ndiff --git a/templates/expo-template-bare-minimum/android/gitignore b/templates/expo-template-bare-minimum/android/gitignore\nindex 64436baaf5..877b87e9a5 100644\n--- a/templates/expo-template-bare-minimum/android/gitignore\n+++ b/templates/expo-template-bare-minimum/android/gitignore\n@@ -11,11 +11,5 @@ local.properties\n *.iml\n *.hprof\n \n-# BUCK\n-buck-out/\n-\\.buckd/\n-*.keystore\n-!debug.keystore\n-\n # Bundle artifacts\n *.jsbundle\ndiff --git a/templates/expo-template-bare-minimum/android/gradle.properties b/templates/expo-template-bare-minimum/android/gradle.properties\nindex fab3fb6bcf..9911ac4afd 100644\n--- a/templates/expo-template-bare-minimum/android/gradle.properties\n+++ b/templates/expo-template-bare-minimum/android/gradle.properties\n@@ -42,7 +42,7 @@ newArchEnabled=false\n \n # The hosted JavaScript engine\n # Supported values: expo.jsEngine = \"hermes\" | \"jsc\"\n-expo.jsEngine=jsc\n+expo.jsEngine=hermes\n \n # Enable GIF support in React Native images (~200 B increase)\n expo.gif.enabled=true\ndiff --git a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar\nindex 7454180f2a..249e5832f0 100644\nBinary files a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar and b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.jar differ\ndiff --git a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\nindex 669386b870..8fad3f5a98 100644\n--- a/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\n+++ b/templates/expo-template-bare-minimum/android/gradle/wrapper/gradle-wrapper.properties\n@@ -1,5 +1,5 @@\n distributionBase=GRADLE_USER_HOME\n distributionPath=wrapper/dists\n-distributionUrl=https\\://services.gradle.org/distributions/gradle-7.3.3-all.zip\n+distributionUrl=https\\://services.gradle.org/distributions/gradle-7.5.1-all.zip\n zipStoreBase=GRADLE_USER_HOME\n zipStorePath=wrapper/dists\ndiff --git a/templates/expo-template-bare-minimum/android/gradlew b/templates/expo-template-bare-minimum/android/gradlew\nindex 1b6c787337..a69d9cb6c2 100755\n--- a/templates/expo-template-bare-minimum/android/gradlew\n+++ b/templates/expo-template-bare-minimum/android/gradlew\n@@ -205,6 +205,12 @@ set -- \\\n org.gradle.wrapper.GradleWrapperMain \\\n \"$@\"\n \n+# Stop when \"xargs\" is not available.\n+if ! command -v xargs >/dev/null 2>&1\n+then\n+ die \"xargs is not available\"\n+fi\n+\n # Use \"xargs\" to parse quoted args.\n #\n # With -n1 it outputs one arg per line, with the quotes and backslashes removed.\ndiff --git a/templates/expo-template-bare-minimum/android/gradlew.bat b/templates/expo-template-bare-minimum/android/gradlew.bat\nindex ac1b06f938..53a6b238d4 100644\n--- a/templates/expo-template-bare-minimum/android/gradlew.bat\n+++ b/templates/expo-template-bare-minimum/android/gradlew.bat\n@@ -14,7 +14,7 @@\n @rem limitations under the License.\r\n @rem\r\n \r\n-@if \"%DEBUG%\" == \"\" @echo off\r\n+@if \"%DEBUG%\"==\"\" @echo off\r\n @rem ##########################################################################\r\n @rem\r\n @rem Gradle startup script for Windows\r\n@@ -25,7 +25,7 @@\n if \"%OS%\"==\"Windows_NT\" setlocal\r\n \r\n set DIRNAME=%~dp0\r\n-if \"%DIRNAME%\" == \"\" set DIRNAME=.\r\n+if \"%DIRNAME%\"==\"\" set DIRNAME=.\r\n set APP_BASE_NAME=%~n0\r\n set APP_HOME=%DIRNAME%\r\n \r\n@@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome\n \r\n set JAVA_EXE=java.exe\r\n %JAVA_EXE% -version >NUL 2>&1\r\n-if \"%ERRORLEVEL%\" == \"0\" goto execute\r\n+if %ERRORLEVEL% equ 0 goto execute\r\n \r\n echo.\r\n echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\r\n@@ -75,13 +75,15 @@ set CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\n \r\n :end\r\n @rem End local scope for the variables with windows NT shell\r\n-if \"%ERRORLEVEL%\"==\"0\" goto mainEnd\r\n+if %ERRORLEVEL% equ 0 goto mainEnd\r\n \r\n :fail\r\n rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\r\n rem the _cmd.exe /c_ return code!\r\n-if not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\r\n-exit /b 1\r\n+set EXIT_CODE=%ERRORLEVEL%\r\n+if %EXIT_CODE% equ 0 set EXIT_CODE=1\r\n+if not \"\"==\"%GRADLE_EXIT_CONSOLE%\" exit %EXIT_CODE%\r\n+exit /b %EXIT_CODE%\r\n \r\n :mainEnd\r\n if \"%OS%\"==\"Windows_NT\" endlocal\r\ndiff --git a/templates/expo-template-bare-minimum/android/settings.gradle b/templates/expo-template-bare-minimum/android/settings.gradle\nindex b3332319f9..1dc416e7c1 100644\n--- a/templates/expo-template-bare-minimum/android/settings.gradle\n+++ b/templates/expo-template-bare-minimum/android/settings.gradle\n@@ -8,10 +8,3 @@ applyNativeModulesSettingsGradle(settings)\n \n include ':app'\n includeBuild(new File([\"node\", \"--print\", \"require.resolve('react-native-gradle-plugin/package.json')\"].execute(null, rootDir).text.trim()).getParentFile())\n-\n-if (settings.hasProperty(\"newArchEnabled\") && settings.newArchEnabled == \"true\") {\n- include(\":ReactAndroid\")\n- project(\":ReactAndroid\").projectDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../ReactAndroid\");\n- include(\":ReactAndroid:hermes-engine\")\n- project(\":ReactAndroid:hermes-engine\").projectDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../ReactAndroid/hermes-engine\");\n-}\ndiff --git a/templates/expo-template-bare-minimum/gitignore b/templates/expo-template-bare-minimum/gitignore\nindex c8eb0f9a64..df57ba88a1 100644\n--- a/templates/expo-template-bare-minimum/gitignore\n+++ b/templates/expo-template-bare-minimum/gitignore\n@@ -30,6 +30,9 @@ build/\n local.properties\n *.iml\n *.hprof\n+.cxx/\n+*.keystore\n+!debug.keystore\n \n # node.js\n #\n@@ -37,18 +40,15 @@ node_modules/\n npm-debug.log\n yarn-error.log\n \n-# BUCK\n-buck-out/\n-\\.buckd/\n-*.keystore\n-!debug.keystore\n-\n # Bundle artifacts\n *.jsbundle\n \n # CocoaPods\n /ios/Pods/\n \n+# Temporary files created by Metro to check the health of the file watcher\n+.metro-health-check*\n+\n # Expo\n .expo/\n web-build/\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\nindex a4a049f05d..98e6c2afea 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n@@ -214,7 +214,7 @@\n \t\t\t);\n \t\t\trunOnlyForDeploymentPostprocessing = 0;\n \t\t\tshellPath = /bin/sh;\n-\t\t\tshellScript = \"if [[ -f \\\"$PODS_ROOT/../.xcode.env\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env\\\"\\nfi\\nif [[ -f \\\"$PODS_ROOT/../.xcode.env.local\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env.local\\\"\\nfi\\n\\n# The project root by default is one level up from the ios directory\\nexport PROJECT_ROOT=\\\"$PROJECT_DIR\\\"/..\\n\\nif [[ \\\"$CONFIGURATION\\\" = *Debug* ]]; then\\n export SKIP_BUNDLING=1\\nfi\\n`\\\"$NODE_BINARY\\\" --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\\\"`\\n\\n\";\n+\t\t\tshellScript = \"if [[ -f \\\"$PODS_ROOT/../.xcode.env\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env\\\"\\nfi\\nif [[ -f \\\"$PODS_ROOT/../.xcode.env.local\\\" ]]; then\\n source \\\"$PODS_ROOT/../.xcode.env.local\\\"\\nfi\\n\\n# The project root by default is one level up from the ios directory\\nexport PROJECT_ROOT=\\\"$PROJECT_DIR\\\"/..\\n\\nif [[ \\\"$CONFIGURATION\\\" = *Debug* ]]; then\\n export SKIP_BUNDLING=1\\nfi\\nif [[ -z \\\"$ENTRY_FILE\\\" ]]; then\\n # Set the entry JS file using the bundler's entry resolution.\\n export ENTRY_FILE=\\\"$(\\\"$NODE_BINARY\\\" -e \\\"require('expo/scripts/resolveAppEntry')\\\" $PROJECT_ROOT ios relative | tail -n 1)\\\"\\nfi\\n\\n`\\\"$NODE_BINARY\\\" --print \\\"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\\\"`\\n\\n\";\n \t\t};\n \t\t08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = {\n \t\t\tisa = PBXShellScriptBuildPhase;\n@@ -308,8 +308,9 @@\n \t\t\t\t\t\"FB_SONARKIT_ENABLED=1\",\n \t\t\t\t);\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n+ MARKETING_VERSION = 1.0;\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n \t\t\t\t\t\"-ObjC\",\n@@ -331,8 +332,9 @@\n \t\t\t\tCLANG_ENABLE_MODULES = YES;\n \t\t\t\tCURRENT_PROJECT_VERSION = 1;\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n+ MARKETING_VERSION = 1.0;\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n \t\t\t\t\t\"-ObjC\",\n@@ -392,7 +394,7 @@\n \t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n \t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n \t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n \t\t\t\tLIBRARY_SEARCH_PATHS = \"\\\"$(inherited)\\\"\";\n \t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n@@ -441,7 +443,7 @@\n \t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n \t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n \t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n-\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n+\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"/usr/lib/swift $(inherited)\";\n \t\t\t\tLIBRARY_SEARCH_PATHS = \"\\\"$(inherited)\\\"\";\n \t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\nindex f7d2972042..1658a437eb 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\n@@ -1,9 +1,7 @@\n-#import \n-#import \n+#import \n #import \n-\n #import \n \n-@interface AppDelegate : EXAppDelegateWrapper \n+@interface AppDelegate : EXAppDelegateWrapper\n \n @end\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\nindex a6e13e11ab..8cb5aef137 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\n@@ -1,100 +1,40 @@\n #import \"AppDelegate.h\"\n \n-#import \n #import \n-#import \n #import \n-#import \n-\n-#import \n-\n-#if RCT_NEW_ARCH_ENABLED\n-#import \n-#import \n-#import \n-#import \n-#import \n-#import \n-\n-#import \n-\n-static NSString *const kRNConcurrentRoot = @\"concurrentRoot\";\n-\n-@interface AppDelegate () {\n- RCTTurboModuleManager *_turboModuleManager;\n- RCTSurfacePresenterBridgeAdapter *_bridgeAdapter;\n- std::shared_ptr _reactNativeConfig;\n- facebook::react::ContextContainer::Shared _contextContainer;\n-}\n-@end\n-#endif\n \n @implementation AppDelegate\n \n - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions\n {\n- RCTAppSetupPrepareApp(application);\n-\n- RCTBridge *bridge = [self.reactDelegate createBridgeWithDelegate:self launchOptions:launchOptions];\n-\n-#if RCT_NEW_ARCH_ENABLED\n- _contextContainer = std::make_shared();\n- _reactNativeConfig = std::make_shared();\n- _contextContainer->insert(\"ReactNativeConfig\", _reactNativeConfig);\n- _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer];\n- bridge.surfacePresenter = _bridgeAdapter.surfacePresenter;\n-#endif\n-\n- NSDictionary *initProps = [self prepareInitialProps];\n- UIView *rootView = [self.reactDelegate createRootViewWithBridge:bridge moduleName:@\"main\" initialProperties:initProps];\n-\n- rootView.backgroundColor = [UIColor whiteColor];\n- self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];\n- UIViewController *rootViewController = [self.reactDelegate createRootViewController];\n- rootViewController.view = rootView;\n- self.window.rootViewController = rootViewController;\n- [self.window makeKeyAndVisible];\n+ self.moduleName = @\"main\";\n \n- [super application:application didFinishLaunchingWithOptions:launchOptions];\n+ // You can add your custom initial props in the dictionary below.\n+ // They will be passed down to the ViewController used by React Native.\n+ self.initialProps = @{};\n \n- return YES;\n+ return [super application:application didFinishLaunchingWithOptions:launchOptions];\n }\n \n-- (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge\n+- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n {\n- // If you'd like to export some custom RCTBridgeModules, add them here!\n- return @[];\n+#if DEBUG\n+ return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"index\"];\n+#else\n+ return [[NSBundle mainBundle] URLForResource:@\"main\" withExtension:@\"jsbundle\"];\n+#endif\n }\n \n /// This method controls whether the `concurrentRoot`feature of React18 is turned on or off.\n ///\n /// @see: https://reactjs.org/blog/2022/03/29/react-v18.html\n /// @note: This requires to be rendering on Fabric (i.e. on the New Architecture).\n-/// @return: `true` if the `concurrentRoot` feture is enabled. Otherwise, it returns `false`.\n+/// @return: `true` if the `concurrentRoot` feature is enabled. Otherwise, it returns `false`.\n - (BOOL)concurrentRootEnabled\n {\n- // Switch this bool to turn on and off the concurrent root\n return true;\n }\n \n-- (NSDictionary *)prepareInitialProps\n-{\n- NSMutableDictionary *initProps = [NSMutableDictionary new];\n-#if RCT_NEW_ARCH_ENABLED\n- initProps[kRNConcurrentRoot] = @([self concurrentRootEnabled]);\n-#endif\n- return initProps;\n-}\n-\n-- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n-{\n-#if DEBUG\n- return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"index\"];\n-#else\n- return [[NSBundle mainBundle] URLForResource:@\"main\" withExtension:@\"jsbundle\"];\n-#endif\n-}\n-\n // Linking API\n - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options {\n return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options];\n@@ -124,43 +64,4 @@ static NSString *const kRNConcurrentRoot = @\"concurrentRoot\";\n return [super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];\n }\n \n-#if RCT_NEW_ARCH_ENABLED\n-\n-#pragma mark - RCTCxxBridgeDelegate\n-\n-- (std::unique_ptr)jsExecutorFactoryForBridge:(RCTBridge *)bridge\n-{\n- _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge\n- delegate:self\n- jsInvoker:bridge.jsCallInvoker];\n- return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager);\n-}\n-\n-#pragma mark RCTTurboModuleManagerDelegate\n-\n-- (Class)getModuleClassFromName:(const char *)name\n-{\n- return RCTCoreModulesClassProvider(name);\n-}\n-\n-- (std::shared_ptr)getTurboModule:(const std::string &)name\n- jsInvoker:(std::shared_ptr)jsInvoker\n-{\n- return nullptr;\n-}\n-\n-- (std::shared_ptr)getTurboModule:(const std::string &)name\n- initParams:\n- (const facebook::react::ObjCTurboModule::InitParams &)params\n-{\n- return nullptr;\n-}\n-\n-- (id)getModuleInstanceFromClass:(Class)moduleClass\n-{\n- return RCTAppSetupDefaultModuleFromClass(moduleClass);\n-}\n-\n-#endif\n-\n @end\ndiff --git a/templates/expo-template-bare-minimum/ios/Podfile b/templates/expo-template-bare-minimum/ios/Podfile\nindex 91612acca9..e523ea5cac 100644\n--- a/templates/expo-template-bare-minimum/ios/Podfile\n+++ b/templates/expo-template-bare-minimum/ios/Podfile\n@@ -5,36 +5,67 @@ require File.join(File.dirname(`node --print \"require.resolve('@react-native-com\n require 'json'\n podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}\n \n-platform :ios, podfile_properties['ios.deploymentTarget'] || '12.4'\n+ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0'\n+ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = '1' if podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR'] == 'true'\n+\n+platform :ios, podfile_properties['ios.deploymentTarget'] || '13.0'\n install! 'cocoapods',\n :deterministic_uuids => false\n \n+prepare_react_native_project!\n+\n+# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set.\n+# because `react-native-flipper` depends on (FlipperKit,...), which will be excluded. To fix this,\n+# you can also exclude `react-native-flipper` in `react-native.config.js`\n+#\n+# ```js\n+# module.exports = {\n+# dependencies: {\n+# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),\n+# }\n+# }\n+# ```\n+flipper_config = FlipperConfiguration.disabled\n+if ENV['NO_FLIPPER'] == '1' then\n+ # Explicitly disabled through environment variables\n+ flipper_config = FlipperConfiguration.disabled\n+elsif podfile_properties.key?('ios.flipper') then\n+ # Configure Flipper in Podfile.properties.json\n+ if podfile_properties['ios.flipper'] == 'true' then\n+ flipper_config = FlipperConfiguration.enabled([\"Debug\", \"Release\"])\n+ elsif podfile_properties['ios.flipper'] != 'false' then\n+ flipper_config = FlipperConfiguration.enabled([\"Debug\", \"Release\"], { 'Flipper' => podfile_properties['ios.flipper'] })\n+ end\n+end\n+\n target 'HelloWorld' do\n use_expo_modules!\n config = use_native_modules!\n \n use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks']\n+ use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS']\n \n # Flags change depending on the env values.\n flags = get_default_flags()\n \n use_react_native!(\n :path => config[:reactNativePath],\n- :hermes_enabled => flags[:hermes_enabled] || podfile_properties['expo.jsEngine'] == 'hermes',\n+ :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes',\n :fabric_enabled => flags[:fabric_enabled],\n # An absolute path to your application root.\n- :app_path => \"#{Dir.pwd}/..\"\n+ :app_path => \"#{Pod::Config.instance.installation_root}/..\",\n+ # Note that if you have use_frameworks! enabled, Flipper will not work if enabled\n+ :flipper_configuration => flipper_config\n )\n \n- # Uncomment to opt-in to using Flipper\n- # Note that if you have use_frameworks! enabled, Flipper will not work\n- #\n- # if !ENV['CI']\n- # use_flipper!()\n- # end\n-\n post_install do |installer|\n- react_native_post_install(installer)\n+ react_native_post_install(\n+ installer,\n+ config[:reactNativePath],\n+ # Set `mac_catalyst_enabled` to `true` in order to apply patches\n+ # necessary for Mac Catalyst builds\n+ :mac_catalyst_enabled => false\n+ )\n __apply_Xcode_12_5_M1_post_install_workaround(installer)\n \n # This is necessary for Xcode 14, because it signs resource bundles by default\ndiff --git a/templates/expo-template-bare-minimum/ios/Podfile.properties.json b/templates/expo-template-bare-minimum/ios/Podfile.properties.json\nindex f6d872e81a..b1bd45da51 100644\n--- a/templates/expo-template-bare-minimum/ios/Podfile.properties.json\n+++ b/templates/expo-template-bare-minimum/ios/Podfile.properties.json\n@@ -1,3 +1,3 @@\n {\n- \"expo.jsEngine\": \"jsc\"\n+ \"expo.jsEngine\": \"hermes\"\n }\ndiff --git a/templates/expo-template-bare-minimum/package.json b/templates/expo-template-bare-minimum/package.json\nindex d5ca09a584..d1fcd513cc 100644\n--- a/templates/expo-template-bare-minimum/package.json\n+++ b/templates/expo-template-bare-minimum/package.json\n@@ -1,7 +1,7 @@\n {\n \"name\": \"expo-template-bare-minimum\",\n \"description\": \"This bare project template includes a minimal setup for using unimodules with React Native.\",\n- \"version\": \"46.0.37\",\n+ \"version\": \"48.0.21\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"start\": \"expo start --dev-client\",\n@@ -10,15 +10,13 @@\n \"web\": \"expo start --web\"\n },\n \"dependencies\": {\n- \"expo\": \"~46.0.21\",\n- \"expo-splash-screen\": \"~0.16.2\",\n- \"expo-status-bar\": \"~1.4.0\",\n- \"react\": \"18.0.0\",\n- \"react-dom\": \"18.0.0\",\n- \"react-native\": \"0.69.9\",\n- \"react-native-web\": \"~0.18.7\"\n+ \"expo\": \"~48.0.21\",\n+ \"expo-splash-screen\": \"~0.18.2\",\n+ \"expo-status-bar\": \"~1.4.4\",\n+ \"react\": \"18.2.0\",\n+ \"react-native\": \"0.71.14\"\n },\n \"devDependencies\": {\n- \"@babel/core\": \"^7.12.9\"\n+ \"@babel/core\": \"^7.20.0\"\n }\n }\n","47..48":"diff --git a/templates/expo-template-bare-minimum/.buckconfig b/templates/expo-template-bare-minimum/.buckconfig\ndeleted file mode 100644\nindex 934256cb29..0000000000\n--- a/templates/expo-template-bare-minimum/.buckconfig\n+++ /dev/null\n@@ -1,6 +0,0 @@\n-\n-[android]\n- target = Google Inc.:Google APIs:23\n-\n-[maven_repositories]\n- central = https://repo1.maven.org/maven2\ndiff --git a/templates/expo-template-bare-minimum/.npmignore b/templates/expo-template-bare-minimum/.npmignore\nindex 35490b6612..4e6ce00391 100644\n--- a/templates/expo-template-bare-minimum/.npmignore\n+++ b/templates/expo-template-bare-minimum/.npmignore\n@@ -20,3 +20,4 @@ ios/Pods\n android/.build\n android/app/build\n android/.gradle\n+ios/.xcode.env.local\ndiff --git a/templates/expo-template-bare-minimum/android/app/BUCK b/templates/expo-template-bare-minimum/android/app/BUCK\ndeleted file mode 100644\nindex 0e77904834..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/BUCK\n+++ /dev/null\n@@ -1,55 +0,0 @@\n-# To learn about Buck see [Docs](https://buckbuild.com/).\n-# To run your application with Buck:\n-# - install Buck\n-# - `npm start` - to start the packager\n-# - `cd android`\n-# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname \"CN=Android Debug,O=Android,C=US\"`\n-# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck\n-# - `buck install -r android/app` - compile, install and run application\n-#\n-\n-load(\":build_defs.bzl\", \"create_aar_targets\", \"create_jar_targets\")\n-\n-lib_deps = []\n-\n-create_aar_targets(glob([\"libs/*.aar\"]))\n-\n-create_jar_targets(glob([\"libs/*.jar\"]))\n-\n-android_library(\n- name = \"all-libs\",\n- exported_deps = lib_deps,\n-)\n-\n-android_library(\n- name = \"app-code\",\n- srcs = glob([\n- \"src/main/java/**/*.java\",\n- ]),\n- deps = [\n- \":all-libs\",\n- \":build_config\",\n- \":res\",\n- ],\n-)\n-\n-android_build_config(\n- name = \"build_config\",\n- package = \"com.helloworld\",\n-)\n-\n-android_resource(\n- name = \"res\",\n- package = \"com.helloworld\",\n- res = \"src/main/res\",\n-)\n-\n-android_binary(\n- name = \"app\",\n- keystore = \"//android/keystores:debug\",\n- manifest = \"src/main/AndroidManifest.xml\",\n- package_type = \"debug\",\n- deps = [\n- \":app-code\",\n- ],\n-)\ndiff --git a/templates/expo-template-bare-minimum/android/app/build.gradle b/templates/expo-template-bare-minimum/android/app/build.gradle\nindex 648135611c..189390e7e3 100644\n--- a/templates/expo-template-bare-minimum/android/app/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/app/build.gradle\n@@ -1,135 +1,107 @@\n apply plugin: \"com.android.application\"\n+apply plugin: \"com.facebook.react\"\n \n import com.android.build.OutputFile\n \n-/**\n- * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets\n- * and bundleReleaseJsAndAssets).\n- * These basically call `react-native bundle` with the correct arguments during the Android build\n- * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the\n- * bundle directly from the development server. Below you can see all the possible configurations\n- * and their defaults. If you decide to add a configuration block, make sure to add it before the\n- * `apply from: \"../../node_modules/react-native/react.gradle\"` line.\n- *\n- * project.ext.react = [\n- * // the name of the generated asset file containing your JS bundle\n- * bundleAssetName: \"index.android.bundle\",\n- *\n- * // the entry file for bundle generation. If none specified and\n- * // \"index.android.js\" exists, it will be used. Otherwise \"index.js\" is\n- * // default. Can be overridden with ENTRY_FILE environment variable.\n- * entryFile: \"index.android.js\",\n- *\n- * // https://reactnative.dev/docs/performance#enable-the-ram-format\n- * bundleCommand: \"ram-bundle\",\n- *\n- * // whether to bundle JS and assets in debug mode\n- * bundleInDebug: false,\n- *\n- * // whether to bundle JS and assets in release mode\n- * bundleInRelease: true,\n- *\n- * // whether to bundle JS and assets in another build variant (if configured).\n- * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants\n- * // The configuration property can be in the following formats\n- * // 'bundleIn${productFlavor}${buildType}'\n- * // 'bundleIn${buildType}'\n- * // bundleInFreeDebug: true,\n- * // bundleInPaidRelease: true,\n- * // bundleInBeta: true,\n- *\n- * // whether to disable dev mode in custom build variants (by default only disabled in release)\n- * // for example: to disable dev mode in the staging build type (if configured)\n- * devDisabledInStaging: true,\n- * // The configuration property can be in the following formats\n- * // 'devDisabledIn${productFlavor}${buildType}'\n- * // 'devDisabledIn${buildType}'\n- *\n- * // the root of your project, i.e. where \"package.json\" lives\n- * root: \"../../\",\n- *\n- * // where to put the JS bundle asset in debug mode\n- * jsBundleDirDebug: \"$buildDir/intermediates/assets/debug\",\n- *\n- * // where to put the JS bundle asset in release mode\n- * jsBundleDirRelease: \"$buildDir/intermediates/assets/release\",\n- *\n- * // where to put drawable resources / React Native assets, e.g. the ones you use via\n- * // require('./image.png')), in debug mode\n- * resourcesDirDebug: \"$buildDir/intermediates/res/merged/debug\",\n- *\n- * // where to put drawable resources / React Native assets, e.g. the ones you use via\n- * // require('./image.png')), in release mode\n- * resourcesDirRelease: \"$buildDir/intermediates/res/merged/release\",\n- *\n- * // by default the gradle tasks are skipped if none of the JS files or assets change; this means\n- * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to\n- * // date; if you have any other folders that you want to ignore for performance reasons (gradle\n- * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/\n- * // for example, you might want to remove it from here.\n- * inputExcludes: [\"android/**\", \"ios/**\"],\n- *\n- * // override which node gets called and with what additional arguments\n- * nodeExecutableAndArgs: [\"node\"],\n- *\n- * // supply additional arguments to the packager\n- * extraPackagerArgs: []\n- * ]\n- */\n-\n def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath()\n+def expoDebuggableVariants = ['debug']\n+// Override `debuggableVariants` for expo-updates debugging\n+if (System.getenv('EX_UPDATES_NATIVE_DEBUG') == \"1\") {\n+ react {\n+ expoDebuggableVariants = []\n+ }\n+}\n \n-def reactNativeRoot = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath()\n \n-project.ext.react = [\n- entryFile: [\"node\", \"-e\", \"require('expo/scripts/resolveAppEntry')\", projectRoot, \"android\"].execute(null, rootDir).text.trim(),\n- enableHermes: (findProperty('expo.jsEngine') ?: \"jsc\") == \"hermes\",\n- hermesCommand: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/sdks/hermesc/%OS-BIN%/hermesc\",\n- cliPath: \"${reactNativeRoot}/cli.js\",\n- composeSourceMapsPath: \"${reactNativeRoot}/scripts/compose-source-maps.js\",\n-]\n+/**\n+ * This is the configuration block to customize your React Native Android app.\n+ * By default you don't need to apply any configuration, just uncomment the lines you need.\n+ */\n+react {\n+ entryFile = file([\"node\", \"-e\", \"require('expo/scripts/resolveAppEntry')\", projectRoot, \"android\", \"absolute\"].execute(null, rootDir).text.trim())\n+ reactNativeDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()\n+ hermesCommand = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/sdks/hermesc/%OS-BIN%/hermesc\"\n+ debuggableVariants = expoDebuggableVariants\n+\n+ /* Folders */\n+ // The root of your project, i.e. where \"package.json\" lives. Default is '..'\n+ // root = file(\"../\")\n+ // The folder where the react-native NPM package is. Default is ../node_modules/react-native\n+ // reactNativeDir = file(\"../node_modules/react-native\")\n+ // The folder where the react-native Codegen package is. Default is ../node_modules/react-native-codegen\n+ // codegenDir = file(\"../node_modules/react-native-codegen\")\n+ // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js\n+ // cliFile = file(\"../node_modules/react-native/cli.js\")\n+\n+ /* Variants */\n+ // The list of variants to that are debuggable. For those we're going to\n+ // skip the bundling of the JS bundle and the assets. By default is just 'debug'.\n+ // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.\n+ // debuggableVariants = [\"liteDebug\", \"prodDebug\"]\n+\n+ /* Bundling */\n+ // A list containing the node command and its flags. Default is just 'node'.\n+ // nodeExecutableAndArgs = [\"node\"]\n+ //\n+ // The command to run when bundling. By default is 'bundle'\n+ // bundleCommand = \"ram-bundle\"\n+ //\n+ // The path to the CLI configuration file. Default is empty.\n+ // bundleConfig = file(../rn-cli.config.js)\n+ //\n+ // The name of the generated asset file containing your JS bundle\n+ // bundleAssetName = \"MyApplication.android.bundle\"\n+ //\n+ // The entry file for bundle generation. Default is 'index.android.js' or 'index.js'\n+ // entryFile = file(\"../js/MyApplication.android.js\")\n+ //\n+ // A list of extra flags to pass to the 'bundle' commands.\n+ // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle\n+ // extraPackagerArgs = []\n+\n+ /* Hermes Commands */\n+ // The hermes compiler command to run. By default it is 'hermesc'\n+ // hermesCommand = \"$rootDir/my-custom-hermesc/bin/hermesc\"\n+ //\n+ // The list of flags to pass to the Hermes compiler. By default is \"-O\", \"-output-source-map\"\n+ // hermesFlags = [\"-O\", \"-output-source-map\"]\n+}\n \n-apply from: new File(reactNativeRoot, \"react.gradle\")\n+// Override `hermesEnabled` by `expo.jsEngine`\n+ext {\n+ hermesEnabled = (findProperty('expo.jsEngine') ?: \"hermes\") == \"hermes\"\n+}\n \n /**\n- * Set this to true to create two separate APKs instead of one:\n- * - An APK that only works on ARM devices\n- * - An APK that only works on x86 devices\n- * The advantage is the size of the APK is reduced by about 4MB.\n- * Upload all the APKs to the Play Store and people will download\n- * the correct one based on the CPU architecture of their device.\n+ * Set this to true to create four separate APKs instead of one,\n+ * one for each native architecture. This is useful if you don't\n+ * use App Bundles (https://developer.android.com/guide/app-bundle/)\n+ * and want to have separate APKs to upload to the Play Store.\n */\n def enableSeparateBuildPerCPUArchitecture = false\n \n /**\n- * Run Proguard to shrink the Java bytecode in release builds.\n+ * Set this to true to Run Proguard on Release builds to minify the Java bytecode.\n */\n def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInReleaseBuilds') ?: false).toBoolean()\n \n /**\n- * The preferred build flavor of JavaScriptCore.\n+ * The preferred build flavor of JavaScriptCore (JSC)\n *\n * For example, to use the international variant, you can use:\n * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`\n *\n * The international variant includes ICU i18n library and necessary data\n * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that\n- * give correct results when using with locales other than en-US. Note that\n+ * give correct results when using with locales other than en-US. Note that\n * this variant is about 6MiB larger per architecture than default.\n */\n def jscFlavor = 'org.webkit:android-jsc:+'\n \n /**\n- * Whether to enable the Hermes VM.\n- *\n- * This should be set on project.ext.react and that value will be read here. If it is not set\n- * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode\n- * and the benefits of using Hermes will therefore be sharply reduced.\n- */\n-def enableHermes = project.ext.react.get(\"enableHermes\", false);\n-\n-/**\n- * Architectures to build native code for.\n+ * Private function to get the list of Native Architectures you want to build.\n+ * This reads the value from reactNativeArchitectures in your gradle.properties\n+ * file and works together with the --active-arch-only flag of react-native run-android.\n */\n def reactNativeArchitectures() {\n def value = project.getProperties().get(\"reactNativeArchitectures\")\n@@ -141,72 +113,13 @@ android {\n \n compileSdkVersion rootProject.ext.compileSdkVersion\n \n+ namespace \"com.helloworld\"\n defaultConfig {\n applicationId \"com.helloworld\"\n minSdkVersion rootProject.ext.minSdkVersion\n targetSdkVersion rootProject.ext.targetSdkVersion\n versionCode 1\n versionName \"1.0\"\n- buildConfigField \"boolean\", \"IS_NEW_ARCHITECTURE_ENABLED\", isNewArchitectureEnabled().toString()\n-\n- if (isNewArchitectureEnabled()) {\n- // We configure the CMake build only if you decide to opt-in for the New Architecture.\n- externalNativeBuild {\n- cmake {\n- arguments \"-DPROJECT_BUILD_DIR=$buildDir\",\n- \"-DREACT_ANDROID_DIR=${reactNativeRoot}/ReactAndroid\",\n- \"-DREACT_ANDROID_BUILD_DIR=${reactNativeRoot}/ReactAndroid/build\",\n- \"-DNODE_MODULES_DIR=$rootDir/../node_modules\",\n- \"-DANDROID_STL=c++_shared\"\n- }\n- }\n- if (!enableSeparateBuildPerCPUArchitecture) {\n- ndk {\n- abiFilters (*reactNativeArchitectures())\n- }\n- }\n- }\n- }\n-\n- if (isNewArchitectureEnabled()) {\n- // We configure the CMake build only if you decide to opt-in for the New Architecture.\n- externalNativeBuild {\n- cmake {\n- path \"$projectDir/src/main/jni/CMakeLists.txt\"\n- }\n- }\n- def reactAndroidProjectDir = project(':ReactAndroid').projectDir\n- def packageReactNdkDebugLibs = tasks.register(\"packageReactNdkDebugLibs\", Copy) {\n- dependsOn(\":ReactAndroid:packageReactNdkDebugLibsForBuck\")\n- from(\"$reactAndroidProjectDir/src/main/jni/prebuilt/lib\")\n- into(\"$buildDir/react-ndk/exported\")\n- }\n- def packageReactNdkReleaseLibs = tasks.register(\"packageReactNdkReleaseLibs\", Copy) {\n- dependsOn(\":ReactAndroid:packageReactNdkReleaseLibsForBuck\")\n- from(\"$reactAndroidProjectDir/src/main/jni/prebuilt/lib\")\n- into(\"$buildDir/react-ndk/exported\")\n- }\n- afterEvaluate {\n- // If you wish to add a custom TurboModule or component locally,\n- // you should uncomment this line.\n- // preBuild.dependsOn(\"generateCodegenArtifactsFromSchema\")\n- preDebugBuild.dependsOn(packageReactNdkDebugLibs)\n- preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)\n-\n- // Due to a bug inside AGP, we have to explicitly set a dependency\n- // between configureCMakeDebug* tasks and the preBuild tasks.\n- // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732\n- configureCMakeRelWithDebInfo.dependsOn(preReleaseBuild)\n- configureCMakeDebug.dependsOn(preDebugBuild)\n- reactNativeArchitectures().each { architecture ->\n- tasks.findByName(\"configureCMakeDebug[${architecture}]\")?.configure {\n- dependsOn(\"preDebugBuild\")\n- }\n- tasks.findByName(\"configureCMakeRelWithDebInfo[${architecture}]\")?.configure {\n- dependsOn(\"preReleaseBuild\")\n- }\n- }\n- }\n }\n \n splits {\n@@ -233,6 +146,7 @@ android {\n // Caution! In production, you need to generate your own keystore file.\n // see https://reactnative.dev/docs/signed-apk-android.\n signingConfig signingConfigs.debug\n+ shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false)\n minifyEnabled enableProguardInReleaseBuilds\n proguardFiles getDefaultProguardFile(\"proguard-android.txt\"), \"proguard-rules.pro\"\n }\n@@ -243,11 +157,12 @@ android {\n variant.outputs.each { output ->\n // For each separate APK per architecture, set a unique version code as described here:\n // https://developer.android.com/studio/build/configure-apk-splits.html\n+ // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc.\n def versionCodes = [\"armeabi-v7a\": 1, \"x86\": 2, \"arm64-v8a\": 3, \"x86_64\": 4]\n def abi = output.getFilter(OutputFile.ABI)\n if (abi != null) { // null for the universal-debug, universal-release variants\n output.versionCodeOverride =\n- versionCodes.get(abi) * 1048576 + defaultConfig.versionCode\n+ defaultConfig.versionCode * 1000 + versionCodes.get(abi)\n }\n \n }\n@@ -275,10 +190,8 @@ android {\n }\n \n dependencies {\n- implementation fileTree(dir: \"libs\", include: [\"*.jar\"])\n-\n- //noinspection GradleDynamicVersion\n- implementation \"com.facebook.react:react-native:+\" // From node_modules\n+ // The version of react-native is set by the React Native Gradle Plugin\n+ implementation(\"com.facebook.react:react-android\")\n \n def isGifEnabled = (findProperty('expo.gif.enabled') ?: \"\") == \"true\";\n def isWebpEnabled = (findProperty('expo.webp.enabled') ?: \"\") == \"true\";\n@@ -287,76 +200,38 @@ dependencies {\n \n // If your app supports Android versions before Ice Cream Sandwich (API level 14)\n if (isGifEnabled || isWebpEnabled) {\n- implementation \"com.facebook.fresco:fresco:${frescoVersion}\"\n- implementation \"com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:fresco:${frescoVersion}\")\n+ implementation(\"com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}\")\n }\n \n if (isGifEnabled) {\n // For animated gif support\n- implementation \"com.facebook.fresco:animated-gif:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:animated-gif:${frescoVersion}\")\n }\n \n if (isWebpEnabled) {\n // For webp support\n- implementation \"com.facebook.fresco:webpsupport:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:webpsupport:${frescoVersion}\")\n if (isWebpAnimatedEnabled) {\n // Animated webp support\n- implementation \"com.facebook.fresco:animated-webp:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:animated-webp:${frescoVersion}\")\n }\n }\n \n- implementation \"androidx.swiperefreshlayout:swiperefreshlayout:1.0.0\"\n- debugImplementation(\"com.facebook.flipper:flipper:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.fbjni'\n- }\n+ implementation(\"androidx.swiperefreshlayout:swiperefreshlayout:1.0.0\")\n+\n+ debugImplementation(\"com.facebook.flipper:flipper:${FLIPPER_VERSION}\")\n debugImplementation(\"com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.flipper'\n exclude group:'com.squareup.okhttp3', module:'okhttp'\n }\n- debugImplementation(\"com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.flipper'\n- }\n+ debugImplementation(\"com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}\")\n \n- if (enableHermes) {\n- //noinspection GradleDynamicVersion\n- implementation(\"com.facebook.react:hermes-engine:+\") { // From node_modules\n- exclude group:'com.facebook.fbjni'\n- }\n+ if (hermesEnabled.toBoolean()) {\n+ implementation(\"com.facebook.react:hermes-android\")\n } else {\n implementation jscFlavor\n }\n }\n \n-if (isNewArchitectureEnabled()) {\n- // If new architecture is enabled, we let you build RN from source\n- // Otherwise we fallback to a prebuilt .aar bundled in the NPM package.\n- // This will be applied to all the imported transtitive dependency.\n- configurations.all {\n- resolutionStrategy.dependencySubstitution {\n- substitute(module(\"com.facebook.react:react-native\"))\n- .using(project(\":ReactAndroid\"))\n- .because(\"On New Architecture we're building React Native from source\")\n- substitute(module(\"com.facebook.react:hermes-engine\"))\n- .using(project(\":ReactAndroid:hermes-engine\"))\n- .because(\"On New Architecture we're building Hermes from source\")\n- }\n- }\n-}\n-\n-// Run this once to be able to run the application with BUCK\n-// puts all compile dependencies into folder libs for BUCK to use\n-task copyDownloadableDepsToLibs(type: Copy) {\n- from configurations.implementation\n- into 'libs'\n-}\n-\n apply from: new File([\"node\", \"--print\", \"require.resolve('@react-native-community/cli-platform-android/package.json')\"].execute(null, rootDir).text.trim(), \"../native_modules.gradle\");\n applyNativeModulesAppBuildGradle(project)\n-\n-def isNewArchitectureEnabled() {\n- // To opt-in for the New Architecture, you can either:\n- // - Set `newArchEnabled` to true inside the `gradle.properties` file\n- // - Invoke gradle with `-newArchEnabled=true`\n- // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`\n- return project.hasProperty(\"newArchEnabled\") && project.newArchEnabled == \"true\"\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/build_defs.bzl b/templates/expo-template-bare-minimum/android/app/build_defs.bzl\ndeleted file mode 100644\nindex fff270f8d1..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/build_defs.bzl\n+++ /dev/null\n@@ -1,19 +0,0 @@\n-\"\"\"Helper definitions to glob .aar and .jar targets\"\"\"\n-\n-def create_aar_targets(aarfiles):\n- for aarfile in aarfiles:\n- name = \"aars__\" + aarfile[aarfile.rindex(\"/\") + 1:aarfile.rindex(\".aar\")]\n- lib_deps.append(\":\" + name)\n- android_prebuilt_aar(\n- name = name,\n- aar = aarfile,\n- )\n-\n-def create_jar_targets(jarfiles):\n- for jarfile in jarfiles:\n- name = \"jars__\" + jarfile[jarfile.rindex(\"/\") + 1:jarfile.rindex(\".jar\")]\n- lib_deps.append(\":\" + name)\n- prebuilt_jar(\n- name = name,\n- binary_jar = jarfile,\n- )\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java b/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\nindex 8cddb11cb2..595dd5831c 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\n@@ -1,5 +1,5 @@\n /**\n- * Copyright (c) Facebook, Inc. and its affiliates.\n+ * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n *

This source code is licensed under the MIT license found in the LICENSE file in the root\n * directory of this source tree.\n@@ -17,22 +17,27 @@ import com.facebook.flipper.plugins.inspector.DescriptorMapping;\n import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;\n import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;\n import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;\n-import com.facebook.flipper.plugins.react.ReactFlipperPlugin;\n import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;\n+import com.facebook.react.ReactInstanceEventListener;\n import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.bridge.ReactContext;\n import com.facebook.react.modules.network.NetworkingModule;\n import okhttp3.OkHttpClient;\n \n+/**\n+ * Class responsible of loading Flipper inside your React Native application. This is the debug\n+ * flavor of it. Here you can add your own plugins and customize the Flipper setup.\n+ */\n public class ReactNativeFlipper {\n public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {\n if (FlipperUtils.shouldEnableFlipper(context)) {\n final FlipperClient client = AndroidFlipperClient.getInstance(context);\n+\n client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));\n- client.addPlugin(new ReactFlipperPlugin());\n client.addPlugin(new DatabasesFlipperPlugin(context));\n client.addPlugin(new SharedPreferencesFlipperPlugin(context));\n client.addPlugin(CrashReporterPlugin.getInstance());\n+\n NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();\n NetworkingModule.setCustomClientBuilder(\n new NetworkingModule.CustomClientBuilder() {\n@@ -43,12 +48,13 @@ public class ReactNativeFlipper {\n });\n client.addPlugin(networkFlipperPlugin);\n client.start();\n+\n // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized\n // Hence we run if after all native modules have been initialized\n ReactContext reactContext = reactInstanceManager.getCurrentReactContext();\n if (reactContext == null) {\n reactInstanceManager.addReactInstanceEventListener(\n- new ReactInstanceManager.ReactInstanceEventListener() {\n+ new ReactInstanceEventListener() {\n @Override\n public void onReactContextInitialized(ReactContext reactContext) {\n reactInstanceManager.removeReactInstanceEventListener(this);\n@@ -66,4 +72,4 @@ public class ReactNativeFlipper {\n }\n }\n }\n-}\n\\ No newline at end of file\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml b/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\nindex 0cad655b33..6536fc03ad 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n@@ -1,4 +1,4 @@\n-\n+\n \n \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\nindex 8e13797d9b..7e2823fb6c 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n@@ -5,7 +5,8 @@ import android.os.Bundle;\n \n import com.facebook.react.ReactActivity;\n import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactActivityDelegate;\n \n import expo.modules.ReactActivityDelegateWrapper;\n \n@@ -29,15 +30,20 @@ public class MainActivity extends ReactActivity {\n }\n \n /**\n- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n- * (Paper).\n+ * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link\n+ * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React\n+ * (aka React 18) with two boolean flags.\n */\n @Override\n protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n- new MainActivityDelegate(this, getMainComponentName())\n- );\n+ return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, new DefaultReactActivityDelegate(\n+ this,\n+ getMainComponentName(),\n+ // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n+ DefaultNewArchitectureEntryPoint.getFabricEnabled(), // fabricEnabled\n+ // If you opted-in for the New Architecture, we enable Concurrent React (i.e. React 18).\n+ DefaultNewArchitectureEntryPoint.getConcurrentReactEnabled() // concurrentRootEnabled\n+ ));\n }\n \n /**\n@@ -59,25 +65,4 @@ public class MainActivity extends ReactActivity {\n // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n super.invokeDefaultOnBackPressed();\n }\n-\n- public static class MainActivityDelegate extends ReactActivityDelegate {\n- public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n- super(activity, mainComponentName);\n- }\n-\n- @Override\n- protected ReactRootView createRootView() {\n- ReactRootView reactRootView = new ReactRootView(getContext());\n- // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n- reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n- return reactRootView;\n- }\n-\n- @Override\n- protected boolean isConcurrentRootEnabled() {\n- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\nindex 7deb688b07..31c2b288c1 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n@@ -1,69 +1,70 @@\n package com.helloworld;\n \n import android.app.Application;\n-import android.content.Context;\n import android.content.res.Configuration;\n import androidx.annotation.NonNull;\n \n import com.facebook.react.PackageList;\n import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.ReactNativeHost;\n import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactNativeHost;\n import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n \n import expo.modules.ApplicationLifecycleDispatcher;\n import expo.modules.ReactNativeHostWrapper;\n \n-import java.lang.reflect.InvocationTargetException;\n import java.util.List;\n \n public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n \n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n+ private final ReactNativeHost mReactNativeHost =\n+ new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) {\n+ @Override\n+ public boolean getUseDeveloperSupport() {\n+ return BuildConfig.DEBUG;\n+ }\n \n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n+ @Override\n+ protected List getPackages() {\n+ @SuppressWarnings(\"UnnecessaryLocalVariable\")\n+ List packages = new PackageList(this).getPackages();\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return packages;\n+ }\n \n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n+ @Override\n+ protected String getJSMainModuleName() {\n+ return \"index\";\n+ }\n+\n+ @Override\n+ protected boolean isNewArchEnabled() {\n+ return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n+ }\n+\n+ @Override\n+ protected Boolean isHermesEnabled() {\n+ return BuildConfig.IS_HERMES_ENABLED;\n+ }\n+ });\n \n @Override\n public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n+ return mReactNativeHost;\n }\n \n @Override\n public void onCreate() {\n super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ DefaultNewArchitectureEntryPoint.load();\n+ }\n+ ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n ApplicationLifecycleDispatcher.onApplicationCreate(this);\n }\n \n@@ -72,35 +73,4 @@ public class MainApplication extends Application implements ReactApplication {\n super.onConfigurationChanged(newConfig);\n ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex 7665dd923f..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,117 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.fabric.ReactNativeConfig;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- ReactNativeConfig.DEFAULT_CONFIG,\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt b/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\ndeleted file mode 100644\nindex d2cad3a326..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\n+++ /dev/null\n@@ -1,7 +0,0 @@\n-cmake_minimum_required(VERSION 3.13)\n-\n-# Define the library name here.\n-project(helloworld_appmodules)\n-\n-# This file includes all the necessary to let you build your application with the New Architecture.\n-include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 26162dd872..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string &moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n-\n- // Module providers autolinked by RN CLI\n- auto rncli_module = rncli_ModuleProvider(moduleName, params);\n- if (rncli_module != nullptr) {\n- return rncli_module;\n- }\n-\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex b38ccf53fd..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string &moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex 5fd688c509..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string &name,\n- const std::shared_ptr &jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string &name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- const std::string &name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 9ee38a81f6..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string &name,\n- const std::shared_ptr &jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string &name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(const std::string &name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 54f598a486..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,65 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Autolinked providers registered by RN CLI\n- rncli_registerProviders(providerRegistry);\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java b/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java\nnew file mode 100644\nindex 0000000000..b510364404\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/release/java/com/helloworld/ReactNativeFlipper.java\n@@ -0,0 +1,20 @@\n+/**\n+ * Copyright (c) Meta Platforms, Inc. and affiliates.\n+ *\n+ *

This source code is licensed under the MIT license found in the LICENSE file in the root\n+ * directory of this source tree.\n+ */\n+package com.helloworld;\n+\n+import android.content.Context;\n+import com.facebook.react.ReactInstanceManager;\n+\n+/**\n+ * Class responsible of loading Flipper inside your React Native application. This is the release\n+ * flavor of it so it's empty as we don't want to load Flipper.\n+ */\n+public class ReactNativeFlipper {\n+ public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {\n+ // Do nothing as we don't want to initialize Flipper on Release.\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/build.gradle b/templates/expo-template-bare-minimum/android/build.gradle\nindex 8181b282cd..e5fda82878 100644\n--- a/templates/expo-template-bare-minimum/android/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/build.gradle\n@@ -2,47 +2,30 @@\n \n buildscript {\n ext {\n- buildToolsVersion = findProperty('android.buildToolsVersion') ?: '31.0.0'\n+ buildToolsVersion = findProperty('android.buildToolsVersion') ?: '33.0.0'\n minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '21')\n- compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '31')\n- targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '31')\n+ compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '33')\n+ targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '33')\n if (findProperty('android.kotlinVersion')) {\n kotlinVersion = findProperty('android.kotlinVersion')\n }\n frescoVersion = findProperty('expo.frescoVersion') ?: '2.5.0'\n \n- if (System.properties['os.arch'] == 'aarch64') {\n- // For M1 Users we need to use the NDK 24 which added support for aarch64\n- ndkVersion = '24.0.8215888'\n- } else {\n- // Otherwise we default to the side-by-side NDK version from AGP.\n- ndkVersion = '21.4.7075529'\n- }\n+ // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.\n+ ndkVersion = \"23.1.7779620\"\n }\n repositories {\n google()\n mavenCentral()\n }\n dependencies {\n- classpath('com.android.tools.build:gradle:7.2.1')\n+ classpath('com.android.tools.build:gradle:7.4.1')\n classpath('com.facebook.react:react-native-gradle-plugin')\n- classpath('de.undercouch:gradle-download-task:5.0.1')\n- // NOTE: Do not place your application dependencies here; they belong\n- // in the individual module build.gradle files\n }\n }\n \n-def REACT_NATIVE_VERSION = new File(['node', '--print', \"JSON.parse(require('fs').readFileSync(require.resolve('react-native/package.json'), 'utf-8')).version\"].execute(null, rootDir).text.trim())\n-\n allprojects {\n- configurations.all {\n- resolutionStrategy {\n- force \"com.facebook.react:react-native:\" + REACT_NATIVE_VERSION\n- }\n- }\n-\n repositories {\n- mavenLocal()\n maven {\n // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm\n url(new File(['node', '--print', \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), '../android'))\n@@ -53,13 +36,7 @@ allprojects {\n }\n \n google()\n- mavenCentral {\n- // We don't want to fetch react-native from Maven Central as there are\n- // older versions over there.\n- content {\n- excludeGroup 'com.facebook.react'\n- }\n- }\n+ mavenCentral()\n maven { url 'https://www.jitpack.io' }\n }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/gitignore b/templates/expo-template-bare-minimum/android/gitignore\nindex 64436baaf5..877b87e9a5 100644\n--- a/templates/expo-template-bare-minimum/android/gitignore\n+++ b/templates/expo-template-bare-minimum/android/gitignore\n@@ -11,11 +11,5 @@ local.properties\n *.iml\n *.hprof\n \n-# BUCK\n-buck-out/\n-\\.buckd/\n-*.keystore\n-!debug.keystore\n-\n # Bundle artifacts\n *.jsbundle\ndiff --git a/templates/expo-template-bare-minimum/android/gradle.properties b/templates/expo-template-bare-minimum/android/gradle.properties\nindex fab3fb6bcf..9911ac4afd 100644\n--- a/templates/expo-template-bare-minimum/android/gradle.properties\n+++ b/templates/expo-template-bare-minimum/android/gradle.properties\n@@ -42,7 +42,7 @@ newArchEnabled=false\n \n # The hosted JavaScript engine\n # Supported values: expo.jsEngine = \"hermes\" | \"jsc\"\n-expo.jsEngine=jsc\n+expo.jsEngine=hermes\n \n # Enable GIF support in React Native images (~200 B increase)\n expo.gif.enabled=true\ndiff --git a/templates/expo-template-bare-minimum/android/settings.gradle b/templates/expo-template-bare-minimum/android/settings.gradle\nindex b3332319f9..1dc416e7c1 100644\n--- a/templates/expo-template-bare-minimum/android/settings.gradle\n+++ b/templates/expo-template-bare-minimum/android/settings.gradle\n@@ -8,10 +8,3 @@ applyNativeModulesSettingsGradle(settings)\n \n include ':app'\n includeBuild(new File([\"node\", \"--print\", \"require.resolve('react-native-gradle-plugin/package.json')\"].execute(null, rootDir).text.trim()).getParentFile())\n-\n-if (settings.hasProperty(\"newArchEnabled\") && settings.newArchEnabled == \"true\") {\n- include(\":ReactAndroid\")\n- project(\":ReactAndroid\").projectDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../ReactAndroid\");\n- include(\":ReactAndroid:hermes-engine\")\n- project(\":ReactAndroid:hermes-engine\").projectDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../ReactAndroid/hermes-engine\");\n-}\ndiff --git a/templates/expo-template-bare-minimum/gitignore b/templates/expo-template-bare-minimum/gitignore\nindex 67397f65f9..df57ba88a1 100644\n--- a/templates/expo-template-bare-minimum/gitignore\n+++ b/templates/expo-template-bare-minimum/gitignore\n@@ -31,6 +31,8 @@ local.properties\n *.iml\n *.hprof\n .cxx/\n+*.keystore\n+!debug.keystore\n \n # node.js\n #\n@@ -38,18 +40,15 @@ node_modules/\n npm-debug.log\n yarn-error.log\n \n-# BUCK\n-buck-out/\n-\\.buckd/\n-*.keystore\n-!debug.keystore\n-\n # Bundle artifacts\n *.jsbundle\n \n # CocoaPods\n /ios/Pods/\n \n+# Temporary files created by Metro to check the health of the file watcher\n+.metro-health-check*\n+\n # Expo\n .expo/\n web-build/\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\nindex 62a1be2493..98e6c2afea 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld.xcodeproj/project.pbxproj\n@@ -310,6 +310,7 @@\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n \t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n+ MARKETING_VERSION = 1.0;\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n \t\t\t\t\t\"-ObjC\",\n@@ -333,6 +334,7 @@\n \t\t\t\tINFOPLIST_FILE = HelloWorld/Info.plist;\n \t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n \t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n+ MARKETING_VERSION = 1.0;\n \t\t\t\tOTHER_LDFLAGS = (\n \t\t\t\t\t\"$(inherited)\",\n \t\t\t\t\t\"-ObjC\",\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\nindex f7d2972042..1658a437eb 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.h\n@@ -1,9 +1,7 @@\n-#import \n-#import \n+#import \n #import \n-\n #import \n \n-@interface AppDelegate : EXAppDelegateWrapper \n+@interface AppDelegate : EXAppDelegateWrapper\n \n @end\ndiff --git a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\nindex a6e13e11ab..8cb5aef137 100644\n--- a/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\n+++ b/templates/expo-template-bare-minimum/ios/HelloWorld/AppDelegate.mm\n@@ -1,100 +1,40 @@\n #import \"AppDelegate.h\"\n \n-#import \n #import \n-#import \n #import \n-#import \n-\n-#import \n-\n-#if RCT_NEW_ARCH_ENABLED\n-#import \n-#import \n-#import \n-#import \n-#import \n-#import \n-\n-#import \n-\n-static NSString *const kRNConcurrentRoot = @\"concurrentRoot\";\n-\n-@interface AppDelegate () {\n- RCTTurboModuleManager *_turboModuleManager;\n- RCTSurfacePresenterBridgeAdapter *_bridgeAdapter;\n- std::shared_ptr _reactNativeConfig;\n- facebook::react::ContextContainer::Shared _contextContainer;\n-}\n-@end\n-#endif\n \n @implementation AppDelegate\n \n - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions\n {\n- RCTAppSetupPrepareApp(application);\n-\n- RCTBridge *bridge = [self.reactDelegate createBridgeWithDelegate:self launchOptions:launchOptions];\n-\n-#if RCT_NEW_ARCH_ENABLED\n- _contextContainer = std::make_shared();\n- _reactNativeConfig = std::make_shared();\n- _contextContainer->insert(\"ReactNativeConfig\", _reactNativeConfig);\n- _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer];\n- bridge.surfacePresenter = _bridgeAdapter.surfacePresenter;\n-#endif\n-\n- NSDictionary *initProps = [self prepareInitialProps];\n- UIView *rootView = [self.reactDelegate createRootViewWithBridge:bridge moduleName:@\"main\" initialProperties:initProps];\n-\n- rootView.backgroundColor = [UIColor whiteColor];\n- self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];\n- UIViewController *rootViewController = [self.reactDelegate createRootViewController];\n- rootViewController.view = rootView;\n- self.window.rootViewController = rootViewController;\n- [self.window makeKeyAndVisible];\n+ self.moduleName = @\"main\";\n \n- [super application:application didFinishLaunchingWithOptions:launchOptions];\n+ // You can add your custom initial props in the dictionary below.\n+ // They will be passed down to the ViewController used by React Native.\n+ self.initialProps = @{};\n \n- return YES;\n+ return [super application:application didFinishLaunchingWithOptions:launchOptions];\n }\n \n-- (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge\n+- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n {\n- // If you'd like to export some custom RCTBridgeModules, add them here!\n- return @[];\n+#if DEBUG\n+ return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"index\"];\n+#else\n+ return [[NSBundle mainBundle] URLForResource:@\"main\" withExtension:@\"jsbundle\"];\n+#endif\n }\n \n /// This method controls whether the `concurrentRoot`feature of React18 is turned on or off.\n ///\n /// @see: https://reactjs.org/blog/2022/03/29/react-v18.html\n /// @note: This requires to be rendering on Fabric (i.e. on the New Architecture).\n-/// @return: `true` if the `concurrentRoot` feture is enabled. Otherwise, it returns `false`.\n+/// @return: `true` if the `concurrentRoot` feature is enabled. Otherwise, it returns `false`.\n - (BOOL)concurrentRootEnabled\n {\n- // Switch this bool to turn on and off the concurrent root\n return true;\n }\n \n-- (NSDictionary *)prepareInitialProps\n-{\n- NSMutableDictionary *initProps = [NSMutableDictionary new];\n-#if RCT_NEW_ARCH_ENABLED\n- initProps[kRNConcurrentRoot] = @([self concurrentRootEnabled]);\n-#endif\n- return initProps;\n-}\n-\n-- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n-{\n-#if DEBUG\n- return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"index\"];\n-#else\n- return [[NSBundle mainBundle] URLForResource:@\"main\" withExtension:@\"jsbundle\"];\n-#endif\n-}\n-\n // Linking API\n - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options {\n return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options];\n@@ -124,43 +64,4 @@ static NSString *const kRNConcurrentRoot = @\"concurrentRoot\";\n return [super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];\n }\n \n-#if RCT_NEW_ARCH_ENABLED\n-\n-#pragma mark - RCTCxxBridgeDelegate\n-\n-- (std::unique_ptr)jsExecutorFactoryForBridge:(RCTBridge *)bridge\n-{\n- _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge\n- delegate:self\n- jsInvoker:bridge.jsCallInvoker];\n- return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager);\n-}\n-\n-#pragma mark RCTTurboModuleManagerDelegate\n-\n-- (Class)getModuleClassFromName:(const char *)name\n-{\n- return RCTCoreModulesClassProvider(name);\n-}\n-\n-- (std::shared_ptr)getTurboModule:(const std::string &)name\n- jsInvoker:(std::shared_ptr)jsInvoker\n-{\n- return nullptr;\n-}\n-\n-- (std::shared_ptr)getTurboModule:(const std::string &)name\n- initParams:\n- (const facebook::react::ObjCTurboModule::InitParams &)params\n-{\n- return nullptr;\n-}\n-\n-- (id)getModuleInstanceFromClass:(Class)moduleClass\n-{\n- return RCTAppSetupDefaultModuleFromClass(moduleClass);\n-}\n-\n-#endif\n-\n @end\ndiff --git a/templates/expo-template-bare-minimum/ios/Podfile b/templates/expo-template-bare-minimum/ios/Podfile\nindex 474455b90d..e523ea5cac 100644\n--- a/templates/expo-template-bare-minimum/ios/Podfile\n+++ b/templates/expo-template-bare-minimum/ios/Podfile\n@@ -5,34 +5,63 @@ require File.join(File.dirname(`node --print \"require.resolve('@react-native-com\n require 'json'\n podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}\n \n+ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0'\n+ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = '1' if podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR'] == 'true'\n+\n platform :ios, podfile_properties['ios.deploymentTarget'] || '13.0'\n install! 'cocoapods',\n :deterministic_uuids => false\n \n+prepare_react_native_project!\n+\n+# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set.\n+# because `react-native-flipper` depends on (FlipperKit,...), which will be excluded. To fix this,\n+# you can also exclude `react-native-flipper` in `react-native.config.js`\n+#\n+# ```js\n+# module.exports = {\n+# dependencies: {\n+# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),\n+# }\n+# }\n+# ```\n+flipper_config = FlipperConfiguration.disabled\n+if ENV['NO_FLIPPER'] == '1' then\n+ # Explicitly disabled through environment variables\n+ flipper_config = FlipperConfiguration.disabled\n+elsif podfile_properties.key?('ios.flipper') then\n+ # Configure Flipper in Podfile.properties.json\n+ if podfile_properties['ios.flipper'] == 'true' then\n+ flipper_config = FlipperConfiguration.enabled([\"Debug\", \"Release\"])\n+ elsif podfile_properties['ios.flipper'] != 'false' then\n+ flipper_config = FlipperConfiguration.enabled([\"Debug\", \"Release\"], { 'Flipper' => podfile_properties['ios.flipper'] })\n+ end\n+end\n+\n target 'HelloWorld' do\n use_expo_modules!\n config = use_native_modules!\n \n use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks']\n+ use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS']\n \n # Flags change depending on the env values.\n flags = get_default_flags()\n \n use_react_native!(\n :path => config[:reactNativePath],\n- :hermes_enabled => podfile_properties['expo.jsEngine'] == 'hermes',\n+ :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes',\n :fabric_enabled => flags[:fabric_enabled],\n # An absolute path to your application root.\n :app_path => \"#{Pod::Config.instance.installation_root}/..\",\n- #\n- # Uncomment to opt-in to using Flipper\n- # Note that if you have use_frameworks! enabled, Flipper will not work\n- # :flipper_configuration => !ENV['CI'] ? FlipperConfiguration.enabled : FlipperConfiguration.disabled,\n+ # Note that if you have use_frameworks! enabled, Flipper will not work if enabled\n+ :flipper_configuration => flipper_config\n )\n \n post_install do |installer|\n react_native_post_install(\n installer,\n+ config[:reactNativePath],\n # Set `mac_catalyst_enabled` to `true` in order to apply patches\n # necessary for Mac Catalyst builds\n :mac_catalyst_enabled => false\ndiff --git a/templates/expo-template-bare-minimum/ios/Podfile.properties.json b/templates/expo-template-bare-minimum/ios/Podfile.properties.json\nindex f6d872e81a..b1bd45da51 100644\n--- a/templates/expo-template-bare-minimum/ios/Podfile.properties.json\n+++ b/templates/expo-template-bare-minimum/ios/Podfile.properties.json\n@@ -1,3 +1,3 @@\n {\n- \"expo.jsEngine\": \"jsc\"\n+ \"expo.jsEngine\": \"hermes\"\n }\ndiff --git a/templates/expo-template-bare-minimum/package.json b/templates/expo-template-bare-minimum/package.json\nindex a41fdc0d8d..d1fcd513cc 100644\n--- a/templates/expo-template-bare-minimum/package.json\n+++ b/templates/expo-template-bare-minimum/package.json\n@@ -1,7 +1,7 @@\n {\n \"name\": \"expo-template-bare-minimum\",\n \"description\": \"This bare project template includes a minimal setup for using unimodules with React Native.\",\n- \"version\": \"47.0.26\",\n+ \"version\": \"48.0.21\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"start\": \"expo start --dev-client\",\n@@ -10,13 +10,13 @@\n \"web\": \"expo start --web\"\n },\n \"dependencies\": {\n- \"expo\": \"~47.0.14\",\n- \"expo-splash-screen\": \"~0.17.5\",\n- \"expo-status-bar\": \"~1.4.2\",\n- \"react\": \"18.1.0\",\n- \"react-native\": \"0.70.8\"\n+ \"expo\": \"~48.0.21\",\n+ \"expo-splash-screen\": \"~0.18.2\",\n+ \"expo-status-bar\": \"~1.4.4\",\n+ \"react\": \"18.2.0\",\n+ \"react-native\": \"0.71.14\"\n },\n \"devDependencies\": {\n- \"@babel/core\": \"^7.12.9\"\n+ \"@babel/core\": \"^7.20.0\"\n }\n }\n","48..48":"","45..49":"diff --git a/templates/expo-template-bare-minimum/.buckconfig b/templates/expo-template-bare-minimum/.buckconfig\ndeleted file mode 100644\nindex 934256cb29..0000000000\n--- a/templates/expo-template-bare-minimum/.buckconfig\n+++ /dev/null\n@@ -1,6 +0,0 @@\n-\n-[android]\n- target = Google Inc.:Google APIs:23\n-\n-[maven_repositories]\n- central = https://repo1.maven.org/maven2\ndiff --git a/templates/expo-template-bare-minimum/.npmignore b/templates/expo-template-bare-minimum/.npmignore\nindex 35490b6612..bc0b76356d 100644\n--- a/templates/expo-template-bare-minimum/.npmignore\n+++ b/templates/expo-template-bare-minimum/.npmignore\n@@ -17,6 +17,8 @@ web-build/\n HelloWorld.xcworkspace\n Podfile.lock\n ios/Pods\n+ios/.xcode.env.local\n android/.build\n android/app/build\n android/.gradle\n+ios/.xcode.env.local\ndiff --git a/templates/expo-template-bare-minimum/android/app/BUCK b/templates/expo-template-bare-minimum/android/app/BUCK\ndeleted file mode 100644\nindex 0e77904834..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/BUCK\n+++ /dev/null\n@@ -1,55 +0,0 @@\n-# To learn about Buck see [Docs](https://buckbuild.com/).\n-# To run your application with Buck:\n-# - install Buck\n-# - `npm start` - to start the packager\n-# - `cd android`\n-# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname \"CN=Android Debug,O=Android,C=US\"`\n-# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck\n-# - `buck install -r android/app` - compile, install and run application\n-#\n-\n-load(\":build_defs.bzl\", \"create_aar_targets\", \"create_jar_targets\")\n-\n-lib_deps = []\n-\n-create_aar_targets(glob([\"libs/*.aar\"]))\n-\n-create_jar_targets(glob([\"libs/*.jar\"]))\n-\n-android_library(\n- name = \"all-libs\",\n- exported_deps = lib_deps,\n-)\n-\n-android_library(\n- name = \"app-code\",\n- srcs = glob([\n- \"src/main/java/**/*.java\",\n- ]),\n- deps = [\n- \":all-libs\",\n- \":build_config\",\n- \":res\",\n- ],\n-)\n-\n-android_build_config(\n- name = \"build_config\",\n- package = \"com.helloworld\",\n-)\n-\n-android_resource(\n- name = \"res\",\n- package = \"com.helloworld\",\n- res = \"src/main/res\",\n-)\n-\n-android_binary(\n- name = \"app\",\n- keystore = \"//android/keystores:debug\",\n- manifest = \"src/main/AndroidManifest.xml\",\n- package_type = \"debug\",\n- deps = [\n- \":app-code\",\n- ],\n-)\ndiff --git a/templates/expo-template-bare-minimum/android/app/build.gradle b/templates/expo-template-bare-minimum/android/app/build.gradle\nindex 346fb02564..7105aaaa3f 100644\n--- a/templates/expo-template-bare-minimum/android/app/build.gradle\n+++ b/templates/expo-template-bare-minimum/android/app/build.gradle\n@@ -1,232 +1,95 @@\n apply plugin: \"com.android.application\"\n-\n-import com.android.build.OutputFile\n-import org.apache.tools.ant.taskdefs.condition.Os\n-\n-/**\n- * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets\n- * and bundleReleaseJsAndAssets).\n- * These basically call `react-native bundle` with the correct arguments during the Android build\n- * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the\n- * bundle directly from the development server. Below you can see all the possible configurations\n- * and their defaults. If you decide to add a configuration block, make sure to add it before the\n- * `apply from: \"../../node_modules/react-native/react.gradle\"` line.\n- *\n- * project.ext.react = [\n- * // the name of the generated asset file containing your JS bundle\n- * bundleAssetName: \"index.android.bundle\",\n- *\n- * // the entry file for bundle generation. If none specified and\n- * // \"index.android.js\" exists, it will be used. Otherwise \"index.js\" is\n- * // default. Can be overridden with ENTRY_FILE environment variable.\n- * entryFile: \"index.android.js\",\n- *\n- * // https://reactnative.dev/docs/performance#enable-the-ram-format\n- * bundleCommand: \"ram-bundle\",\n- *\n- * // whether to bundle JS and assets in debug mode\n- * bundleInDebug: false,\n- *\n- * // whether to bundle JS and assets in release mode\n- * bundleInRelease: true,\n- *\n- * // whether to bundle JS and assets in another build variant (if configured).\n- * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants\n- * // The configuration property can be in the following formats\n- * // 'bundleIn${productFlavor}${buildType}'\n- * // 'bundleIn${buildType}'\n- * // bundleInFreeDebug: true,\n- * // bundleInPaidRelease: true,\n- * // bundleInBeta: true,\n- *\n- * // whether to disable dev mode in custom build variants (by default only disabled in release)\n- * // for example: to disable dev mode in the staging build type (if configured)\n- * devDisabledInStaging: true,\n- * // The configuration property can be in the following formats\n- * // 'devDisabledIn${productFlavor}${buildType}'\n- * // 'devDisabledIn${buildType}'\n- *\n- * // the root of your project, i.e. where \"package.json\" lives\n- * root: \"../../\",\n- *\n- * // where to put the JS bundle asset in debug mode\n- * jsBundleDirDebug: \"$buildDir/intermediates/assets/debug\",\n- *\n- * // where to put the JS bundle asset in release mode\n- * jsBundleDirRelease: \"$buildDir/intermediates/assets/release\",\n- *\n- * // where to put drawable resources / React Native assets, e.g. the ones you use via\n- * // require('./image.png')), in debug mode\n- * resourcesDirDebug: \"$buildDir/intermediates/res/merged/debug\",\n- *\n- * // where to put drawable resources / React Native assets, e.g. the ones you use via\n- * // require('./image.png')), in release mode\n- * resourcesDirRelease: \"$buildDir/intermediates/res/merged/release\",\n- *\n- * // by default the gradle tasks are skipped if none of the JS files or assets change; this means\n- * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to\n- * // date; if you have any other folders that you want to ignore for performance reasons (gradle\n- * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/\n- * // for example, you might want to remove it from here.\n- * inputExcludes: [\"android/**\", \"ios/**\"],\n- *\n- * // override which node gets called and with what additional arguments\n- * nodeExecutableAndArgs: [\"node\"],\n- *\n- * // supply additional arguments to the packager\n- * extraPackagerArgs: []\n- * ]\n- */\n+apply plugin: \"com.facebook.react\"\n \n def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath()\n \n-project.ext.react = [\n- entryFile: [\"node\", \"-e\", \"require('expo/scripts/resolveAppEntry')\", projectRoot, \"android\"].execute(null, rootDir).text.trim(),\n- enableHermes: (findProperty('expo.jsEngine') ?: \"jsc\") == \"hermes\",\n- cliPath: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/cli.js\",\n- hermesCommand: new File([\"node\", \"--print\", \"require.resolve('hermes-engine/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/%OS-BIN%/hermesc\",\n- composeSourceMapsPath: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/scripts/compose-source-maps.js\",\n-]\n-\n-apply from: new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim(), \"../react.gradle\")\n-\n /**\n- * Set this to true to create two separate APKs instead of one:\n- * - An APK that only works on ARM devices\n- * - An APK that only works on x86 devices\n- * The advantage is the size of the APK is reduced by about 4MB.\n- * Upload all the APKs to the Play Store and people will download\n- * the correct one based on the CPU architecture of their device.\n+ * This is the configuration block to customize your React Native Android app.\n+ * By default you don't need to apply any configuration, just uncomment the lines you need.\n */\n-def enableSeparateBuildPerCPUArchitecture = false\n+react {\n+ entryFile = file([\"node\", \"-e\", \"require('expo/scripts/resolveAppEntry')\", projectRoot, \"android\", \"absolute\"].execute(null, rootDir).text.trim())\n+ reactNativeDir = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()\n+ hermesCommand = new File([\"node\", \"--print\", \"require.resolve('react-native/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + \"/sdks/hermesc/%OS-BIN%/hermesc\"\n+ codegenDir = new File([\"node\", \"--print\", \"require.resolve('@react-native/codegen/package.json')\"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile()\n+\n+ // Use Expo CLI to bundle the app, this ensures the Metro config\n+ // works correctly with Expo projects.\n+ cliFile = new File([\"node\", \"--print\", \"require.resolve('@expo/cli')\"].execute(null, rootDir).text.trim())\n+ bundleCommand = \"export:embed\"\n+\n+ /* Folders */\n+ // The root of your project, i.e. where \"package.json\" lives. Default is '..'\n+ // root = file(\"../\")\n+ // The folder where the react-native NPM package is. Default is ../node_modules/react-native\n+ // reactNativeDir = file(\"../node_modules/react-native\")\n+ // The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen\n+ // codegenDir = file(\"../node_modules/@react-native/codegen\")\n+\n+ /* Variants */\n+ // The list of variants to that are debuggable. For those we're going to\n+ // skip the bundling of the JS bundle and the assets. By default is just 'debug'.\n+ // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.\n+ // debuggableVariants = [\"liteDebug\", \"prodDebug\"]\n+\n+ /* Bundling */\n+ // A list containing the node command and its flags. Default is just 'node'.\n+ // nodeExecutableAndArgs = [\"node\"]\n+\n+ //\n+ // The path to the CLI configuration file. Default is empty.\n+ // bundleConfig = file(../rn-cli.config.js)\n+ //\n+ // The name of the generated asset file containing your JS bundle\n+ // bundleAssetName = \"MyApplication.android.bundle\"\n+ //\n+ // The entry file for bundle generation. Default is 'index.android.js' or 'index.js'\n+ // entryFile = file(\"../js/MyApplication.android.js\")\n+ //\n+ // A list of extra flags to pass to the 'bundle' commands.\n+ // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle\n+ // extraPackagerArgs = []\n+\n+ /* Hermes Commands */\n+ // The hermes compiler command to run. By default it is 'hermesc'\n+ // hermesCommand = \"$rootDir/my-custom-hermesc/bin/hermesc\"\n+ //\n+ // The list of flags to pass to the Hermes compiler. By default is \"-O\", \"-output-source-map\"\n+ // hermesFlags = [\"-O\", \"-output-source-map\"]\n+}\n \n /**\n- * Run Proguard to shrink the Java bytecode in release builds.\n+ * Set this to true to Run Proguard on Release builds to minify the Java bytecode.\n */\n def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInReleaseBuilds') ?: false).toBoolean()\n \n /**\n- * The preferred build flavor of JavaScriptCore.\n+ * The preferred build flavor of JavaScriptCore (JSC)\n *\n * For example, to use the international variant, you can use:\n * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`\n *\n * The international variant includes ICU i18n library and necessary data\n * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that\n- * give correct results when using with locales other than en-US. Note that\n+ * give correct results when using with locales other than en-US. Note that\n * this variant is about 6MiB larger per architecture than default.\n */\n def jscFlavor = 'org.webkit:android-jsc:+'\n \n-/**\n- * Whether to enable the Hermes VM.\n- *\n- * This should be set on project.ext.react and that value will be read here. If it is not set\n- * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode\n- * and the benefits of using Hermes will therefore be sharply reduced.\n- */\n-def enableHermes = project.ext.react.get(\"enableHermes\", false);\n-\n-/**\n- * Architectures to build native code for.\n- */\n-def reactNativeArchitectures() {\n- def value = project.getProperties().get(\"reactNativeArchitectures\")\n- return value ? value.split(\",\") : [\"armeabi-v7a\", \"x86\", \"x86_64\", \"arm64-v8a\"]\n-}\n-\n android {\n ndkVersion rootProject.ext.ndkVersion\n \n compileSdkVersion rootProject.ext.compileSdkVersion\n \n+ namespace \"com.helloworld\"\n defaultConfig {\n applicationId \"com.helloworld\"\n minSdkVersion rootProject.ext.minSdkVersion\n targetSdkVersion rootProject.ext.targetSdkVersion\n versionCode 1\n versionName \"1.0\"\n- buildConfigField \"boolean\", \"IS_NEW_ARCHITECTURE_ENABLED\", isNewArchitectureEnabled().toString()\n-\n- if (isNewArchitectureEnabled()) {\n- // We configure the NDK build only if you decide to opt-in for the New Architecture.\n- externalNativeBuild {\n- ndkBuild {\n- arguments \"APP_PLATFORM=android-21\",\n- \"APP_STL=c++_shared\",\n- \"NDK_TOOLCHAIN_VERSION=clang\",\n- \"GENERATED_SRC_DIR=$buildDir/generated/source\",\n- \"PROJECT_BUILD_DIR=$buildDir\",\n- \"REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid\",\n- \"REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build\"\n- cFlags \"-Wall\", \"-Werror\", \"-fexceptions\", \"-frtti\", \"-DWITH_INSPECTOR=1\"\n- cppFlags \"-std=c++17\"\n- // Make sure this target name is the same you specify inside the\n- // src/main/jni/Android.mk file for the `LOCAL_MODULE` variable.\n- targets \"helloworld_appmodules\"\n-\n- // Fix for windows limit on number of character in file paths and in command lines\n- if (Os.isFamily(Os.FAMILY_WINDOWS)) {\n- arguments \"NDK_APP_SHORT_COMMANDS=true\"\n- }\n- }\n- }\n- if (!enableSeparateBuildPerCPUArchitecture) {\n- ndk {\n- abiFilters (*reactNativeArchitectures())\n- }\n- }\n- }\n- }\n-\n- if (isNewArchitectureEnabled()) {\n- // We configure the NDK build only if you decide to opt-in for the New Architecture.\n- externalNativeBuild {\n- ndkBuild {\n- path \"$projectDir/src/main/jni/Android.mk\"\n- }\n- }\n- def reactAndroidProjectDir = project(':ReactAndroid').projectDir\n- def packageReactNdkDebugLibs = tasks.register(\"packageReactNdkDebugLibs\", Copy) {\n- dependsOn(\":ReactAndroid:packageReactNdkDebugLibsForBuck\")\n- from(\"$reactAndroidProjectDir/src/main/jni/prebuilt/lib\")\n- into(\"$buildDir/react-ndk/exported\")\n- }\n- def packageReactNdkReleaseLibs = tasks.register(\"packageReactNdkReleaseLibs\", Copy) {\n- dependsOn(\":ReactAndroid:packageReactNdkReleaseLibsForBuck\")\n- from(\"$reactAndroidProjectDir/src/main/jni/prebuilt/lib\")\n- into(\"$buildDir/react-ndk/exported\")\n- }\n- afterEvaluate {\n- // If you wish to add a custom TurboModule or component locally,\n- // you should uncomment this line.\n- // preBuild.dependsOn(\"generateCodegenArtifactsFromSchema\")\n- preDebugBuild.dependsOn(packageReactNdkDebugLibs)\n- preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)\n \n- // Due to a bug inside AGP, we have to explicitly set a dependency\n- // between configureNdkBuild* tasks and the preBuild tasks.\n- // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732\n- configureNdkBuildRelease.dependsOn(preReleaseBuild)\n- configureNdkBuildDebug.dependsOn(preDebugBuild)\n- reactNativeArchitectures().each { architecture ->\n- tasks.findByName(\"configureNdkBuildDebug[${architecture}]\")?.configure {\n- dependsOn(\"preDebugBuild\")\n- }\n- tasks.findByName(\"configureNdkBuildRelease[${architecture}]\")?.configure {\n- dependsOn(\"preReleaseBuild\")\n- }\n- }\n- }\n- }\n-\n- splits {\n- abi {\n- reset()\n- enable enableSeparateBuildPerCPUArchitecture\n- universalApk false // If true, also generate a universal APK\n- include (*reactNativeArchitectures())\n- }\n+ buildConfigField(\"boolean\", \"REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS\", (findProperty(\"reactNative.unstable_useRuntimeSchedulerAlways\") ?: true).toString())\n }\n signingConfigs {\n debug {\n@@ -244,25 +107,11 @@ android {\n // Caution! In production, you need to generate your own keystore file.\n // see https://reactnative.dev/docs/signed-apk-android.\n signingConfig signingConfigs.debug\n+ shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false)\n minifyEnabled enableProguardInReleaseBuilds\n proguardFiles getDefaultProguardFile(\"proguard-android.txt\"), \"proguard-rules.pro\"\n }\n }\n-\n- // applicationVariants are e.g. debug, release\n- applicationVariants.all { variant ->\n- variant.outputs.each { output ->\n- // For each separate APK per architecture, set a unique version code as described here:\n- // https://developer.android.com/studio/build/configure-apk-splits.html\n- def versionCodes = [\"armeabi-v7a\": 1, \"x86\": 2, \"arm64-v8a\": 3, \"x86_64\": 4]\n- def abi = output.getFilter(OutputFile.ABI)\n- if (abi != null) { // null for the universal-debug, universal-release variants\n- output.versionCodeOverride =\n- versionCodes.get(abi) * 1048576 + defaultConfig.versionCode\n- }\n-\n- }\n- }\n }\n \n // Apply static values from `gradle.properties` to the `android.packagingOptions`\n@@ -286,10 +135,8 @@ android {\n }\n \n dependencies {\n- implementation fileTree(dir: \"libs\", include: [\"*.jar\"])\n-\n- //noinspection GradleDynamicVersion\n- implementation \"com.facebook.react:react-native:+\" // From node_modules\n+ // The version of react-native is set by the React Native Gradle Plugin\n+ implementation(\"com.facebook.react:react-android\")\n \n def isGifEnabled = (findProperty('expo.gif.enabled') ?: \"\") == \"true\";\n def isWebpEnabled = (findProperty('expo.webp.enabled') ?: \"\") == \"true\";\n@@ -298,70 +145,36 @@ dependencies {\n \n // If your app supports Android versions before Ice Cream Sandwich (API level 14)\n if (isGifEnabled || isWebpEnabled) {\n- implementation \"com.facebook.fresco:fresco:${frescoVersion}\"\n- implementation \"com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:fresco:${frescoVersion}\")\n+ implementation(\"com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}\")\n }\n \n if (isGifEnabled) {\n // For animated gif support\n- implementation \"com.facebook.fresco:animated-gif:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:animated-gif:${frescoVersion}\")\n }\n \n if (isWebpEnabled) {\n // For webp support\n- implementation \"com.facebook.fresco:webpsupport:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:webpsupport:${frescoVersion}\")\n if (isWebpAnimatedEnabled) {\n // Animated webp support\n- implementation \"com.facebook.fresco:animated-webp:${frescoVersion}\"\n+ implementation(\"com.facebook.fresco:animated-webp:${frescoVersion}\")\n }\n }\n \n- implementation \"androidx.swiperefreshlayout:swiperefreshlayout:1.0.0\"\n- debugImplementation(\"com.facebook.flipper:flipper:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.fbjni'\n- }\n+ debugImplementation(\"com.facebook.flipper:flipper:${FLIPPER_VERSION}\")\n debugImplementation(\"com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.flipper'\n exclude group:'com.squareup.okhttp3', module:'okhttp'\n }\n- debugImplementation(\"com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}\") {\n- exclude group:'com.facebook.flipper'\n- }\n+ debugImplementation(\"com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}\")\n \n- if (enableHermes) {\n- debugImplementation files(new File([\"node\", \"--print\", \"require.resolve('hermes-engine/package.json')\"].execute(null, rootDir).text.trim(), \"../android/hermes-debug.aar\"))\n- releaseImplementation files(new File([\"node\", \"--print\", \"require.resolve('hermes-engine/package.json')\"].execute(null, rootDir).text.trim(), \"../android/hermes-release.aar\"))\n+ if (hermesEnabled.toBoolean()) {\n+ implementation(\"com.facebook.react:hermes-android\")\n } else {\n implementation jscFlavor\n }\n }\n \n-if (isNewArchitectureEnabled()) {\n- // If new architecture is enabled, we let you build RN from source\n- // Otherwise we fallback to a prebuilt .aar bundled in the NPM package.\n- // This will be applied to all the imported transtitive dependency.\n- configurations.all {\n- resolutionStrategy.dependencySubstitution {\n- substitute(module(\"com.facebook.react:react-native\"))\n- .using(project(\":ReactAndroid\")).because(\"On New Architecture we're building React Native from source\")\n- }\n- }\n-}\n-\n-// Run this once to be able to run the application with BUCK\n-// puts all compile dependencies into folder libs for BUCK to use\n-task copyDownloadableDepsToLibs(type: Copy) {\n- from configurations.implementation\n- into 'libs'\n-}\n-\n apply from: new File([\"node\", \"--print\", \"require.resolve('@react-native-community/cli-platform-android/package.json')\"].execute(null, rootDir).text.trim(), \"../native_modules.gradle\");\n applyNativeModulesAppBuildGradle(project)\n-\n-def isNewArchitectureEnabled() {\n- // To opt-in for the New Architecture, you can either:\n- // - Set `newArchEnabled` to true inside the `gradle.properties` file\n- // - Invoke gradle with `-newArchEnabled=true`\n- // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`\n- return project.hasProperty(\"newArchEnabled\") && project.newArchEnabled == \"true\"\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/build_defs.bzl b/templates/expo-template-bare-minimum/android/app/build_defs.bzl\ndeleted file mode 100644\nindex fff270f8d1..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/build_defs.bzl\n+++ /dev/null\n@@ -1,19 +0,0 @@\n-\"\"\"Helper definitions to glob .aar and .jar targets\"\"\"\n-\n-def create_aar_targets(aarfiles):\n- for aarfile in aarfiles:\n- name = \"aars__\" + aarfile[aarfile.rindex(\"/\") + 1:aarfile.rindex(\".aar\")]\n- lib_deps.append(\":\" + name)\n- android_prebuilt_aar(\n- name = name,\n- aar = aarfile,\n- )\n-\n-def create_jar_targets(jarfiles):\n- for jarfile in jarfiles:\n- name = \"jars__\" + jarfile[jarfile.rindex(\"/\") + 1:jarfile.rindex(\".jar\")]\n- lib_deps.append(\":\" + name)\n- prebuilt_jar(\n- name = name,\n- binary_jar = jarfile,\n- )\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/debug/AndroidManifest.xml b/templates/expo-template-bare-minimum/android/app/src/debug/AndroidManifest.xml\nindex 99e38fc5f8..3ec2507bab 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/debug/AndroidManifest.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/debug/AndroidManifest.xml\n@@ -3,5 +3,5 @@\n \n \n \n- \n+ \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java b/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\nindex 8cddb11cb2..595dd5831c 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/debug/java/com/helloworld/ReactNativeFlipper.java\n@@ -1,5 +1,5 @@\n /**\n- * Copyright (c) Facebook, Inc. and its affiliates.\n+ * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n *

This source code is licensed under the MIT license found in the LICENSE file in the root\n * directory of this source tree.\n@@ -17,22 +17,27 @@ import com.facebook.flipper.plugins.inspector.DescriptorMapping;\n import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;\n import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;\n import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;\n-import com.facebook.flipper.plugins.react.ReactFlipperPlugin;\n import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;\n+import com.facebook.react.ReactInstanceEventListener;\n import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.bridge.ReactContext;\n import com.facebook.react.modules.network.NetworkingModule;\n import okhttp3.OkHttpClient;\n \n+/**\n+ * Class responsible of loading Flipper inside your React Native application. This is the debug\n+ * flavor of it. Here you can add your own plugins and customize the Flipper setup.\n+ */\n public class ReactNativeFlipper {\n public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {\n if (FlipperUtils.shouldEnableFlipper(context)) {\n final FlipperClient client = AndroidFlipperClient.getInstance(context);\n+\n client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));\n- client.addPlugin(new ReactFlipperPlugin());\n client.addPlugin(new DatabasesFlipperPlugin(context));\n client.addPlugin(new SharedPreferencesFlipperPlugin(context));\n client.addPlugin(CrashReporterPlugin.getInstance());\n+\n NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();\n NetworkingModule.setCustomClientBuilder(\n new NetworkingModule.CustomClientBuilder() {\n@@ -43,12 +48,13 @@ public class ReactNativeFlipper {\n });\n client.addPlugin(networkFlipperPlugin);\n client.start();\n+\n // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized\n // Hence we run if after all native modules have been initialized\n ReactContext reactContext = reactInstanceManager.getCurrentReactContext();\n if (reactContext == null) {\n reactInstanceManager.addReactInstanceEventListener(\n- new ReactInstanceManager.ReactInstanceEventListener() {\n+ new ReactInstanceEventListener() {\n @Override\n public void onReactContextInitialized(ReactContext reactContext) {\n reactInstanceManager.removeReactInstanceEventListener(this);\n@@ -66,4 +72,4 @@ public class ReactNativeFlipper {\n }\n }\n }\n-}\n\\ No newline at end of file\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml b/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\nindex 0cad655b33..34a7ca8314 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n@@ -1,4 +1,4 @@\n-\n+\n \n \n \n@@ -18,7 +18,7 @@\n \n \n \n- \n+ \n \n \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\nindex 576e23db45..176fbf6a2a 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n@@ -5,7 +5,8 @@ import android.os.Bundle;\n \n import com.facebook.react.ReactActivity;\n import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactActivityDelegate;\n \n import expo.modules.ReactActivityDelegateWrapper;\n \n@@ -28,11 +29,18 @@ public class MainActivity extends ReactActivity {\n return \"main\";\n }\n \n+ /**\n+ * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link\n+ * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React\n+ * (aka React 18) with two boolean flags.\n+ */\n @Override\n protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this,\n- new ReactActivityDelegate(this, getMainComponentName())\n- );\n+ return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, new DefaultReactActivityDelegate(\n+ this,\n+ getMainComponentName(),\n+ // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n+ DefaultNewArchitectureEntryPoint.getFabricEnabled()));\n }\n \n /**\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\nindex 7deb688b07..e7f376902d 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n@@ -1,69 +1,76 @@\n package com.helloworld;\n \n import android.app.Application;\n-import android.content.Context;\n import android.content.res.Configuration;\n import androidx.annotation.NonNull;\n \n import com.facebook.react.PackageList;\n import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.ReactNativeHost;\n import com.facebook.react.ReactPackage;\n import com.facebook.react.config.ReactFeatureFlags;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactNativeHost;\n import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n \n import expo.modules.ApplicationLifecycleDispatcher;\n import expo.modules.ReactNativeHostWrapper;\n \n-import java.lang.reflect.InvocationTargetException;\n import java.util.List;\n \n public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n \n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n+ private final ReactNativeHost mReactNativeHost =\n+ new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) {\n+ @Override\n+ public boolean getUseDeveloperSupport() {\n+ return BuildConfig.DEBUG;\n+ }\n \n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n+ @Override\n+ protected List getPackages() {\n+ @SuppressWarnings(\"UnnecessaryLocalVariable\")\n+ List packages = new PackageList(this).getPackages();\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return packages;\n+ }\n \n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n+ @Override\n+ protected String getJSMainModuleName() {\n+ return \".expo/.virtual-metro-entry\";\n+ }\n+\n+ @Override\n+ protected boolean isNewArchEnabled() {\n+ return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n+ }\n+\n+ @Override\n+ protected Boolean isHermesEnabled() {\n+ return BuildConfig.IS_HERMES_ENABLED;\n+ }\n+ });\n \n @Override\n public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n+ return mReactNativeHost;\n }\n \n @Override\n public void onCreate() {\n super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ if (!BuildConfig.REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS) {\n+ ReactFeatureFlags.unstable_useRuntimeSchedulerAlways = false;\n+ }\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ DefaultNewArchitectureEntryPoint.load();\n+ }\n+ if (BuildConfig.DEBUG) {\n+ ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ }\n ApplicationLifecycleDispatcher.onApplicationCreate(this);\n }\n \n@@ -72,35 +79,4 @@ public class MainApplication extends Application implements ReactApplication {\n super.onConfigurationChanged(newConfig);\n ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex f555e36448..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,116 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- new EmptyReactNativeConfig(),\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex 0ae6366756..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,49 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source \n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_futures \\\n- libfolly_json \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 0ac23cc626..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,24 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex 0fa43fa69a..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex dbbdc3d132..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 25f27722d0..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(std::string name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 8f7edffd64..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,61 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..73b37e4d99 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -20,7 +20,7 @@\n android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n \n \n- \n@@ -18,7 +18,7 @@\n \n \n \n- \n+ \n \n \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\nindex 8e13797d9b..176fbf6a2a 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n@@ -5,7 +5,8 @@ import android.os.Bundle;\n \n import com.facebook.react.ReactActivity;\n import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactActivityDelegate;\n \n import expo.modules.ReactActivityDelegateWrapper;\n \n@@ -29,15 +30,17 @@ public class MainActivity extends ReactActivity {\n }\n \n /**\n- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n- * (Paper).\n+ * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link\n+ * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React\n+ * (aka React 18) with two boolean flags.\n */\n @Override\n protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n- new MainActivityDelegate(this, getMainComponentName())\n- );\n+ return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, new DefaultReactActivityDelegate(\n+ this,\n+ getMainComponentName(),\n+ // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n+ DefaultNewArchitectureEntryPoint.getFabricEnabled()));\n }\n \n /**\n@@ -59,25 +62,4 @@ public class MainActivity extends ReactActivity {\n // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n super.invokeDefaultOnBackPressed();\n }\n-\n- public static class MainActivityDelegate extends ReactActivityDelegate {\n- public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n- super(activity, mainComponentName);\n- }\n-\n- @Override\n- protected ReactRootView createRootView() {\n- ReactRootView reactRootView = new ReactRootView(getContext());\n- // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n- reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n- return reactRootView;\n- }\n-\n- @Override\n- protected boolean isConcurrentRootEnabled() {\n- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\nindex 7deb688b07..e7f376902d 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n@@ -1,69 +1,76 @@\n package com.helloworld;\n \n import android.app.Application;\n-import android.content.Context;\n import android.content.res.Configuration;\n import androidx.annotation.NonNull;\n \n import com.facebook.react.PackageList;\n import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.ReactNativeHost;\n import com.facebook.react.ReactPackage;\n import com.facebook.react.config.ReactFeatureFlags;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactNativeHost;\n import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n \n import expo.modules.ApplicationLifecycleDispatcher;\n import expo.modules.ReactNativeHostWrapper;\n \n-import java.lang.reflect.InvocationTargetException;\n import java.util.List;\n \n public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n \n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n+ private final ReactNativeHost mReactNativeHost =\n+ new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) {\n+ @Override\n+ public boolean getUseDeveloperSupport() {\n+ return BuildConfig.DEBUG;\n+ }\n \n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n+ @Override\n+ protected List getPackages() {\n+ @SuppressWarnings(\"UnnecessaryLocalVariable\")\n+ List packages = new PackageList(this).getPackages();\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return packages;\n+ }\n \n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n+ @Override\n+ protected String getJSMainModuleName() {\n+ return \".expo/.virtual-metro-entry\";\n+ }\n+\n+ @Override\n+ protected boolean isNewArchEnabled() {\n+ return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n+ }\n+\n+ @Override\n+ protected Boolean isHermesEnabled() {\n+ return BuildConfig.IS_HERMES_ENABLED;\n+ }\n+ });\n \n @Override\n public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n+ return mReactNativeHost;\n }\n \n @Override\n public void onCreate() {\n super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ if (!BuildConfig.REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS) {\n+ ReactFeatureFlags.unstable_useRuntimeSchedulerAlways = false;\n+ }\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ DefaultNewArchitectureEntryPoint.load();\n+ }\n+ if (BuildConfig.DEBUG) {\n+ ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ }\n ApplicationLifecycleDispatcher.onApplicationCreate(this);\n }\n \n@@ -72,35 +79,4 @@ public class MainApplication extends Application implements ReactApplication {\n super.onConfigurationChanged(newConfig);\n ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex 7665dd923f..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,117 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.fabric.ReactNativeConfig;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- ReactNativeConfig.DEFAULT_CONFIG,\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex cda1391225..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source\n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_runtime \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 0ac23cc626..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,24 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex 0fa43fa69a..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex dbbdc3d132..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 25f27722d0..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(std::string name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 8f7edffd64..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,61 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..73b37e4d99 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -20,7 +20,7 @@\n android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n \n \n- \n@@ -18,7 +18,7 @@\n \n \n \n- \n+ \n \n \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\nindex 8e13797d9b..176fbf6a2a 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n@@ -5,7 +5,8 @@ import android.os.Bundle;\n \n import com.facebook.react.ReactActivity;\n import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactActivityDelegate;\n \n import expo.modules.ReactActivityDelegateWrapper;\n \n@@ -29,15 +30,17 @@ public class MainActivity extends ReactActivity {\n }\n \n /**\n- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n- * (Paper).\n+ * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link\n+ * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React\n+ * (aka React 18) with two boolean flags.\n */\n @Override\n protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n- new MainActivityDelegate(this, getMainComponentName())\n- );\n+ return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, new DefaultReactActivityDelegate(\n+ this,\n+ getMainComponentName(),\n+ // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n+ DefaultNewArchitectureEntryPoint.getFabricEnabled()));\n }\n \n /**\n@@ -59,25 +62,4 @@ public class MainActivity extends ReactActivity {\n // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n super.invokeDefaultOnBackPressed();\n }\n-\n- public static class MainActivityDelegate extends ReactActivityDelegate {\n- public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n- super(activity, mainComponentName);\n- }\n-\n- @Override\n- protected ReactRootView createRootView() {\n- ReactRootView reactRootView = new ReactRootView(getContext());\n- // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n- reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n- return reactRootView;\n- }\n-\n- @Override\n- protected boolean isConcurrentRootEnabled() {\n- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\nindex 7deb688b07..e7f376902d 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n@@ -1,69 +1,76 @@\n package com.helloworld;\n \n import android.app.Application;\n-import android.content.Context;\n import android.content.res.Configuration;\n import androidx.annotation.NonNull;\n \n import com.facebook.react.PackageList;\n import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n import com.facebook.react.ReactNativeHost;\n import com.facebook.react.ReactPackage;\n import com.facebook.react.config.ReactFeatureFlags;\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;\n+import com.facebook.react.defaults.DefaultReactNativeHost;\n import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n \n import expo.modules.ApplicationLifecycleDispatcher;\n import expo.modules.ReactNativeHostWrapper;\n \n-import java.lang.reflect.InvocationTargetException;\n import java.util.List;\n \n public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n \n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n+ private final ReactNativeHost mReactNativeHost =\n+ new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) {\n+ @Override\n+ public boolean getUseDeveloperSupport() {\n+ return BuildConfig.DEBUG;\n+ }\n \n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n+ @Override\n+ protected List getPackages() {\n+ @SuppressWarnings(\"UnnecessaryLocalVariable\")\n+ List packages = new PackageList(this).getPackages();\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return packages;\n+ }\n \n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n+ @Override\n+ protected String getJSMainModuleName() {\n+ return \".expo/.virtual-metro-entry\";\n+ }\n+\n+ @Override\n+ protected boolean isNewArchEnabled() {\n+ return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n+ }\n+\n+ @Override\n+ protected Boolean isHermesEnabled() {\n+ return BuildConfig.IS_HERMES_ENABLED;\n+ }\n+ });\n \n @Override\n public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n+ return mReactNativeHost;\n }\n \n @Override\n public void onCreate() {\n super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ if (!BuildConfig.REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS) {\n+ ReactFeatureFlags.unstable_useRuntimeSchedulerAlways = false;\n+ }\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ DefaultNewArchitectureEntryPoint.load();\n+ }\n+ if (BuildConfig.DEBUG) {\n+ ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n+ }\n ApplicationLifecycleDispatcher.onApplicationCreate(this);\n }\n \n@@ -72,35 +79,4 @@ public class MainApplication extends Application implements ReactApplication {\n super.onConfigurationChanged(newConfig);\n ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n }\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex 7665dd923f..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,117 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.fabric.ReactNativeConfig;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- ReactNativeConfig.DEFAULT_CONFIG,\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt b/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\ndeleted file mode 100644\nindex d2cad3a326..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\n+++ /dev/null\n@@ -1,7 +0,0 @@\n-cmake_minimum_required(VERSION 3.13)\n-\n-# Define the library name here.\n-project(helloworld_appmodules)\n-\n-# This file includes all the necessary to let you build your application with the New Architecture.\n-include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 26162dd872..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string &moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n-\n- // Module providers autolinked by RN CLI\n- auto rncli_module = rncli_ModuleProvider(moduleName, params);\n- if (rncli_module != nullptr) {\n- return rncli_module;\n- }\n-\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex b38ccf53fd..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string &moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex 5fd688c509..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string &name,\n- const std::shared_ptr &jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string &name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- const std::string &name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 9ee38a81f6..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string &name,\n- const std::shared_ptr &jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string &name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(const std::string &name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 54f598a486..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,65 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Autolinked providers registered by RN CLI\n- rncli_registerProviders(providerRegistry);\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..73b37e4d99 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -20,7 +20,7 @@\n android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n \n \n- \n@@ -18,10 +18,10 @@\n \n \n \n- \n+ \n \n \n- \n+ \n \n \n \n@@ -29,4 +29,4 @@\n \n \n \n-\n+\n\\ No newline at end of file\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\ndeleted file mode 100644\nindex 576e23db45..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ /dev/null\n@@ -1,57 +0,0 @@\n-package com.helloworld;\n-\n-import android.os.Build;\n-import android.os.Bundle;\n-\n-import com.facebook.react.ReactActivity;\n-import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n-\n-import expo.modules.ReactActivityDelegateWrapper;\n-\n-public class MainActivity extends ReactActivity {\n- @Override\n- protected void onCreate(Bundle savedInstanceState) {\n- // Set the theme to AppTheme BEFORE onCreate to support \n- // coloring the background, status bar, and navigation bar.\n- // This is required for expo-splash-screen.\n- setTheme(R.style.AppTheme);\n- super.onCreate(null);\n- }\n-\n- /**\n- * Returns the name of the main component registered from JavaScript.\n- * This is used to schedule rendering of the component.\n- */\n- @Override\n- protected String getMainComponentName() {\n- return \"main\";\n- }\n-\n- @Override\n- protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this,\n- new ReactActivityDelegate(this, getMainComponentName())\n- );\n- }\n-\n- /**\n- * Align the back button behavior with Android S\n- * where moving root activities to background instead of finishing activities.\n- * @see onBackPressed\n- */\n- @Override\n- public void invokeDefaultOnBackPressed() {\n- if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n- if (!moveTaskToBack(false)) {\n- // For non-root activities, use the default implementation to finish them.\n- super.invokeDefaultOnBackPressed();\n- }\n- return;\n- }\n-\n- // Use the default back button implementation on Android S\n- // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n- super.invokeDefaultOnBackPressed();\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\nnew file mode 100644\nindex 0000000000..c4467326aa\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\n@@ -0,0 +1,61 @@\n+package com.helloworld\n+\n+import android.os.Build\n+import android.os.Bundle\n+\n+import com.facebook.react.ReactActivity\n+import com.facebook.react.ReactActivityDelegate\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled\n+import com.facebook.react.defaults.DefaultReactActivityDelegate\n+\n+import expo.modules.ReactActivityDelegateWrapper\n+\n+class MainActivity : ReactActivity() {\n+ override fun onCreate(savedInstanceState: Bundle?) {\n+ // Set the theme to AppTheme BEFORE onCreate to support\n+ // coloring the background, status bar, and navigation bar.\n+ // This is required for expo-splash-screen.\n+ setTheme(R.style.AppTheme);\n+ super.onCreate(null)\n+ }\n+\n+ /**\n+ * Returns the name of the main component registered from JavaScript. This is used to schedule\n+ * rendering of the component.\n+ */\n+ override fun getMainComponentName(): String = \"main\"\n+\n+ /**\n+ * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]\n+ * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]\n+ */\n+ override fun createReactActivityDelegate(): ReactActivityDelegate {\n+ return ReactActivityDelegateWrapper(\n+ this,\n+ BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n+ object : DefaultReactActivityDelegate(\n+ this,\n+ mainComponentName,\n+ fabricEnabled\n+ ){})\n+ }\n+\n+ /**\n+ * Align the back button behavior with Android S\n+ * where moving root activities to background instead of finishing activities.\n+ * @see onBackPressed\n+ */\n+ override fun invokeDefaultOnBackPressed() {\n+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n+ if (!moveTaskToBack(false)) {\n+ // For non-root activities, use the default implementation to finish them.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+ return\n+ }\n+\n+ // Use the default back button implementation on Android S\n+ // because it's doing more than [Activity.moveTaskToBack] in fact.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\ndeleted file mode 100644\nindex 7deb688b07..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ /dev/null\n@@ -1,106 +0,0 @@\n-package com.helloworld;\n-\n-import android.app.Application;\n-import android.content.Context;\n-import android.content.res.Configuration;\n-import androidx.annotation.NonNull;\n-\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n-import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n-\n-import expo.modules.ApplicationLifecycleDispatcher;\n-import expo.modules.ReactNativeHostWrapper;\n-\n-import java.lang.reflect.InvocationTargetException;\n-import java.util.List;\n-\n-public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n-\n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n-\n- @Override\n- public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n- }\n-\n- @Override\n- public void onCreate() {\n- super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- ApplicationLifecycleDispatcher.onApplicationCreate(this);\n- }\n-\n- @Override\n- public void onConfigurationChanged(@NonNull Configuration newConfig) {\n- super.onConfigurationChanged(newConfig);\n- ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n- }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\nnew file mode 100644\nindex 0000000000..8258c40ed4\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\n@@ -0,0 +1,65 @@\n+package com.helloworld\n+\n+import android.app.Application\n+import android.content.res.Configuration\n+import androidx.annotation.NonNull\n+\n+import com.facebook.react.PackageList\n+import com.facebook.react.ReactApplication\n+import com.facebook.react.ReactNativeHost\n+import com.facebook.react.ReactPackage\n+import com.facebook.react.ReactHost\n+import com.facebook.react.config.ReactFeatureFlags\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load\n+import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost\n+import com.facebook.react.defaults.DefaultReactNativeHost\n+import com.facebook.react.flipper.ReactNativeFlipper\n+import com.facebook.soloader.SoLoader\n+\n+import expo.modules.ApplicationLifecycleDispatcher\n+import expo.modules.ReactNativeHostWrapper\n+\n+class MainApplication : Application(), ReactApplication {\n+\n+ override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(\n+ this,\n+ object : DefaultReactNativeHost(this) {\n+ override fun getPackages(): List {\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return PackageList(this).packages\n+ }\n+\n+ override fun getJSMainModuleName(): String = \".expo/.virtual-metro-entry\"\n+\n+ override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG\n+\n+ override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED\n+ override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED\n+ }\n+ )\n+\n+ override val reactHost: ReactHost\n+ get() = getDefaultReactHost(this.applicationContext, reactNativeHost)\n+\n+ override fun onCreate() {\n+ super.onCreate()\n+ SoLoader.init(this, false)\n+ if (!BuildConfig.REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS) {\n+ ReactFeatureFlags.unstable_useRuntimeSchedulerAlways = false\n+ }\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ load()\n+ }\n+ if (BuildConfig.DEBUG) {\n+ ReactNativeFlipper.initializeFlipper(this, reactNativeHost.reactInstanceManager)\n+ }\n+ ApplicationLifecycleDispatcher.onApplicationCreate(this)\n+ }\n+\n+ override fun onConfigurationChanged(newConfig: Configuration) {\n+ super.onConfigurationChanged(newConfig)\n+ ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig)\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex f555e36448..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,116 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- new EmptyReactNativeConfig(),\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex 0ae6366756..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,49 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source \n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_futures \\\n- libfolly_json \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 0ac23cc626..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,24 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex 0fa43fa69a..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex dbbdc3d132..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 25f27722d0..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(std::string name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 8f7edffd64..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,61 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..73b37e4d99 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -20,7 +20,7 @@\n android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n \n \n- \n@@ -18,10 +18,10 @@\n \n \n \n- \n+ \n \n \n- \n+ \n \n \n \n@@ -29,4 +29,4 @@\n \n \n \n-\n+\n\\ No newline at end of file\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\ndeleted file mode 100644\nindex 8e13797d9b..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ /dev/null\n@@ -1,83 +0,0 @@\n-package com.helloworld;\n-\n-import android.os.Build;\n-import android.os.Bundle;\n-\n-import com.facebook.react.ReactActivity;\n-import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n-\n-import expo.modules.ReactActivityDelegateWrapper;\n-\n-public class MainActivity extends ReactActivity {\n- @Override\n- protected void onCreate(Bundle savedInstanceState) {\n- // Set the theme to AppTheme BEFORE onCreate to support \n- // coloring the background, status bar, and navigation bar.\n- // This is required for expo-splash-screen.\n- setTheme(R.style.AppTheme);\n- super.onCreate(null);\n- }\n-\n- /**\n- * Returns the name of the main component registered from JavaScript.\n- * This is used to schedule rendering of the component.\n- */\n- @Override\n- protected String getMainComponentName() {\n- return \"main\";\n- }\n-\n- /**\n- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n- * (Paper).\n- */\n- @Override\n- protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n- new MainActivityDelegate(this, getMainComponentName())\n- );\n- }\n-\n- /**\n- * Align the back button behavior with Android S\n- * where moving root activities to background instead of finishing activities.\n- * @see onBackPressed\n- */\n- @Override\n- public void invokeDefaultOnBackPressed() {\n- if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n- if (!moveTaskToBack(false)) {\n- // For non-root activities, use the default implementation to finish them.\n- super.invokeDefaultOnBackPressed();\n- }\n- return;\n- }\n-\n- // Use the default back button implementation on Android S\n- // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n- super.invokeDefaultOnBackPressed();\n- }\n-\n- public static class MainActivityDelegate extends ReactActivityDelegate {\n- public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n- super(activity, mainComponentName);\n- }\n-\n- @Override\n- protected ReactRootView createRootView() {\n- ReactRootView reactRootView = new ReactRootView(getContext());\n- // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n- reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n- return reactRootView;\n- }\n-\n- @Override\n- protected boolean isConcurrentRootEnabled() {\n- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\nnew file mode 100644\nindex 0000000000..c4467326aa\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\n@@ -0,0 +1,61 @@\n+package com.helloworld\n+\n+import android.os.Build\n+import android.os.Bundle\n+\n+import com.facebook.react.ReactActivity\n+import com.facebook.react.ReactActivityDelegate\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled\n+import com.facebook.react.defaults.DefaultReactActivityDelegate\n+\n+import expo.modules.ReactActivityDelegateWrapper\n+\n+class MainActivity : ReactActivity() {\n+ override fun onCreate(savedInstanceState: Bundle?) {\n+ // Set the theme to AppTheme BEFORE onCreate to support\n+ // coloring the background, status bar, and navigation bar.\n+ // This is required for expo-splash-screen.\n+ setTheme(R.style.AppTheme);\n+ super.onCreate(null)\n+ }\n+\n+ /**\n+ * Returns the name of the main component registered from JavaScript. This is used to schedule\n+ * rendering of the component.\n+ */\n+ override fun getMainComponentName(): String = \"main\"\n+\n+ /**\n+ * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]\n+ * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]\n+ */\n+ override fun createReactActivityDelegate(): ReactActivityDelegate {\n+ return ReactActivityDelegateWrapper(\n+ this,\n+ BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n+ object : DefaultReactActivityDelegate(\n+ this,\n+ mainComponentName,\n+ fabricEnabled\n+ ){})\n+ }\n+\n+ /**\n+ * Align the back button behavior with Android S\n+ * where moving root activities to background instead of finishing activities.\n+ * @see onBackPressed\n+ */\n+ override fun invokeDefaultOnBackPressed() {\n+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n+ if (!moveTaskToBack(false)) {\n+ // For non-root activities, use the default implementation to finish them.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+ return\n+ }\n+\n+ // Use the default back button implementation on Android S\n+ // because it's doing more than [Activity.moveTaskToBack] in fact.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\ndeleted file mode 100644\nindex 7deb688b07..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ /dev/null\n@@ -1,106 +0,0 @@\n-package com.helloworld;\n-\n-import android.app.Application;\n-import android.content.Context;\n-import android.content.res.Configuration;\n-import androidx.annotation.NonNull;\n-\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n-import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n-\n-import expo.modules.ApplicationLifecycleDispatcher;\n-import expo.modules.ReactNativeHostWrapper;\n-\n-import java.lang.reflect.InvocationTargetException;\n-import java.util.List;\n-\n-public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n-\n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n-\n- @Override\n- public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n- }\n-\n- @Override\n- public void onCreate() {\n- super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- ApplicationLifecycleDispatcher.onApplicationCreate(this);\n- }\n-\n- @Override\n- public void onConfigurationChanged(@NonNull Configuration newConfig) {\n- super.onConfigurationChanged(newConfig);\n- ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n- }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\nnew file mode 100644\nindex 0000000000..8258c40ed4\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\n@@ -0,0 +1,65 @@\n+package com.helloworld\n+\n+import android.app.Application\n+import android.content.res.Configuration\n+import androidx.annotation.NonNull\n+\n+import com.facebook.react.PackageList\n+import com.facebook.react.ReactApplication\n+import com.facebook.react.ReactNativeHost\n+import com.facebook.react.ReactPackage\n+import com.facebook.react.ReactHost\n+import com.facebook.react.config.ReactFeatureFlags\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load\n+import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost\n+import com.facebook.react.defaults.DefaultReactNativeHost\n+import com.facebook.react.flipper.ReactNativeFlipper\n+import com.facebook.soloader.SoLoader\n+\n+import expo.modules.ApplicationLifecycleDispatcher\n+import expo.modules.ReactNativeHostWrapper\n+\n+class MainApplication : Application(), ReactApplication {\n+\n+ override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(\n+ this,\n+ object : DefaultReactNativeHost(this) {\n+ override fun getPackages(): List {\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return PackageList(this).packages\n+ }\n+\n+ override fun getJSMainModuleName(): String = \".expo/.virtual-metro-entry\"\n+\n+ override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG\n+\n+ override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED\n+ override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED\n+ }\n+ )\n+\n+ override val reactHost: ReactHost\n+ get() = getDefaultReactHost(this.applicationContext, reactNativeHost)\n+\n+ override fun onCreate() {\n+ super.onCreate()\n+ SoLoader.init(this, false)\n+ if (!BuildConfig.REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS) {\n+ ReactFeatureFlags.unstable_useRuntimeSchedulerAlways = false\n+ }\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ load()\n+ }\n+ if (BuildConfig.DEBUG) {\n+ ReactNativeFlipper.initializeFlipper(this, reactNativeHost.reactInstanceManager)\n+ }\n+ ApplicationLifecycleDispatcher.onApplicationCreate(this)\n+ }\n+\n+ override fun onConfigurationChanged(newConfig: Configuration) {\n+ super.onConfigurationChanged(newConfig)\n+ ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig)\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex 7665dd923f..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,117 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.fabric.ReactNativeConfig;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- ReactNativeConfig.DEFAULT_CONFIG,\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex cda1391225..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source\n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_runtime \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 0ac23cc626..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,24 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex 0fa43fa69a..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex dbbdc3d132..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 25f27722d0..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(std::string name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 8f7edffd64..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,61 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..73b37e4d99 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -20,7 +20,7 @@\n android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n \n \n- \n@@ -18,10 +18,10 @@\n \n \n \n- \n+ \n \n \n- \n+ \n \n \n \n@@ -29,4 +29,4 @@\n \n \n \n-\n+\n\\ No newline at end of file\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\ndeleted file mode 100644\nindex 8e13797d9b..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ /dev/null\n@@ -1,83 +0,0 @@\n-package com.helloworld;\n-\n-import android.os.Build;\n-import android.os.Bundle;\n-\n-import com.facebook.react.ReactActivity;\n-import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n-\n-import expo.modules.ReactActivityDelegateWrapper;\n-\n-public class MainActivity extends ReactActivity {\n- @Override\n- protected void onCreate(Bundle savedInstanceState) {\n- // Set the theme to AppTheme BEFORE onCreate to support \n- // coloring the background, status bar, and navigation bar.\n- // This is required for expo-splash-screen.\n- setTheme(R.style.AppTheme);\n- super.onCreate(null);\n- }\n-\n- /**\n- * Returns the name of the main component registered from JavaScript.\n- * This is used to schedule rendering of the component.\n- */\n- @Override\n- protected String getMainComponentName() {\n- return \"main\";\n- }\n-\n- /**\n- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n- * (Paper).\n- */\n- @Override\n- protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n- new MainActivityDelegate(this, getMainComponentName())\n- );\n- }\n-\n- /**\n- * Align the back button behavior with Android S\n- * where moving root activities to background instead of finishing activities.\n- * @see onBackPressed\n- */\n- @Override\n- public void invokeDefaultOnBackPressed() {\n- if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n- if (!moveTaskToBack(false)) {\n- // For non-root activities, use the default implementation to finish them.\n- super.invokeDefaultOnBackPressed();\n- }\n- return;\n- }\n-\n- // Use the default back button implementation on Android S\n- // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n- super.invokeDefaultOnBackPressed();\n- }\n-\n- public static class MainActivityDelegate extends ReactActivityDelegate {\n- public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n- super(activity, mainComponentName);\n- }\n-\n- @Override\n- protected ReactRootView createRootView() {\n- ReactRootView reactRootView = new ReactRootView(getContext());\n- // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n- reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n- return reactRootView;\n- }\n-\n- @Override\n- protected boolean isConcurrentRootEnabled() {\n- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\nnew file mode 100644\nindex 0000000000..c4467326aa\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\n@@ -0,0 +1,61 @@\n+package com.helloworld\n+\n+import android.os.Build\n+import android.os.Bundle\n+\n+import com.facebook.react.ReactActivity\n+import com.facebook.react.ReactActivityDelegate\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled\n+import com.facebook.react.defaults.DefaultReactActivityDelegate\n+\n+import expo.modules.ReactActivityDelegateWrapper\n+\n+class MainActivity : ReactActivity() {\n+ override fun onCreate(savedInstanceState: Bundle?) {\n+ // Set the theme to AppTheme BEFORE onCreate to support\n+ // coloring the background, status bar, and navigation bar.\n+ // This is required for expo-splash-screen.\n+ setTheme(R.style.AppTheme);\n+ super.onCreate(null)\n+ }\n+\n+ /**\n+ * Returns the name of the main component registered from JavaScript. This is used to schedule\n+ * rendering of the component.\n+ */\n+ override fun getMainComponentName(): String = \"main\"\n+\n+ /**\n+ * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]\n+ * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]\n+ */\n+ override fun createReactActivityDelegate(): ReactActivityDelegate {\n+ return ReactActivityDelegateWrapper(\n+ this,\n+ BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n+ object : DefaultReactActivityDelegate(\n+ this,\n+ mainComponentName,\n+ fabricEnabled\n+ ){})\n+ }\n+\n+ /**\n+ * Align the back button behavior with Android S\n+ * where moving root activities to background instead of finishing activities.\n+ * @see onBackPressed\n+ */\n+ override fun invokeDefaultOnBackPressed() {\n+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n+ if (!moveTaskToBack(false)) {\n+ // For non-root activities, use the default implementation to finish them.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+ return\n+ }\n+\n+ // Use the default back button implementation on Android S\n+ // because it's doing more than [Activity.moveTaskToBack] in fact.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\ndeleted file mode 100644\nindex 7deb688b07..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ /dev/null\n@@ -1,106 +0,0 @@\n-package com.helloworld;\n-\n-import android.app.Application;\n-import android.content.Context;\n-import android.content.res.Configuration;\n-import androidx.annotation.NonNull;\n-\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n-import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n-\n-import expo.modules.ApplicationLifecycleDispatcher;\n-import expo.modules.ReactNativeHostWrapper;\n-\n-import java.lang.reflect.InvocationTargetException;\n-import java.util.List;\n-\n-public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n-\n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n-\n- @Override\n- public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n- }\n-\n- @Override\n- public void onCreate() {\n- super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- ApplicationLifecycleDispatcher.onApplicationCreate(this);\n- }\n-\n- @Override\n- public void onConfigurationChanged(@NonNull Configuration newConfig) {\n- super.onConfigurationChanged(newConfig);\n- ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n- }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\nnew file mode 100644\nindex 0000000000..8258c40ed4\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\n@@ -0,0 +1,65 @@\n+package com.helloworld\n+\n+import android.app.Application\n+import android.content.res.Configuration\n+import androidx.annotation.NonNull\n+\n+import com.facebook.react.PackageList\n+import com.facebook.react.ReactApplication\n+import com.facebook.react.ReactNativeHost\n+import com.facebook.react.ReactPackage\n+import com.facebook.react.ReactHost\n+import com.facebook.react.config.ReactFeatureFlags\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load\n+import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost\n+import com.facebook.react.defaults.DefaultReactNativeHost\n+import com.facebook.react.flipper.ReactNativeFlipper\n+import com.facebook.soloader.SoLoader\n+\n+import expo.modules.ApplicationLifecycleDispatcher\n+import expo.modules.ReactNativeHostWrapper\n+\n+class MainApplication : Application(), ReactApplication {\n+\n+ override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(\n+ this,\n+ object : DefaultReactNativeHost(this) {\n+ override fun getPackages(): List {\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return PackageList(this).packages\n+ }\n+\n+ override fun getJSMainModuleName(): String = \".expo/.virtual-metro-entry\"\n+\n+ override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG\n+\n+ override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED\n+ override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED\n+ }\n+ )\n+\n+ override val reactHost: ReactHost\n+ get() = getDefaultReactHost(this.applicationContext, reactNativeHost)\n+\n+ override fun onCreate() {\n+ super.onCreate()\n+ SoLoader.init(this, false)\n+ if (!BuildConfig.REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS) {\n+ ReactFeatureFlags.unstable_useRuntimeSchedulerAlways = false\n+ }\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ load()\n+ }\n+ if (BuildConfig.DEBUG) {\n+ ReactNativeFlipper.initializeFlipper(this, reactNativeHost.reactInstanceManager)\n+ }\n+ ApplicationLifecycleDispatcher.onApplicationCreate(this)\n+ }\n+\n+ override fun onConfigurationChanged(newConfig: Configuration) {\n+ super.onConfigurationChanged(newConfig)\n+ ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig)\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex 7665dd923f..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,117 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.fabric.ReactNativeConfig;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- ReactNativeConfig.DEFAULT_CONFIG,\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt b/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\ndeleted file mode 100644\nindex d2cad3a326..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\n+++ /dev/null\n@@ -1,7 +0,0 @@\n-cmake_minimum_required(VERSION 3.13)\n-\n-# Define the library name here.\n-project(helloworld_appmodules)\n-\n-# This file includes all the necessary to let you build your application with the New Architecture.\n-include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 26162dd872..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string &moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n-\n- // Module providers autolinked by RN CLI\n- auto rncli_module = rncli_ModuleProvider(moduleName, params);\n- if (rncli_module != nullptr) {\n- return rncli_module;\n- }\n-\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex b38ccf53fd..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string &moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex 5fd688c509..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string &name,\n- const std::shared_ptr &jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string &name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- const std::string &name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 9ee38a81f6..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string &name,\n- const std::shared_ptr &jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string &name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(const std::string &name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 54f598a486..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,65 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Autolinked providers registered by RN CLI\n- rncli_registerProviders(providerRegistry);\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..73b37e4d99 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -20,7 +20,7 @@\n android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n \n \n- \n@@ -18,10 +18,10 @@\n \n \n \n- \n+ \n \n- \n- \n+ \n+ \n \n \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\ndeleted file mode 100644\nindex 576e23db45..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ /dev/null\n@@ -1,57 +0,0 @@\n-package com.helloworld;\n-\n-import android.os.Build;\n-import android.os.Bundle;\n-\n-import com.facebook.react.ReactActivity;\n-import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n-\n-import expo.modules.ReactActivityDelegateWrapper;\n-\n-public class MainActivity extends ReactActivity {\n- @Override\n- protected void onCreate(Bundle savedInstanceState) {\n- // Set the theme to AppTheme BEFORE onCreate to support \n- // coloring the background, status bar, and navigation bar.\n- // This is required for expo-splash-screen.\n- setTheme(R.style.AppTheme);\n- super.onCreate(null);\n- }\n-\n- /**\n- * Returns the name of the main component registered from JavaScript.\n- * This is used to schedule rendering of the component.\n- */\n- @Override\n- protected String getMainComponentName() {\n- return \"main\";\n- }\n-\n- @Override\n- protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this,\n- new ReactActivityDelegate(this, getMainComponentName())\n- );\n- }\n-\n- /**\n- * Align the back button behavior with Android S\n- * where moving root activities to background instead of finishing activities.\n- * @see onBackPressed\n- */\n- @Override\n- public void invokeDefaultOnBackPressed() {\n- if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n- if (!moveTaskToBack(false)) {\n- // For non-root activities, use the default implementation to finish them.\n- super.invokeDefaultOnBackPressed();\n- }\n- return;\n- }\n-\n- // Use the default back button implementation on Android S\n- // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n- super.invokeDefaultOnBackPressed();\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\nnew file mode 100644\nindex 0000000000..c4467326aa\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\n@@ -0,0 +1,61 @@\n+package com.helloworld\n+\n+import android.os.Build\n+import android.os.Bundle\n+\n+import com.facebook.react.ReactActivity\n+import com.facebook.react.ReactActivityDelegate\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled\n+import com.facebook.react.defaults.DefaultReactActivityDelegate\n+\n+import expo.modules.ReactActivityDelegateWrapper\n+\n+class MainActivity : ReactActivity() {\n+ override fun onCreate(savedInstanceState: Bundle?) {\n+ // Set the theme to AppTheme BEFORE onCreate to support\n+ // coloring the background, status bar, and navigation bar.\n+ // This is required for expo-splash-screen.\n+ setTheme(R.style.AppTheme);\n+ super.onCreate(null)\n+ }\n+\n+ /**\n+ * Returns the name of the main component registered from JavaScript. This is used to schedule\n+ * rendering of the component.\n+ */\n+ override fun getMainComponentName(): String = \"main\"\n+\n+ /**\n+ * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]\n+ * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]\n+ */\n+ override fun createReactActivityDelegate(): ReactActivityDelegate {\n+ return ReactActivityDelegateWrapper(\n+ this,\n+ BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n+ object : DefaultReactActivityDelegate(\n+ this,\n+ mainComponentName,\n+ fabricEnabled\n+ ){})\n+ }\n+\n+ /**\n+ * Align the back button behavior with Android S\n+ * where moving root activities to background instead of finishing activities.\n+ * @see onBackPressed\n+ */\n+ override fun invokeDefaultOnBackPressed() {\n+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n+ if (!moveTaskToBack(false)) {\n+ // For non-root activities, use the default implementation to finish them.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+ return\n+ }\n+\n+ // Use the default back button implementation on Android S\n+ // because it's doing more than [Activity.moveTaskToBack] in fact.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\ndeleted file mode 100644\nindex 7deb688b07..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ /dev/null\n@@ -1,106 +0,0 @@\n-package com.helloworld;\n-\n-import android.app.Application;\n-import android.content.Context;\n-import android.content.res.Configuration;\n-import androidx.annotation.NonNull;\n-\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n-import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n-\n-import expo.modules.ApplicationLifecycleDispatcher;\n-import expo.modules.ReactNativeHostWrapper;\n-\n-import java.lang.reflect.InvocationTargetException;\n-import java.util.List;\n-\n-public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n-\n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n-\n- @Override\n- public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n- }\n-\n- @Override\n- public void onCreate() {\n- super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- ApplicationLifecycleDispatcher.onApplicationCreate(this);\n- }\n-\n- @Override\n- public void onConfigurationChanged(@NonNull Configuration newConfig) {\n- super.onConfigurationChanged(newConfig);\n- ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n- }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\nnew file mode 100644\nindex 0000000000..5f6e05ce07\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\n@@ -0,0 +1,55 @@\n+package com.helloworld\n+\n+import android.app.Application\n+import android.content.res.Configuration\n+\n+import com.facebook.react.PackageList\n+import com.facebook.react.ReactApplication\n+import com.facebook.react.ReactNativeHost\n+import com.facebook.react.ReactPackage\n+import com.facebook.react.ReactHost\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load\n+import com.facebook.react.defaults.DefaultReactNativeHost\n+import com.facebook.soloader.SoLoader\n+\n+import expo.modules.ApplicationLifecycleDispatcher\n+import expo.modules.ReactNativeHostWrapper\n+\n+class MainApplication : Application(), ReactApplication {\n+\n+ override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(\n+ this,\n+ object : DefaultReactNativeHost(this) {\n+ override fun getPackages(): List {\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return PackageList(this).packages\n+ }\n+\n+ override fun getJSMainModuleName(): String = \".expo/.virtual-metro-entry\"\n+\n+ override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG\n+\n+ override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED\n+ override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED\n+ }\n+ )\n+\n+ override val reactHost: ReactHost\n+ get() = ReactNativeHostWrapper.createReactHost(applicationContext, reactNativeHost)\n+\n+ override fun onCreate() {\n+ super.onCreate()\n+ SoLoader.init(this, false)\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ load()\n+ }\n+ ApplicationLifecycleDispatcher.onApplicationCreate(this)\n+ }\n+\n+ override fun onConfigurationChanged(newConfig: Configuration) {\n+ super.onConfigurationChanged(newConfig)\n+ ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig)\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex f555e36448..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,116 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- new EmptyReactNativeConfig(),\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex 0ae6366756..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,49 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source \n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_futures \\\n- libfolly_json \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 0ac23cc626..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,24 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex 0fa43fa69a..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex dbbdc3d132..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 25f27722d0..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(std::string name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 8f7edffd64..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,61 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..5c25e728ea 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -17,10 +17,11 @@\n android:insetLeft=\"@dimen/abc_edit_text_inset_horizontal_material\"\n android:insetRight=\"@dimen/abc_edit_text_inset_horizontal_material\"\n android:insetTop=\"@dimen/abc_edit_text_inset_top_material\"\n- android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n+ android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\"\n+ >\n \n \n- \n@@ -18,10 +18,10 @@\n \n \n \n- \n+ \n \n- \n- \n+ \n+ \n \n \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\ndeleted file mode 100644\nindex 8e13797d9b..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ /dev/null\n@@ -1,83 +0,0 @@\n-package com.helloworld;\n-\n-import android.os.Build;\n-import android.os.Bundle;\n-\n-import com.facebook.react.ReactActivity;\n-import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n-\n-import expo.modules.ReactActivityDelegateWrapper;\n-\n-public class MainActivity extends ReactActivity {\n- @Override\n- protected void onCreate(Bundle savedInstanceState) {\n- // Set the theme to AppTheme BEFORE onCreate to support \n- // coloring the background, status bar, and navigation bar.\n- // This is required for expo-splash-screen.\n- setTheme(R.style.AppTheme);\n- super.onCreate(null);\n- }\n-\n- /**\n- * Returns the name of the main component registered from JavaScript.\n- * This is used to schedule rendering of the component.\n- */\n- @Override\n- protected String getMainComponentName() {\n- return \"main\";\n- }\n-\n- /**\n- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n- * (Paper).\n- */\n- @Override\n- protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n- new MainActivityDelegate(this, getMainComponentName())\n- );\n- }\n-\n- /**\n- * Align the back button behavior with Android S\n- * where moving root activities to background instead of finishing activities.\n- * @see onBackPressed\n- */\n- @Override\n- public void invokeDefaultOnBackPressed() {\n- if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n- if (!moveTaskToBack(false)) {\n- // For non-root activities, use the default implementation to finish them.\n- super.invokeDefaultOnBackPressed();\n- }\n- return;\n- }\n-\n- // Use the default back button implementation on Android S\n- // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n- super.invokeDefaultOnBackPressed();\n- }\n-\n- public static class MainActivityDelegate extends ReactActivityDelegate {\n- public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n- super(activity, mainComponentName);\n- }\n-\n- @Override\n- protected ReactRootView createRootView() {\n- ReactRootView reactRootView = new ReactRootView(getContext());\n- // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n- reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n- return reactRootView;\n- }\n-\n- @Override\n- protected boolean isConcurrentRootEnabled() {\n- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\nnew file mode 100644\nindex 0000000000..c4467326aa\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\n@@ -0,0 +1,61 @@\n+package com.helloworld\n+\n+import android.os.Build\n+import android.os.Bundle\n+\n+import com.facebook.react.ReactActivity\n+import com.facebook.react.ReactActivityDelegate\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled\n+import com.facebook.react.defaults.DefaultReactActivityDelegate\n+\n+import expo.modules.ReactActivityDelegateWrapper\n+\n+class MainActivity : ReactActivity() {\n+ override fun onCreate(savedInstanceState: Bundle?) {\n+ // Set the theme to AppTheme BEFORE onCreate to support\n+ // coloring the background, status bar, and navigation bar.\n+ // This is required for expo-splash-screen.\n+ setTheme(R.style.AppTheme);\n+ super.onCreate(null)\n+ }\n+\n+ /**\n+ * Returns the name of the main component registered from JavaScript. This is used to schedule\n+ * rendering of the component.\n+ */\n+ override fun getMainComponentName(): String = \"main\"\n+\n+ /**\n+ * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]\n+ * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]\n+ */\n+ override fun createReactActivityDelegate(): ReactActivityDelegate {\n+ return ReactActivityDelegateWrapper(\n+ this,\n+ BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n+ object : DefaultReactActivityDelegate(\n+ this,\n+ mainComponentName,\n+ fabricEnabled\n+ ){})\n+ }\n+\n+ /**\n+ * Align the back button behavior with Android S\n+ * where moving root activities to background instead of finishing activities.\n+ * @see onBackPressed\n+ */\n+ override fun invokeDefaultOnBackPressed() {\n+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n+ if (!moveTaskToBack(false)) {\n+ // For non-root activities, use the default implementation to finish them.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+ return\n+ }\n+\n+ // Use the default back button implementation on Android S\n+ // because it's doing more than [Activity.moveTaskToBack] in fact.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\ndeleted file mode 100644\nindex 7deb688b07..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ /dev/null\n@@ -1,106 +0,0 @@\n-package com.helloworld;\n-\n-import android.app.Application;\n-import android.content.Context;\n-import android.content.res.Configuration;\n-import androidx.annotation.NonNull;\n-\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n-import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n-\n-import expo.modules.ApplicationLifecycleDispatcher;\n-import expo.modules.ReactNativeHostWrapper;\n-\n-import java.lang.reflect.InvocationTargetException;\n-import java.util.List;\n-\n-public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n-\n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n-\n- @Override\n- public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n- }\n-\n- @Override\n- public void onCreate() {\n- super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- ApplicationLifecycleDispatcher.onApplicationCreate(this);\n- }\n-\n- @Override\n- public void onConfigurationChanged(@NonNull Configuration newConfig) {\n- super.onConfigurationChanged(newConfig);\n- ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n- }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\nnew file mode 100644\nindex 0000000000..5f6e05ce07\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\n@@ -0,0 +1,55 @@\n+package com.helloworld\n+\n+import android.app.Application\n+import android.content.res.Configuration\n+\n+import com.facebook.react.PackageList\n+import com.facebook.react.ReactApplication\n+import com.facebook.react.ReactNativeHost\n+import com.facebook.react.ReactPackage\n+import com.facebook.react.ReactHost\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load\n+import com.facebook.react.defaults.DefaultReactNativeHost\n+import com.facebook.soloader.SoLoader\n+\n+import expo.modules.ApplicationLifecycleDispatcher\n+import expo.modules.ReactNativeHostWrapper\n+\n+class MainApplication : Application(), ReactApplication {\n+\n+ override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(\n+ this,\n+ object : DefaultReactNativeHost(this) {\n+ override fun getPackages(): List {\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return PackageList(this).packages\n+ }\n+\n+ override fun getJSMainModuleName(): String = \".expo/.virtual-metro-entry\"\n+\n+ override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG\n+\n+ override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED\n+ override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED\n+ }\n+ )\n+\n+ override val reactHost: ReactHost\n+ get() = ReactNativeHostWrapper.createReactHost(applicationContext, reactNativeHost)\n+\n+ override fun onCreate() {\n+ super.onCreate()\n+ SoLoader.init(this, false)\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ load()\n+ }\n+ ApplicationLifecycleDispatcher.onApplicationCreate(this)\n+ }\n+\n+ override fun onConfigurationChanged(newConfig: Configuration) {\n+ super.onConfigurationChanged(newConfig)\n+ ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig)\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex 7665dd923f..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,117 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.fabric.ReactNativeConfig;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- ReactNativeConfig.DEFAULT_CONFIG,\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk b/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\ndeleted file mode 100644\nindex cda1391225..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/Android.mk\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-THIS_DIR := $(call my-dir)\n-\n-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to include the following autogenerated makefile.\n-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk\n-include $(CLEAR_VARS)\n-\n-LOCAL_PATH := $(THIS_DIR)\n-\n-# You can customize the name of your application .so file here.\n-LOCAL_MODULE := helloworld_appmodules\n-\n-LOCAL_C_INCLUDES := $(LOCAL_PATH)\n-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)\n-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)\n-\n-# If you wish to add a custom TurboModule or Fabric component in your app you\n-# will have to uncomment those lines to include the generated source\n-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)\n-#\n-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)\n-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni\n-\n-# Here you should add any native library you wish to depend on.\n-LOCAL_SHARED_LIBRARIES := \\\n- libfabricjni \\\n- libfbjni \\\n- libfolly_runtime \\\n- libglog \\\n- libjsi \\\n- libreact_codegen_rncore \\\n- libreact_debug \\\n- libreact_nativemodule_core \\\n- libreact_render_componentregistry \\\n- libreact_render_core \\\n- libreact_render_debug \\\n- libreact_render_graphics \\\n- librrc_view \\\n- libruntimeexecutor \\\n- libturbomodulejsijni \\\n- libyoga\n-\n-LOCAL_CFLAGS := -DLOG_TAG=\\\"ReactNative\\\" -fexceptions -frtti -std=c++17 -Wall\n-\n-include $(BUILD_SHARED_LIBRARY)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 0ac23cc626..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,24 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex 0fa43fa69a..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex dbbdc3d132..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- std::string name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 25f27722d0..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const std::shared_ptr jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(std::string name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 8f7edffd64..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,61 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..5c25e728ea 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -17,10 +17,11 @@\n android:insetLeft=\"@dimen/abc_edit_text_inset_horizontal_material\"\n android:insetRight=\"@dimen/abc_edit_text_inset_horizontal_material\"\n android:insetTop=\"@dimen/abc_edit_text_inset_top_material\"\n- android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n+ android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\"\n+ >\n \n \n- \n@@ -18,10 +18,10 @@\n \n \n \n- \n+ \n \n- \n- \n+ \n+ \n \n \n \ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\ndeleted file mode 100644\nindex 8e13797d9b..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.java\n+++ /dev/null\n@@ -1,83 +0,0 @@\n-package com.helloworld;\n-\n-import android.os.Build;\n-import android.os.Bundle;\n-\n-import com.facebook.react.ReactActivity;\n-import com.facebook.react.ReactActivityDelegate;\n-import com.facebook.react.ReactRootView;\n-\n-import expo.modules.ReactActivityDelegateWrapper;\n-\n-public class MainActivity extends ReactActivity {\n- @Override\n- protected void onCreate(Bundle savedInstanceState) {\n- // Set the theme to AppTheme BEFORE onCreate to support \n- // coloring the background, status bar, and navigation bar.\n- // This is required for expo-splash-screen.\n- setTheme(R.style.AppTheme);\n- super.onCreate(null);\n- }\n-\n- /**\n- * Returns the name of the main component registered from JavaScript.\n- * This is used to schedule rendering of the component.\n- */\n- @Override\n- protected String getMainComponentName() {\n- return \"main\";\n- }\n-\n- /**\n- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and\n- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer\n- * (Paper).\n- */\n- @Override\n- protected ReactActivityDelegate createReactActivityDelegate() {\n- return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n- new MainActivityDelegate(this, getMainComponentName())\n- );\n- }\n-\n- /**\n- * Align the back button behavior with Android S\n- * where moving root activities to background instead of finishing activities.\n- * @see onBackPressed\n- */\n- @Override\n- public void invokeDefaultOnBackPressed() {\n- if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n- if (!moveTaskToBack(false)) {\n- // For non-root activities, use the default implementation to finish them.\n- super.invokeDefaultOnBackPressed();\n- }\n- return;\n- }\n-\n- // Use the default back button implementation on Android S\n- // because it's doing more than {@link Activity#moveTaskToBack} in fact.\n- super.invokeDefaultOnBackPressed();\n- }\n-\n- public static class MainActivityDelegate extends ReactActivityDelegate {\n- public MainActivityDelegate(ReactActivity activity, String mainComponentName) {\n- super(activity, mainComponentName);\n- }\n-\n- @Override\n- protected ReactRootView createRootView() {\n- ReactRootView reactRootView = new ReactRootView(getContext());\n- // If you opted-in for the New Architecture, we enable the Fabric Renderer.\n- reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);\n- return reactRootView;\n- }\n-\n- @Override\n- protected boolean isConcurrentRootEnabled() {\n- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).\n- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html\n- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\nnew file mode 100644\nindex 0000000000..c4467326aa\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainActivity.kt\n@@ -0,0 +1,61 @@\n+package com.helloworld\n+\n+import android.os.Build\n+import android.os.Bundle\n+\n+import com.facebook.react.ReactActivity\n+import com.facebook.react.ReactActivityDelegate\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled\n+import com.facebook.react.defaults.DefaultReactActivityDelegate\n+\n+import expo.modules.ReactActivityDelegateWrapper\n+\n+class MainActivity : ReactActivity() {\n+ override fun onCreate(savedInstanceState: Bundle?) {\n+ // Set the theme to AppTheme BEFORE onCreate to support\n+ // coloring the background, status bar, and navigation bar.\n+ // This is required for expo-splash-screen.\n+ setTheme(R.style.AppTheme);\n+ super.onCreate(null)\n+ }\n+\n+ /**\n+ * Returns the name of the main component registered from JavaScript. This is used to schedule\n+ * rendering of the component.\n+ */\n+ override fun getMainComponentName(): String = \"main\"\n+\n+ /**\n+ * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]\n+ * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]\n+ */\n+ override fun createReactActivityDelegate(): ReactActivityDelegate {\n+ return ReactActivityDelegateWrapper(\n+ this,\n+ BuildConfig.IS_NEW_ARCHITECTURE_ENABLED,\n+ object : DefaultReactActivityDelegate(\n+ this,\n+ mainComponentName,\n+ fabricEnabled\n+ ){})\n+ }\n+\n+ /**\n+ * Align the back button behavior with Android S\n+ * where moving root activities to background instead of finishing activities.\n+ * @see onBackPressed\n+ */\n+ override fun invokeDefaultOnBackPressed() {\n+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {\n+ if (!moveTaskToBack(false)) {\n+ // For non-root activities, use the default implementation to finish them.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+ return\n+ }\n+\n+ // Use the default back button implementation on Android S\n+ // because it's doing more than [Activity.moveTaskToBack] in fact.\n+ super.invokeDefaultOnBackPressed()\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\ndeleted file mode 100644\nindex 7deb688b07..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.java\n+++ /dev/null\n@@ -1,106 +0,0 @@\n-package com.helloworld;\n-\n-import android.app.Application;\n-import android.content.Context;\n-import android.content.res.Configuration;\n-import androidx.annotation.NonNull;\n-\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactApplication;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.config.ReactFeatureFlags;\n-import com.facebook.soloader.SoLoader;\n-import com.helloworld.newarchitecture.MainApplicationReactNativeHost;\n-\n-import expo.modules.ApplicationLifecycleDispatcher;\n-import expo.modules.ReactNativeHostWrapper;\n-\n-import java.lang.reflect.InvocationTargetException;\n-import java.util.List;\n-\n-public class MainApplication extends Application implements ReactApplication {\n- private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(\n- this,\n- new ReactNativeHost(this) {\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- @SuppressWarnings(\"UnnecessaryLocalVariable\")\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n- });\n-\n- private final ReactNativeHost mNewArchitectureNativeHost =\n- new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));\n-\n- @Override\n- public ReactNativeHost getReactNativeHost() {\n- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n- return mNewArchitectureNativeHost;\n- } else {\n- return mReactNativeHost;\n- }\n- }\n-\n- @Override\n- public void onCreate() {\n- super.onCreate();\n- // If you opted-in for the New Architecture, we enable the TurboModule system\n- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;\n- SoLoader.init(this, /* native exopackage */ false);\n-\n- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- ApplicationLifecycleDispatcher.onApplicationCreate(this);\n- }\n-\n- @Override\n- public void onConfigurationChanged(@NonNull Configuration newConfig) {\n- super.onConfigurationChanged(newConfig);\n- ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);\n- }\n-\n- /**\n- * Loads Flipper in React Native templates. Call this in the onCreate method with something like\n- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());\n- *\n- * @param context\n- * @param reactInstanceManager\n- */\n- private static void initializeFlipper(\n- Context context, ReactInstanceManager reactInstanceManager) {\n- if (BuildConfig.DEBUG) {\n- try {\n- /*\n- We use reflection here to pick up the class that initializes Flipper,\n- since Flipper library is not available in release mode\n- */\n- Class aClass = Class.forName(\"com.helloworld.ReactNativeFlipper\");\n- aClass\n- .getMethod(\"initializeFlipper\", Context.class, ReactInstanceManager.class)\n- .invoke(null, context, reactInstanceManager);\n- } catch (ClassNotFoundException e) {\n- e.printStackTrace();\n- } catch (NoSuchMethodException e) {\n- e.printStackTrace();\n- } catch (IllegalAccessException e) {\n- e.printStackTrace();\n- } catch (InvocationTargetException e) {\n- e.printStackTrace();\n- }\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\nnew file mode 100644\nindex 0000000000..5f6e05ce07\n--- /dev/null\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/MainApplication.kt\n@@ -0,0 +1,55 @@\n+package com.helloworld\n+\n+import android.app.Application\n+import android.content.res.Configuration\n+\n+import com.facebook.react.PackageList\n+import com.facebook.react.ReactApplication\n+import com.facebook.react.ReactNativeHost\n+import com.facebook.react.ReactPackage\n+import com.facebook.react.ReactHost\n+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load\n+import com.facebook.react.defaults.DefaultReactNativeHost\n+import com.facebook.soloader.SoLoader\n+\n+import expo.modules.ApplicationLifecycleDispatcher\n+import expo.modules.ReactNativeHostWrapper\n+\n+class MainApplication : Application(), ReactApplication {\n+\n+ override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper(\n+ this,\n+ object : DefaultReactNativeHost(this) {\n+ override fun getPackages(): List {\n+ // Packages that cannot be autolinked yet can be added manually here, for example:\n+ // packages.add(new MyReactNativePackage());\n+ return PackageList(this).packages\n+ }\n+\n+ override fun getJSMainModuleName(): String = \".expo/.virtual-metro-entry\"\n+\n+ override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG\n+\n+ override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED\n+ override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED\n+ }\n+ )\n+\n+ override val reactHost: ReactHost\n+ get() = ReactNativeHostWrapper.createReactHost(applicationContext, reactNativeHost)\n+\n+ override fun onCreate() {\n+ super.onCreate()\n+ SoLoader.init(this, false)\n+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {\n+ // If you opted-in for the New Architecture, we load the native entry point for this app.\n+ load()\n+ }\n+ ApplicationLifecycleDispatcher.onApplicationCreate(this)\n+ }\n+\n+ override fun onConfigurationChanged(newConfig: Configuration) {\n+ super.onConfigurationChanged(newConfig)\n+ ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig)\n+ }\n+}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\ndeleted file mode 100644\nindex 7665dd923f..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/MainApplicationReactNativeHost.java\n+++ /dev/null\n@@ -1,117 +0,0 @@\n-package com.helloworld.newarchitecture;\n-\n-import android.app.Application;\n-import androidx.annotation.NonNull;\n-import com.facebook.react.PackageList;\n-import com.facebook.react.ReactInstanceManager;\n-import com.facebook.react.ReactNativeHost;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.JSIModulePackage;\n-import com.facebook.react.bridge.JSIModuleProvider;\n-import com.facebook.react.bridge.JSIModuleSpec;\n-import com.facebook.react.bridge.JSIModuleType;\n-import com.facebook.react.bridge.JavaScriptContextHolder;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.react.bridge.UIManager;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.react.fabric.CoreComponentsRegistry;\n-import com.facebook.react.fabric.EmptyReactNativeConfig;\n-import com.facebook.react.fabric.FabricJSIModuleProvider;\n-import com.facebook.react.fabric.ReactNativeConfig;\n-import com.facebook.react.uimanager.ViewManagerRegistry;\n-import com.helloworld.BuildConfig;\n-import com.helloworld.newarchitecture.components.MainComponentsRegistry;\n-import com.helloworld.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both\n- * TurboModule delegates and the Fabric Renderer.\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationReactNativeHost extends ReactNativeHost {\n- public MainApplicationReactNativeHost(Application application) {\n- super(application);\n- }\n-\n- @Override\n- public boolean getUseDeveloperSupport() {\n- return BuildConfig.DEBUG;\n- }\n-\n- @Override\n- protected List getPackages() {\n- List packages = new PackageList(this).getPackages();\n- // Packages that cannot be autolinked yet can be added manually here, for example:\n- // packages.add(new MyReactNativePackage());\n- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:\n- // packages.add(new TurboReactPackage() { ... });\n- // If you have custom Fabric Components, their ViewManagers should also be loaded here\n- // inside a ReactPackage.\n- return packages;\n- }\n-\n- @Override\n- protected String getJSMainModuleName() {\n- return \"index\";\n- }\n-\n- @NonNull\n- @Override\n- protected ReactPackageTurboModuleManagerDelegate.Builder\n- getReactPackageTurboModuleManagerDelegateBuilder() {\n- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary\n- // for the new architecture and to use TurboModules correctly.\n- return new MainApplicationTurboModuleManagerDelegate.Builder();\n- }\n-\n- @Override\n- protected JSIModulePackage getJSIModulePackage() {\n- return new JSIModulePackage() {\n- @Override\n- public List getJSIModules(\n- final ReactApplicationContext reactApplicationContext,\n- final JavaScriptContextHolder jsContext) {\n- final List specs = new ArrayList<>();\n-\n- // Here we provide a new JSIModuleSpec that will be responsible of providing the\n- // custom Fabric Components.\n- specs.add(\n- new JSIModuleSpec() {\n- @Override\n- public JSIModuleType getJSIModuleType() {\n- return JSIModuleType.UIManager;\n- }\n-\n- @Override\n- public JSIModuleProvider getJSIModuleProvider() {\n- final ComponentFactory componentFactory = new ComponentFactory();\n- CoreComponentsRegistry.register(componentFactory);\n-\n- // Here we register a Components Registry.\n- // The one that is generated with the template contains no components\n- // and just provides you the one from React Native core.\n- MainComponentsRegistry.register(componentFactory);\n-\n- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();\n-\n- ViewManagerRegistry viewManagerRegistry =\n- new ViewManagerRegistry(\n- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));\n-\n- return new FabricJSIModuleProvider(\n- reactApplicationContext,\n- componentFactory,\n- ReactNativeConfig.DEFAULT_CONFIG,\n- viewManagerRegistry);\n- }\n- });\n- return specs;\n- }\n- };\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\ndeleted file mode 100644\nindex c74d0ccadb..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/components/MainComponentsRegistry.java\n+++ /dev/null\n@@ -1,36 +0,0 @@\n-package com.helloworld.newarchitecture.components;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.proguard.annotations.DoNotStrip;\n-import com.facebook.react.fabric.ComponentFactory;\n-import com.facebook.soloader.SoLoader;\n-\n-/**\n- * Class responsible to load the custom Fabric Components. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-@DoNotStrip\n-public class MainComponentsRegistry {\n- static {\n- SoLoader.loadLibrary(\"fabricjni\");\n- }\n-\n- @DoNotStrip private final HybridData mHybridData;\n-\n- @DoNotStrip\n- private native HybridData initHybrid(ComponentFactory componentFactory);\n-\n- @DoNotStrip\n- private MainComponentsRegistry(ComponentFactory componentFactory) {\n- mHybridData = initHybrid(componentFactory);\n- }\n-\n- @DoNotStrip\n- public static MainComponentsRegistry register(ComponentFactory componentFactory) {\n- return new MainComponentsRegistry(componentFactory);\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\ndeleted file mode 100644\nindex 8593b3bb85..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/java/com/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java\n+++ /dev/null\n@@ -1,48 +0,0 @@\n-package com.helloworld.newarchitecture.modules;\n-\n-import com.facebook.jni.HybridData;\n-import com.facebook.react.ReactPackage;\n-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;\n-import com.facebook.react.bridge.ReactApplicationContext;\n-import com.facebook.soloader.SoLoader;\n-import java.util.List;\n-\n-/**\n- * Class responsible to load the TurboModules. This class has native methods and needs a\n- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/\n- * folder for you).\n- *\n- *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the\n- * `newArchEnabled` property). Is ignored otherwise.\n- */\n-public class MainApplicationTurboModuleManagerDelegate\n- extends ReactPackageTurboModuleManagerDelegate {\n-\n- private static volatile boolean sIsSoLibraryLoaded;\n-\n- protected MainApplicationTurboModuleManagerDelegate(\n- ReactApplicationContext reactApplicationContext, List packages) {\n- super(reactApplicationContext, packages);\n- }\n-\n- protected native HybridData initHybrid();\n-\n- native boolean canCreateTurboModule(String moduleName);\n-\n- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {\n- protected MainApplicationTurboModuleManagerDelegate build(\n- ReactApplicationContext context, List packages) {\n- return new MainApplicationTurboModuleManagerDelegate(context, packages);\n- }\n- }\n-\n- @Override\n- protected synchronized void maybeLoadOtherSoLibraries() {\n- if (!sIsSoLibraryLoaded) {\n- // If you change the name of your application .so file in the Android.mk file,\n- // make sure you update the name here as well.\n- SoLoader.loadLibrary(\"helloworld_appmodules\");\n- sIsSoLibraryLoaded = true;\n- }\n- }\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt b/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\ndeleted file mode 100644\nindex d2cad3a326..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/CMakeLists.txt\n+++ /dev/null\n@@ -1,7 +0,0 @@\n-cmake_minimum_required(VERSION 3.13)\n-\n-# Define the library name here.\n-project(helloworld_appmodules)\n-\n-# This file includes all the necessary to let you build your application with the New Architecture.\n-include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake)\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\ndeleted file mode 100644\nindex 26162dd872..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.cpp\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#include \"MainApplicationModuleProvider.h\"\n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string &moduleName,\n- const JavaTurboModule::InitParams ¶ms) {\n- // Here you can provide your own module provider for TurboModules coming from\n- // either your application or from external libraries. The approach to follow\n- // is similar to the following (for a library called `samplelibrary`:\n- //\n- // auto module = samplelibrary_ModuleProvider(moduleName, params);\n- // if (module != nullptr) {\n- // return module;\n- // }\n- // return rncore_ModuleProvider(moduleName, params);\n-\n- // Module providers autolinked by RN CLI\n- auto rncli_module = rncli_ModuleProvider(moduleName, params);\n- if (rncli_module != nullptr) {\n- return rncli_module;\n- }\n-\n- return rncore_ModuleProvider(moduleName, params);\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\ndeleted file mode 100644\nindex b38ccf53fd..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationModuleProvider.h\n+++ /dev/null\n@@ -1,16 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-\n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-std::shared_ptr MainApplicationModuleProvider(\n- const std::string &moduleName,\n- const JavaTurboModule::InitParams ¶ms);\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\ndeleted file mode 100644\nindex 5fd688c509..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp\n+++ /dev/null\n@@ -1,45 +0,0 @@\n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainApplicationModuleProvider.h\"\n-\n-namespace facebook {\n-namespace react {\n-\n-jni::local_ref\n-MainApplicationTurboModuleManagerDelegate::initHybrid(\n- jni::alias_ref) {\n- return makeCxxInstance();\n-}\n-\n-void MainApplicationTurboModuleManagerDelegate::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\n- \"initHybrid\", MainApplicationTurboModuleManagerDelegate::initHybrid),\n- makeNativeMethod(\n- \"canCreateTurboModule\",\n- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),\n- });\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string &name,\n- const std::shared_ptr &jsInvoker) {\n- // Not implemented yet: provide pure-C++ NativeModules here.\n- return nullptr;\n-}\n-\n-std::shared_ptr\n-MainApplicationTurboModuleManagerDelegate::getTurboModule(\n- const std::string &name,\n- const JavaTurboModule::InitParams ¶ms) {\n- return MainApplicationModuleProvider(name, params);\n-}\n-\n-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(\n- const std::string &name) {\n- return getTurboModule(name, nullptr) != nullptr ||\n- getTurboModule(name, {.moduleName = name}) != nullptr;\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\ndeleted file mode 100644\nindex 9ee38a81f6..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h\n+++ /dev/null\n@@ -1,38 +0,0 @@\n-#include \n-#include \n-\n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainApplicationTurboModuleManagerDelegate\n- : public jni::HybridClass<\n- MainApplicationTurboModuleManagerDelegate,\n- TurboModuleManagerDelegate> {\n- public:\n- // Adapt it to the package you used for your Java class.\n- static constexpr auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;\";\n-\n- static jni::local_ref initHybrid(jni::alias_ref);\n-\n- static void registerNatives();\n-\n- std::shared_ptr getTurboModule(\n- const std::string &name,\n- const std::shared_ptr &jsInvoker) override;\n- std::shared_ptr getTurboModule(\n- const std::string &name,\n- const JavaTurboModule::InitParams ¶ms) override;\n-\n- /**\n- * Test-only method. Allows user to verify whether a TurboModule can be\n- * created by instances of this class.\n- */\n- bool canCreateTurboModule(const std::string &name);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\ndeleted file mode 100644\nindex 54f598a486..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.cpp\n+++ /dev/null\n@@ -1,65 +0,0 @@\n-#include \"MainComponentsRegistry.h\"\n-\n-#include \n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}\n-\n-std::shared_ptr\n-MainComponentsRegistry::sharedProviderRegistry() {\n- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();\n-\n- // Autolinked providers registered by RN CLI\n- rncli_registerProviders(providerRegistry);\n-\n- // Custom Fabric Components go here. You can register custom\n- // components coming from your App or from 3rd party libraries here.\n- //\n- // providerRegistry->add(concreteComponentDescriptorProvider<\n- // AocViewerComponentDescriptor>());\n- return providerRegistry;\n-}\n-\n-jni::local_ref\n-MainComponentsRegistry::initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate) {\n- auto instance = makeCxxInstance(delegate);\n-\n- auto buildRegistryFunction =\n- [](EventDispatcher::Weak const &eventDispatcher,\n- ContextContainer::Shared const &contextContainer)\n- -> ComponentDescriptorRegistry::Shared {\n- auto registry = MainComponentsRegistry::sharedProviderRegistry()\n- ->createComponentDescriptorRegistry(\n- {eventDispatcher, contextContainer});\n-\n- auto mutableRegistry =\n- std::const_pointer_cast(registry);\n-\n- mutableRegistry->setFallbackComponentDescriptor(\n- std::make_shared(\n- ComponentDescriptorParameters{\n- eventDispatcher, contextContainer, nullptr}));\n-\n- return registry;\n- };\n-\n- delegate->buildRegistryFunction = buildRegistryFunction;\n- return instance;\n-}\n-\n-void MainComponentsRegistry::registerNatives() {\n- registerHybrid({\n- makeNativeMethod(\"initHybrid\", MainComponentsRegistry::initHybrid),\n- });\n-}\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h b/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\ndeleted file mode 100644\nindex d61cbffaae..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/MainComponentsRegistry.h\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-#pragma once\n-\n-#include \n-#include \n-#include \n-#include \n-\n-namespace facebook {\n-namespace react {\n-\n-class MainComponentsRegistry\n- : public facebook::jni::HybridClass {\n- public:\n- // Adapt it to the package you used for your Java class.\n- constexpr static auto kJavaDescriptor =\n- \"Lcom/helloworld/newarchitecture/components/MainComponentsRegistry;\";\n-\n- static void registerNatives();\n-\n- MainComponentsRegistry(ComponentFactory *delegate);\n-\n- private:\n- static std::shared_ptr\n- sharedProviderRegistry();\n-\n- static jni::local_ref initHybrid(\n- jni::alias_ref,\n- ComponentFactory *delegate);\n-};\n-\n-} // namespace react\n-} // namespace facebook\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp b/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\ndeleted file mode 100644\nindex c569b6e865..0000000000\n--- a/templates/expo-template-bare-minimum/android/app/src/main/jni/OnLoad.cpp\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-#include \n-#include \"MainApplicationTurboModuleManagerDelegate.h\"\n-#include \"MainComponentsRegistry.h\"\n-\n-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {\n- return facebook::jni::initialize(vm, [] {\n- facebook::react::MainApplicationTurboModuleManagerDelegate::\n- registerNatives();\n- facebook::react::MainComponentsRegistry::registerNatives();\n- });\n-}\ndiff --git a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\nindex f35d996202..5c25e728ea 100644\n--- a/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n+++ b/templates/expo-template-bare-minimum/android/app/src/main/res/drawable/rn_edit_text_material.xml\n@@ -17,10 +17,11 @@\n android:insetLeft=\"@dimen/abc_edit_text_inset_horizontal_material\"\n android:insetRight=\"@dimen/abc_edit_text_inset_horizontal_material\"\n android:insetTop=\"@dimen/abc_edit_text_inset_top_material\"\n- android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\">\n+ android:insetBottom=\"@dimen/abc_edit_text_inset_bottom_material\"\n+ >\n \n \n-