From cef1f3be26e0e787f7a942cd2a10e06e00599c85 Mon Sep 17 00:00:00 2001 From: David Vacca <515103+mdvacca@users.noreply.github.com> Date: Sat, 7 Feb 2026 22:49:07 -0800 Subject: [PATCH 1/6] 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 ec0240042953776e42a9c95e90d06318319b40ef Mon Sep 17 00:00:00 2001 From: David Vacca <515103+mdvacca@users.noreply.github.com> Date: Sat, 7 Feb 2026 22:49:07 -0800 Subject: [PATCH 2/6] 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 fe91b82eb6001ad70605db2fd6733d1eee8f525d Mon Sep 17 00:00:00 2001 From: David Vacca <515103+mdvacca@users.noreply.github.com> Date: Sat, 7 Feb 2026 22:49:07 -0800 Subject: [PATCH 3/6] 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 96357594478fe3f2d355ac1d6c5b4a8a0546adf7 Mon Sep 17 00:00:00 2001 From: David Vacca <515103+mdvacca@users.noreply.github.com> Date: Sat, 7 Feb 2026 22:49:07 -0800 Subject: [PATCH 4/6] 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 211b837fd969a6109856ade42509a32ed640e53a Mon Sep 17 00:00:00 2001 From: David Vacca <515103+mdvacca@users.noreply.github.com> Date: Sat, 7 Feb 2026 22:49:07 -0800 Subject: [PATCH 5/6] 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 0aa434b9b2874db98cc2338a9286c824a18c5377 Mon Sep 17 00:00:00 2001 From: David Vacca <515103+mdvacca@users.noreply.github.com> Date: Sat, 7 Feb 2026 22:49:07 -0800 Subject: [PATCH 6/6] Fix CollectionSizeUse and UnsafeDereference lint warnings (#55442) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/55442 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 Reviewed By: javache 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() }