From dbebcee189547b17195a1d9381d0638da6b9df94 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:20:47 -0800 Subject: [PATCH 01/14] Fix NonStaticNestedClass: Make inner class static Summary: The BaseVMFocusChangeListener inner class does not reference any members of its outer class BaseViewManager. Making it static improves memory efficiency by avoiding the implicit reference to the outer class instance. Also removed the unused type parameter and changed the method parameters from T to View since only View interface methods are used. Reviewed By: cortinico Differential Revision: D92020879 --- .../java/com/facebook/react/uimanager/BaseViewManager.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java index 2d47e5a291b9e8..28d92671f19ac3 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java @@ -1012,18 +1012,18 @@ public void setTouchCancel(@NonNull T view, boolean value) { * especially helpful for views that are recycled so we can retain and restore the original * listener upon recycling (onDropViewInstance). */ - private class BaseVMFocusChangeListener implements OnFocusChangeListener { + private static class BaseVMFocusChangeListener implements OnFocusChangeListener { private @Nullable OnFocusChangeListener mOriginalFocusChangeListener; public BaseVMFocusChangeListener(@Nullable OnFocusChangeListener originalFocusChangeListener) { mOriginalFocusChangeListener = originalFocusChangeListener; } - public void attach(T view) { + public void attach(View view) { view.setOnFocusChangeListener(this); } - public void detach(T view) { + public void detach(View view) { view.setOnFocusChangeListener(mOriginalFocusChangeListener); } From 63114acbd6ef4581beb2ecca96d8d45bf418463c Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:20:47 -0800 Subject: [PATCH 02/14] Fix MissingOverrideAnnotation: Add @Override to flex methods Summary: This change adds missing Override annotations to three methods in LayoutShadowNode that override methods from the parent class: - setFlex(float) - setFlexGrow(float) - setFlexShrink(float) These methods call super.setFlex/setFlexGrow/setFlexShrink, indicating they override parent methods and should have Override annotations for code clarity and compiler checking. Reviewed By: alanleedev Differential Revision: D92021000 --- .../java/com/facebook/react/uimanager/LayoutShadowNode.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.java index 757727322c0629..b83497e7e73d85 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.java @@ -230,6 +230,7 @@ public void setMaxHeight(Dynamic maxHeight) { maxHeight.recycle(); } + @Override @ReactProp(name = ViewProps.FLEX, defaultFloat = 0f) public void setFlex(float flex) { if (isVirtual()) { @@ -238,6 +239,7 @@ public void setFlex(float flex) { super.setFlex(flex); } + @Override @ReactProp(name = ViewProps.FLEX_GROW, defaultFloat = 0f) public void setFlexGrow(float flexGrow) { if (isVirtual()) { @@ -309,6 +311,7 @@ public void setGap(Dynamic gap) { gap.recycle(); } + @Override @ReactProp(name = ViewProps.FLEX_SHRINK, defaultFloat = 0f) public void setFlexShrink(float flexShrink) { if (isVirtual()) { From dd5bb36cda3f82136672fee699f58a2654bd3014 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:20:47 -0800 Subject: [PATCH 03/14] Fix DeadVariable and NotInvokedPrivateMethod: Remove unused code Summary: Remove unused code that was triggering lint warnings: 1. Remove `walkUpUntilNativeKindIsParent` private method that was never invoked 2. Remove `parent` variable in `applyLayoutBase` that was never accessed Both were leftover from NativeKind removal. Reviewed By: alanleedev Differential Revision: D92021031 --- .../react/uimanager/NativeViewHierarchyOptimizer.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java index 8bcbd2adc6da0e..79f3f6b5db5fea 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java @@ -231,12 +231,6 @@ public void onBatchComplete() { mTagsWithLayoutVisited.clear(); } - private NodeIndexPair walkUpUntilNativeKindIsParent( - ReactShadowNode node, int indexInNativeChildren) { - // Logic removed due to NativeKind removal - return new NodeIndexPair(node, indexInNativeChildren); - } - private void addNodeToNode(ReactShadowNode parent, ReactShadowNode child, int index) { // Logic removed due to NativeKind removal } @@ -289,8 +283,6 @@ private void applyLayoutBase(ReactShadowNode node) { } mTagsWithLayoutVisited.put(tag, true); - ReactShadowNode parent = node.getParent(); - // We use screenX/screenY (which round to integer pixels) at each node in the hierarchy to // emulate what the layout would look like if it were actually built with native views which // have to have integral top/left/bottom/right values From 221f848ef7b37d339ea1db772adbaa393d36b313 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:20:47 -0800 Subject: [PATCH 04/14] Fix HasBetterKotlinAlternativeMethod: Use Kotlin joinToString Summary: Replace `TextUtils.join(", ", features)` with the idiomatic Kotlin `features.joinToString(", ")`. This fixes the HasBetterKotlinAlternativeMethod lint warning and removes the now-unused TextUtils import. Reviewed By: alanleedev Differential Revision: D92021387 --- .../java/com/facebook/react/views/text/ReactTypefaceUtils.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTypefaceUtils.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTypefaceUtils.kt index 85043dfcb66e2c..e33daa691f3174 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTypefaceUtils.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTypefaceUtils.kt @@ -9,7 +9,6 @@ package com.facebook.react.views.text import android.content.res.AssetManager import android.graphics.Typeface -import android.text.TextUtils import com.facebook.react.bridge.ReadableArray import com.facebook.react.common.ReactConstants import com.facebook.react.common.assets.ReactFontManager @@ -93,7 +92,7 @@ public object ReactTypefaceUtils { "stylistic-twenty" -> features.add("'ss20'") } } - return TextUtils.join(", ", features) + return features.joinToString(", ") } @JvmStatic From 7a5e46b25dbae592dfd40142ef0183021db96290 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:20:47 -0800 Subject: [PATCH 05/14] Fix HasBetterKotlinAlternativeMethod: Use Kotlin joinToString in TextAttributeProps Summary: Replace `TextUtils.join(", ", features)` with Kotlin's idiomatic `features.joinToString(", ")` to fix the HasBetterKotlinAlternativeMethod lint warning. Also removed the now-unused `TextUtils` import while keeping the `TextUtils.TruncateAt` import that is still in use. Reviewed By: alanleedev Differential Revision: D92021465 --- .../java/com/facebook/react/views/text/TextAttributeProps.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.kt index 433afa5793aede..45c8bec4c2b8ad 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextAttributeProps.kt @@ -9,7 +9,6 @@ package com.facebook.react.views.text import android.os.Build import android.text.Layout -import android.text.TextUtils import android.text.TextUtils.TruncateAt import android.util.LayoutDirection import android.view.Gravity @@ -238,7 +237,7 @@ public class TextAttributeProps private constructor() { } } } - fontFeatureSettings = TextUtils.join(", ", features) + fontFeatureSettings = features.joinToString(", ") } private fun setFontWeight(fontWeightString: String?) { From 3e335bc78d894ce8e4f239c56a46356a1f30d3e9 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:20:47 -0800 Subject: [PATCH 06/14] Fix MissingSoLoaderLibrary: Add @SoLoaderLibrary annotation Summary: Add the SoLoaderLibrary("jsijniprofiler") annotation to HermesSamplingProfiler to fix the MissingSoLoaderLibrary androidlint warning. This annotation helps track which native libraries are loaded by this class, improving build and startup optimization analysis. Also added the required dependency on soloader annotation library in the BUCK file. Reviewed By: alanleedev Differential Revision: D92022030 --- .../facebook/hermes/instrumentation/HermesSamplingProfiler.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/HermesSamplingProfiler.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/HermesSamplingProfiler.kt index 9fef00ed214a12..be0c8f1a1ea8d5 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/HermesSamplingProfiler.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/HermesSamplingProfiler.kt @@ -8,8 +8,10 @@ package com.facebook.hermes.instrumentation import com.facebook.soloader.SoLoader +import com.facebook.soloader.annotation.SoLoaderLibrary /** Hermes sampling profiler static JSI API. */ +@SoLoaderLibrary("jsijniprofiler") public object HermesSamplingProfiler { init { SoLoader.loadLibrary("jsijniprofiler") From f41c331f89bf5f017baea4fbda72063b5353a659 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:20:47 -0800 Subject: [PATCH 07/14] Fix UseRequiresApi: Replace @TargetApi with @RequiresApi Summary: Replace TargetApi(29) with RequiresApi(29) in BlendModeHelper.kt to fix the UseRequiresApi lint warning. The RequiresApi annotation from AndroidX properly propagates the API level requirement to callers, while TargetApi only suppresses the lint warning locally without providing this safety. Also updated the import from android.annotation.TargetApi to androidx.annotation.RequiresApi. Reviewed By: alanleedev Differential Revision: D92022472 --- .../main/java/com/facebook/react/uimanager/BlendModeHelper.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/BlendModeHelper.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/BlendModeHelper.kt index f699dd592966e0..d7b7ec23340aa6 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/BlendModeHelper.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/BlendModeHelper.kt @@ -7,10 +7,10 @@ package com.facebook.react.uimanager -import android.annotation.TargetApi import android.graphics.BlendMode import android.os.Build import android.view.ViewGroup +import androidx.annotation.RequiresApi import androidx.core.view.children import com.facebook.react.R @@ -20,7 +20,7 @@ import com.facebook.react.R * This object provides utilities to convert CSS mix-blend-mode string values into Android's * [BlendMode] enumeration and to determine when views need isolated layers for proper blending. */ -@TargetApi(29) +@RequiresApi(29) internal object BlendModeHelper { /** From f0ea17ea9008ea59745d2fe21489bfaeda20a86f Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:20:47 -0800 Subject: [PATCH 08/14] Fix MissingSoLoaderLibrary: Add @SoLoaderLibrary annotation to ReactHostInspectorTarget Summary: This fixes the MissingSoLoaderLibrary lint warning in ReactHostInspectorTarget.kt by adding the SoLoaderLibrary("rninstance") annotation to the companion object that loads the native library via SoLoader.loadLibrary(). This annotation helps with static analysis and proper tracking of native library dependencies. Also adds the required soloader annotation dependency to the BUCK file. Reviewed By: alanleedev Differential Revision: D92022954 --- .../java/com/facebook/react/runtime/ReactHostInspectorTarget.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostInspectorTarget.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostInspectorTarget.kt index 936bcac115cabd..0b849197371dc0 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostInspectorTarget.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostInspectorTarget.kt @@ -18,6 +18,7 @@ import com.facebook.react.devsupport.inspector.TracingStateListener import com.facebook.react.devsupport.perfmonitor.PerfMonitorInspectorTarget import com.facebook.react.devsupport.perfmonitor.PerfMonitorUpdateListener import com.facebook.soloader.SoLoader +import com.facebook.soloader.annotation.SoLoaderLibrary import java.io.Closeable import java.util.concurrent.Executor @@ -82,6 +83,7 @@ internal class ReactHostInspectorTarget(reactHostImpl: ReactHostImpl) : return mHybridData.isValid() } + @SoLoaderLibrary("rninstance") private companion object { init { SoLoader.loadLibrary("rninstance") From 32636c385185c6bcbbec1dbebefd8e94cb0b2391 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:20:47 -0800 Subject: [PATCH 09/14] Fix MissingSoLoaderLibrary: Add @SoLoaderLibrary to JSRuntimeFactory Summary: Fixed MissingSoLoaderLibrary lint error in JSRuntimeFactory.kt. Added `SoLoaderLibrary("rninstance")` annotation to document that this class loads the "rninstance" native library via SoLoader. changelog: [internal] internal Reviewed By: alanleedev Differential Revision: D92023701 --- .../main/java/com/facebook/react/runtime/JSRuntimeFactory.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/JSRuntimeFactory.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/JSRuntimeFactory.kt index 2e8f4b8ad9ad43..d0a12a91f62e8c 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/JSRuntimeFactory.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/JSRuntimeFactory.kt @@ -10,7 +10,9 @@ package com.facebook.react.runtime import com.facebook.jni.HybridData import com.facebook.proguard.annotations.DoNotStrip import com.facebook.soloader.SoLoader +import com.facebook.soloader.annotation.SoLoaderLibrary +@SoLoaderLibrary("rninstance") public abstract class JSRuntimeFactory( @Suppress("unused", "NoHungarianNotation", "NotAccessedPrivateField") @DoNotStrip From d6f07a9f3f71f15182957f2ee13b49c6c287ef1c Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:20:47 -0800 Subject: [PATCH 10/14] Fix MissingSoLoaderLibrary: Add @SoLoaderLibrary to JSTimerExecutor Summary: Fixed MissingSoLoaderLibrary lint error in JSTimerExecutor.kt. Added `SoLoaderLibrary("rninstance")` annotation to document that this class loads the "rninstance" native library via SoLoader. changelog: [internal] internal Reviewed By: alanleedev Differential Revision: D92023704 --- .../src/main/java/com/facebook/react/runtime/JSTimerExecutor.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/JSTimerExecutor.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/JSTimerExecutor.kt index 15c11a07531a18..21b628fd47e739 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/JSTimerExecutor.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/JSTimerExecutor.kt @@ -13,8 +13,10 @@ import com.facebook.react.bridge.WritableArray import com.facebook.react.bridge.WritableNativeArray import com.facebook.react.modules.core.JavaScriptTimerExecutor import com.facebook.soloader.SoLoader +import com.facebook.soloader.annotation.SoLoaderLibrary @DoNotStrip +@SoLoaderLibrary("rninstance") internal class JSTimerExecutor() : HybridClassBase(), JavaScriptTimerExecutor { init { initHybrid() From c6300a75deea866d17ec00fe797bf57c004a51b3 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:20:47 -0800 Subject: [PATCH 11/14] Fix MissingSoLoaderLibrary: Add @SoLoaderLibrary to HermesInstance Summary: Fixed MissingSoLoaderLibrary lint error in HermesInstance.kt. Added `SoLoaderLibrary("hermesinstancejni")` annotation to document that this class loads the "hermesinstancejni" native library via SoLoader. Also added the required soloader annotation dependency to the BUCK file. changelog: [internal] internal Reviewed By: alanleedev Differential Revision: D92023711 --- .../java/com/facebook/react/runtime/hermes/HermesInstance.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/hermes/HermesInstance.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/hermes/HermesInstance.kt index 9d9877e677cf6a..fb540bf73aca4b 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/hermes/HermesInstance.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/hermes/HermesInstance.kt @@ -11,7 +11,9 @@ import com.facebook.jni.HybridData import com.facebook.jni.annotations.DoNotStrip import com.facebook.react.runtime.JSRuntimeFactory import com.facebook.soloader.SoLoader +import com.facebook.soloader.annotation.SoLoaderLibrary +@SoLoaderLibrary("hermesinstancejni") public class HermesInstance(allocInOldGenBeforeTTI: Boolean) : JSRuntimeFactory(initHybrid(allocInOldGenBeforeTTI)) { From 0b4f067652283ea79975a4e678b74fc1da6c51a9 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:20:47 -0800 Subject: [PATCH 12/14] Fix NoHungarianNotation: Rename mHybridData to hybridData Summary: Fixed NoHungarianNotation lint error in CxxInspectorPackagerConnection.kt. Renamed `mHybridData` to `hybridData` to follow Kotlin naming conventions. Hungarian Notation (m prefix for member variables) should be avoided in Kotlin as it does not play well with Java interoperability. changelog: [internal] internal Differential Revision: D92023753 --- .../devsupport/CxxInspectorPackagerConnection.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/CxxInspectorPackagerConnection.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/CxxInspectorPackagerConnection.kt index 5e3be8b1441320..7da1dbb949acfc 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/CxxInspectorPackagerConnection.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/CxxInspectorPackagerConnection.kt @@ -34,7 +34,9 @@ internal class CxxInspectorPackagerConnection( deviceName: String, packageName: String, ) : IInspectorPackagerConnection { - @DoNotStrip private val mHybridData: HybridData + @Suppress("NoHungarianNotation") // fbjni accesses this field by name "mHybridData" + @DoNotStrip + private val mHybridData: HybridData init { mHybridData = initHybrid(url, deviceName, packageName, DelegateImpl()) @@ -48,7 +50,12 @@ internal class CxxInspectorPackagerConnection( /** Java wrapper around a C++ IWebSocketDelegate, allowing us to call the interface from Java. */ @DoNotStrip - private class WebSocketDelegate @DoNotStrip constructor(private val mHybridData: HybridData) : + private class WebSocketDelegate + @DoNotStrip + constructor( + @Suppress("NoHungarianNotation") // fbjni accesses this field by name "mHybridData" + private val mHybridData: HybridData, + ) : Closeable { external fun didFailWithError(posixCode: Int?, error: String?) From 5a57daba720591dd3d04a166749a7c34fb6946e8 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:20:47 -0800 Subject: [PATCH 13/14] Fix MissingSoLoaderLibrary: Add @SoLoaderLibrary to ComponentNameResolverBinding (#55512) Summary: Fixed MissingSoLoaderLibrary lint error in ComponentNameResolverBinding.kt. Added `SoLoaderLibrary("uimanagerjni")` annotation to document that this class loads the "uimanagerjni" native library via SoLoader. Also added the required soloader annotation dependency to the BUCK file. changelog: [internal] internal Reviewed By: NickGerleman, alanleedev Differential Revision: D92024027 --- .../facebook/react/uimanager/ComponentNameResolverBinding.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ComponentNameResolverBinding.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ComponentNameResolverBinding.kt index 25c573777d9550..5d67840510dc04 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ComponentNameResolverBinding.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ComponentNameResolverBinding.kt @@ -10,6 +10,7 @@ package com.facebook.react.uimanager import com.facebook.proguard.annotations.DoNotStripAny import com.facebook.react.bridge.RuntimeExecutor import com.facebook.soloader.SoLoader +import com.facebook.soloader.annotation.SoLoaderLibrary import kotlin.jvm.JvmStatic /** @@ -19,6 +20,7 @@ import kotlin.jvm.JvmStatic * JavaScript runtime, making component name information available to the native side. */ @DoNotStripAny +@SoLoaderLibrary("uimanagerjni") internal object ComponentNameResolverBinding { init { SoLoader.loadLibrary("uimanagerjni") From 8e38b3386346eaf9a125c1a2dab1a608d4338321 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:20:47 -0800 Subject: [PATCH 14/14] Fix FieldsBelowInit: Move property declarations before init block (#55513) Summary: Fixed FieldsBelowInit lint warning in SurfaceHandlerBinding.kt. Moved the property declarations (surfaceId, isRunning, moduleName) before the init block to follow Kotlin best practices for initialization order. Note: These are computed properties (getters) that call native methods, so the warning was technically a false positive, but reordering improves code clarity. changelog: [internal] internal Reviewed By: alanleedev, NickGerleman Differential Revision: D92024128 --- .../facebook/react/fabric/SurfaceHandlerBinding.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/SurfaceHandlerBinding.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/SurfaceHandlerBinding.kt index f7af235b6498c4..3ae993b04f7840 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/SurfaceHandlerBinding.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/SurfaceHandlerBinding.kt @@ -13,12 +13,6 @@ import com.facebook.react.fabric.mounting.LayoutMetricsConversions internal open class SurfaceHandlerBinding(moduleName: String) : HybridClassBase() { - init { - initHybrid(NO_SURFACE_ID, moduleName) - } - - private external fun initHybrid(surfaceId: Int, moduleName: String) - val surfaceId: Int get() = _getSurfaceId() @@ -28,6 +22,12 @@ internal open class SurfaceHandlerBinding(moduleName: String) : HybridClassBase( val moduleName: String get() = _getModuleName() + init { + initHybrid(NO_SURFACE_ID, moduleName) + } + + private external fun initHybrid(surfaceId: Int, moduleName: String) + private external fun _getSurfaceId(): Int private external fun _getModuleName(): String