From 7cae42395cf1683894345dbe83ef1a33307fb614 Mon Sep 17 00:00:00 2001 From: Tommy Nguyen <4123478+tido64@users.noreply.github.com> Date: Thu, 23 Apr 2026 10:52:11 +0200 Subject: [PATCH] fix(android): handle `ReactRootView` deprecation in 0.86 --- packages/app/android/app/build.gradle | 4 ++ .../ComponentBottomSheetDialogFragment.kt | 52 +++++++++++++++++++ .../ComponentBottomSheetDialogFragment.kt | 0 packages/app/test/pack.test.mts | 3 +- 4 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 packages/app/android/app/src/reactsurface-0.82/java/com/microsoft/reacttestapp/component/ComponentBottomSheetDialogFragment.kt rename packages/app/android/app/src/{main => reactsurface-old}/java/com/microsoft/reacttestapp/component/ComponentBottomSheetDialogFragment.kt (100%) diff --git a/packages/app/android/app/build.gradle b/packages/app/android/app/build.gradle index 1ab8e0c19..719adf3c8 100644 --- a/packages/app/android/app/build.gradle +++ b/packages/app/android/app/build.gradle @@ -188,6 +188,10 @@ android { "src/reactactivitydelegate-0.75/java", "src/reactapplication-0.76/java", "src/reacthost-0.76/java", + + reactNativeVersion >= v(0, 82, 0) + ? "src/reactsurface-0.82/java" + : "src/reactsurface-old/java" ] } diff --git a/packages/app/android/app/src/reactsurface-0.82/java/com/microsoft/reacttestapp/component/ComponentBottomSheetDialogFragment.kt b/packages/app/android/app/src/reactsurface-0.82/java/com/microsoft/reacttestapp/component/ComponentBottomSheetDialogFragment.kt new file mode 100644 index 000000000..2c03ec864 --- /dev/null +++ b/packages/app/android/app/src/reactsurface-0.82/java/com/microsoft/reacttestapp/component/ComponentBottomSheetDialogFragment.kt @@ -0,0 +1,52 @@ +package com.microsoft.reacttestapp.component + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.facebook.react.ReactActivity +import com.facebook.react.ReactRootView +import com.facebook.react.interfaces.fabric.ReactSurface +import com.google.android.material.bottomsheet.BottomSheetDialogFragment +import com.microsoft.reacttestapp.TestApp + +class ComponentBottomSheetDialogFragment : BottomSheetDialogFragment() { + + companion object { + const val TAG = "ReactComponentBottomSheetDialog" + + private const val DISPLAY_NAME = "displayName" + private const val INITIAL_PROPERTIES = "initialProperties" + private const val NAME = "name" + + fun newInstance(component: ComponentViewModel): ComponentBottomSheetDialogFragment { + val args = Bundle() + args.putString(NAME, component.name) + args.putString(DISPLAY_NAME, component.displayName) + args.putBundle(INITIAL_PROPERTIES, component.initialProperties) + + val fragment = ComponentBottomSheetDialogFragment() + fragment.arguments = args + return fragment + } + } + + private var surface: ReactSurface? = null + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + val activity = requireActivity() as ReactActivity + val application = activity.application as TestApp + val surface = application.reactHost.createSurface( + activity, + requireNotNull(requireArguments().getString(NAME)), + requireArguments().getBundle(INITIAL_PROPERTIES) + ) + this.surface = requireNotNull(surface) + surface.start() + return surface.view as View + } +} diff --git a/packages/app/android/app/src/main/java/com/microsoft/reacttestapp/component/ComponentBottomSheetDialogFragment.kt b/packages/app/android/app/src/reactsurface-old/java/com/microsoft/reacttestapp/component/ComponentBottomSheetDialogFragment.kt similarity index 100% rename from packages/app/android/app/src/main/java/com/microsoft/reacttestapp/component/ComponentBottomSheetDialogFragment.kt rename to packages/app/android/app/src/reactsurface-old/java/com/microsoft/reacttestapp/component/ComponentBottomSheetDialogFragment.kt diff --git a/packages/app/test/pack.test.mts b/packages/app/test/pack.test.mts index 2c7a9bf93..ea28a3262 100644 --- a/packages/app/test/pack.test.mts +++ b/packages/app/test/pack.test.mts @@ -39,7 +39,6 @@ describe("npm pack", () => { "android/app/src/main/java/com/microsoft/reacttestapp/MainActivity.kt", "android/app/src/main/java/com/microsoft/reacttestapp/Session.kt", "android/app/src/main/java/com/microsoft/reacttestapp/component/ComponentActivity.kt", - "android/app/src/main/java/com/microsoft/reacttestapp/component/ComponentBottomSheetDialogFragment.kt", "android/app/src/main/java/com/microsoft/reacttestapp/component/ComponentListAdapter.kt", "android/app/src/main/java/com/microsoft/reacttestapp/component/ComponentViewModel.kt", "android/app/src/main/java/com/microsoft/reacttestapp/manifest/Manifest.kt", @@ -88,6 +87,8 @@ describe("npm pack", () => { "android/app/src/reactactivitydelegate-0.75/java/com/microsoft/reacttestapp/component/ComponentActivityDelegate.kt", "android/app/src/reactapplication-0.76/java/com/microsoft/reacttestapp/TestApp.kt", "android/app/src/reacthost-0.76/java/com/microsoft/reacttetapp/react/MainReactNativeHost.kt", + "android/app/src/reactsurface-0.82/java/com/microsoft/reacttestapp/component/ComponentBottomSheetDialogFragment.kt", + "android/app/src/reactsurface-old/java/com/microsoft/reacttestapp/component/ComponentBottomSheetDialogFragment.kt", "android/autolink.gradle", "android/autolink.mjs", "android/config-plugins.gradle",