From f936a815fe731f9983581f6f047e0b1a3c8f2699 Mon Sep 17 00:00:00 2001 From: David Vacca <515103+mdvacca@users.noreply.github.com> Date: Sat, 7 Feb 2026 22:50:04 -0800 Subject: [PATCH 1/7] Fix DoNotStripAnnotationUsage: Replace @DoNotStrip with @DoNotStripAny Summary: Fixed DoNotStripAnnotationUsage lint error in FabricUIManagerBinding.kt. The class has many members (external methods like initHybrid, installFabricUIManager, etc.) that need to be kept, so DoNotStripAny is more appropriate than DoNotStrip which only keeps the directly annotated element. changelog: [internal] internal Differential Revision: D91840163 --- .../java/com/facebook/react/fabric/FabricUIManagerBinding.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerBinding.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerBinding.kt index ac8e4e2ef07e07..0373e9d2be1eeb 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerBinding.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManagerBinding.kt @@ -9,14 +9,14 @@ package com.facebook.react.fabric import android.annotation.SuppressLint import com.facebook.jni.HybridClassBase -import com.facebook.proguard.annotations.DoNotStrip +import com.facebook.proguard.annotations.DoNotStripAny import com.facebook.react.bridge.NativeMap import com.facebook.react.bridge.RuntimeExecutor import com.facebook.react.bridge.RuntimeScheduler import com.facebook.react.fabric.events.EventBeatManager import com.facebook.react.uimanager.PixelUtil.getDisplayMetricDensity -@DoNotStrip +@DoNotStripAny @SuppressLint("MissingNativeLoadLibrary") internal class FabricUIManagerBinding : HybridClassBase() { init { From 4c415750a04c07525e3f8a88dea8abb2edd2d195 Mon Sep 17 00:00:00 2001 From: David Vacca <515103+mdvacca@users.noreply.github.com> Date: Sat, 7 Feb 2026 22:50:04 -0800 Subject: [PATCH 2/7] Fix ClownyBooleanExpression: Add @SuppressLint annotation Summary: Fixed ClownyBooleanExpression lint warning in FabricUIManager.java. The expression `false && ReactBuildConfig.DEBUG` is intentionally used as a development flag that can be easily toggled. The constant false ensures it's disabled in production while making it clear how to enable it for development. changelog: [internal] internal Differential Revision: D91840560 --- .../main/java/com/facebook/react/fabric/FabricUIManager.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java index a4cb1c2dd5ed47..23b53003caacbf 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java @@ -117,7 +117,9 @@ public class FabricUIManager // The IS_DEVELOPMENT_ENVIRONMENT variable is used to log extra data when running fabric in a // development environment. DO NOT ENABLE THIS ON PRODUCTION OR YOU WILL BE FIRED! + @SuppressLint("ClownyBooleanExpression") public static final boolean IS_DEVELOPMENT_ENVIRONMENT = false && ReactBuildConfig.DEBUG; + public @Nullable DevToolsReactPerfLogger mDevToolsReactPerfLogger; private static final DevToolsReactPerfLogger.DevToolsReactPerfLoggerListener FABRIC_PERF_LOGGER = From 84a363bcecc6ceac7d97128878ab0b82f4916125 Mon Sep 17 00:00:00 2001 From: David Vacca <515103+mdvacca@users.noreply.github.com> Date: Sat, 7 Feb 2026 22:50:04 -0800 Subject: [PATCH 3/7] Fix NotInvokedPrivateMethod: Add @SuppressLint for preallocateView Summary: Fixed NotInvokedPrivateMethod lint warning for preallocateView in FabricUIManager.java. This method is called from JNI/C++ code, not from Java, so the lint warning is a false positive. Added SuppressLint annotation to suppress the warning. changelog: [internal] internal Differential Revision: D91840733 --- .../src/main/java/com/facebook/react/fabric/FabricUIManager.java | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java index 23b53003caacbf..74643cc11cad31 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java @@ -820,6 +820,7 @@ public void synchronouslyUpdateViewOnUIThread(final int reactTag, final Readable ReactMarkerConstants.FABRIC_UPDATE_UI_MAIN_THREAD_END, null, commitNumber); } + @SuppressLint("NotInvokedPrivateMethod") @SuppressWarnings("unused") @AnyThread @ThreadConfined(ANY) From b4cc190fe82f3398502b057ac01fd6fee2b139bb Mon Sep 17 00:00:00 2001 From: David Vacca <515103+mdvacca@users.noreply.github.com> Date: Sat, 7 Feb 2026 22:50:04 -0800 Subject: [PATCH 4/7] Fix JavadocsBackticksUse: Replace backticks with {@code} tags Summary: Fixed JavadocsBackticksUse lint warning in FabricUIManager.java. Replaced markdown-style backticks with proper javadoc {code ...} tags for code references in the receiveEvent method documentation. changelog: [internal] internal Differential Revision: D91841151 --- .../java/com/facebook/react/fabric/FabricUIManager.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java index 74643cc11cad31..08c96912586a47 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java @@ -1053,11 +1053,11 @@ public void receiveEvent( } /** - * receiveEvent API that emits an event to C++. If `canCoalesceEvent` is true, that signals that - * C++ may coalesce the event optionally. Otherwise, coalescing can happen in Java before + * receiveEvent API that emits an event to C++. If {@code canCoalesceEvent} is true, that signals + * that C++ may coalesce the event optionally. Otherwise, coalescing can happen in Java before * emitting. * - *

`customCoalesceKey` is currently unused. + *

{@code customCoalesceKey} is currently unused. * * @param surfaceId * @param reactTag From 533855a9c3b60919f1db5da354841edde2c8f687 Mon Sep 17 00:00:00 2001 From: David Vacca <515103+mdvacca@users.noreply.github.com> Date: Sat, 7 Feb 2026 22:50:04 -0800 Subject: [PATCH 5/7] Fix ClassNameDoesNotMatchFileName: Rename InteropUiBlockListener to InteropUIBlockListener Summary: Fixed ClassNameDoesNotMatchFileName lint warning by renaming the file from InteropUiBlockListener.kt to InteropUIBlockListener.kt to match the class name. changelog: [internal] internal Differential Revision: D91843967 --- .../{InteropUiBlockListener.kt => InteropUIBlockListener.kt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/internal/interop/{InteropUiBlockListener.kt => InteropUIBlockListener.kt} (100%) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/internal/interop/InteropUiBlockListener.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/internal/interop/InteropUIBlockListener.kt similarity index 100% rename from packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/internal/interop/InteropUiBlockListener.kt rename to packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/internal/interop/InteropUIBlockListener.kt From 3d721d1cdf21d2c8b5b435874980583edc212b1b Mon Sep 17 00:00:00 2001 From: David Vacca <515103+mdvacca@users.noreply.github.com> Date: Sat, 7 Feb 2026 22:50:04 -0800 Subject: [PATCH 6/7] Fix CollectionSizeUse and UnsafeDereference lint warnings Summary: Fixed lint warnings in LongStreamingStats.kt: - Replaced `size == 0` with `isEmpty()` for better readability - Replaced `!!` operator with safe null handling using `?: 0L` changelog: [internal] internal Differential Revision: D91844147 --- .../main/java/com/facebook/react/fabric/LongStreamingStats.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/LongStreamingStats.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/LongStreamingStats.kt index 3d1d46e3f6af1c..851efc88dbe776 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/LongStreamingStats.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/LongStreamingStats.kt @@ -49,14 +49,14 @@ internal class LongStreamingStats { val median: Double get() { - if (minHeap.size == 0 && maxHeap.size == 0) { + if (minHeap.isEmpty() && maxHeap.isEmpty()) { return 0.0 } val median = if (minHeap.size > maxHeap.size) { minHeap.peek() } else { - (minHeap.peek() ?: 0 + maxHeap.peek()!!) / 2 + ((minHeap.peek() ?: 0L) + (maxHeap.peek() ?: 0L)) / 2 } return median.toDouble() } From b979bde575aaa6ead43268e810e0c28f6c323f82 Mon Sep 17 00:00:00 2001 From: David Vacca <515103+mdvacca@users.noreply.github.com> Date: Sat, 7 Feb 2026 22:50:04 -0800 Subject: [PATCH 7/7] Fix SelfComparison lint error in NativeModuleRegistry.kt (#55444) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/55444 Fixed SelfComparison lint error by extracting the compared values into separate local variables, making it clearer to the linter that we're comparing two different instances. The original code was comparing `this.reactApplicationContext` with `newRegister.reactApplicationContext`, but the linter incorrectly flagged it as a self-comparison due to the same property name. changelog: [internal] internal Reviewed By: cortinico Differential Revision: D91797839 --- .../java/com/facebook/react/bridge/NativeModuleRegistry.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.kt index dcf2e1946cd7d9..d0c9df1942e7fe 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.kt @@ -46,7 +46,9 @@ public class NativeModuleRegistry( ) // This is needed till there are Java Consumer of this API inside React // Native internal fun registerModules(newRegister: NativeModuleRegistry) { - check(reactApplicationContext == newRegister.reactApplicationContext) { + val ownContext = reactApplicationContext + val otherContext = newRegister.reactApplicationContext + check(ownContext == otherContext) { "Extending native modules with non-matching application contexts." }