From 00edb86d28305ad1e52b6598e6be62359b431b5c Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:21:06 -0800 Subject: [PATCH 01/15] 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 20a4c093affee74ffb4d06259adc5d3474581235 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:21:06 -0800 Subject: [PATCH 02/15] 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 98f2d10fa35efcf39932bd1f2922cf68ee61c2b3 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:21:06 -0800 Subject: [PATCH 03/15] 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 2256c79ad4a0f7cd8c4589276054d6e3f838a3ac Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:21:06 -0800 Subject: [PATCH 04/15] 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 a4e00d2238dcf8324f2386cdd2b0ebaabcecd6ef Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:21:06 -0800 Subject: [PATCH 05/15] 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 013be9073d8bb9b7c7115756b92d9aeefac1daef Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:21:06 -0800 Subject: [PATCH 06/15] 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 a85317d95d77f75625a460a51fd5f18bf3a7b29b Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:21:06 -0800 Subject: [PATCH 07/15] 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 ef8aa04fce417377d90db6afcc9dc2040548ea83 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:21:06 -0800 Subject: [PATCH 08/15] 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 c53b705cdde2af1857cb9a15edcdfabbb20b1b8e Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:21:06 -0800 Subject: [PATCH 09/15] 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 d5795f71b814106459ee1cbba11676c1cbc11c0f Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:21:06 -0800 Subject: [PATCH 10/15] 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 5b8fdd37b1bfcb940c29ff7f5575177daf7a1dab Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:21:06 -0800 Subject: [PATCH 11/15] 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 a69402d7a2d7179b507438a3d0a800a66f4fbd70 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:21:06 -0800 Subject: [PATCH 12/15] 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 e84986a0a81177466b99807bc4ea4e0651c181d9 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:21:06 -0800 Subject: [PATCH 13/15] 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 f51573522fa2cd39c3285b67ac6b5169e2fc722a Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:21:06 -0800 Subject: [PATCH 14/15] 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 From 2227b54d6bc77d0d40e439abe1732a504e0757b0 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 11 Feb 2026 20:21:06 -0800 Subject: [PATCH 15/15] Fix MissingSoLoaderLibrary: Add @SoLoaderLibrary to BlobCollector (#55514) Summary: Fixed MissingSoLoaderLibrary lint error in BlobCollector.kt. Added `SoLoaderLibrary("reactnativeblob")` annotation to document that this class loads the "reactnativeblob" native library via SoLoader. Also added the required soloader annotation dependency to the BUCK file. changelog: [internal] internal Reviewed By: alanleedev Differential Revision: D92024489 --- .../main/java/com/facebook/react/modules/blob/BlobCollector.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobCollector.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobCollector.kt index f7108095bc91a7..d77711b0682ce4 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobCollector.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobCollector.kt @@ -10,7 +10,9 @@ package com.facebook.react.modules.blob import com.facebook.react.bridge.JavaScriptContextHolder import com.facebook.react.bridge.ReactContext import com.facebook.soloader.SoLoader +import com.facebook.soloader.annotation.SoLoaderLibrary +@SoLoaderLibrary("reactnativeblob") internal object BlobCollector { init { SoLoader.loadLibrary("reactnativeblob")