Developer
Peter Abbondanzo
abbo@meta.com
Performance
YoY:+1067%Key patterns and highlights from this developer's activity.
Breakdown of growth, maintenance, and fixes effort over time.
Bugs introduced vs. fixed over time.
Reclassifies engineering effort based on bug attribution. Commits that introduced bugs are retrospectively counted as poor investments.
Investment Quality reclassifies engineering effort based on bug attribution data. Commits identified as buggy origins (those that introduced bugs later fixed by someone) have their grow and maintenance time moved into the Wasted Time category. Their waste (fix commits) remains counted as productive. All other commits retain their standard classification: grow is productive, maintenance is maintenance, and waste (fixes) is productive.
The standard model classifies commits as Growth, Maintenance, or Fixes. Investment Quality adds a quality lens: a commit that introduced a bug is retrospectively counted as a poor investment โ the engineering time spent on it was wasted because it ultimately required additional fix work. Fix commits (Fixes in the standard model) are reframed as productive, because fixing bugs is valuable work.
Currently computed client-side from commit and bug attribution data. Ideal server-side endpoint:
POST /v1/organizations/{orgId}/investment-quality
Content-Type: application/json
Request:
{
"startTime": "2025-01-01T00:00:00Z",
"endTime": "2025-12-31T23:59:59Z",
"bucketSize": "BUCKET_SIZE_MONTH",
"groupBy": ["repository_id" | "deliverer_email"]
}
Response:
{
"productivePct": 74,
"maintenancePct": 18,
"wastedPct": 8,
"buckets": [
{
"bucketStart": "2025-01-01T00:00:00Z",
"productive": 4.2,
"maintenance": 1.8,
"wasted": 0.6
}
]
}Latest analyzed commits from this developer.
| Hash | Message | Date | Files |
|---|
Commit activity distribution by hour and day of week. Shows when this developer is most active.
Developers who frequently work on the same files and symbols. Higher score means stronger code collaboration.
| Effort |
|---|
| 1fdd1671 | This commit provides a **bug fix** for the **LayoutAnimation** system by resolving **undefined behavior** in the `shouldFirstComeBeforeSecondMutation` comparator within `utils.h`. Previously, a pointer comparison fallback in the sorting logic led to SIGSEGV crashes on Android after an LLVM 19.x NDK upgrade, as `std::stable_sort`'s new implementation exposed this issue. The fix replaces the problematic pointer comparison with a **deterministic fallback** using `parentTag`, `newChildShadowView.tag`, and `oldChildShadowView.tag` to ensure stable ordering. This change prevents crashes and improves the robustness of LayoutAnimation, further reinforced by the addition of comprehensive tests in `MutationComparatorTest.cpp` covering strict weak ordering, type-based rules, and the new deterministic fallback. | Mar 19 | 2 | maint |
| 941ace99 | This commit **rolls out** the `enableAndroidLinearText` feature flag by setting its **default value to `true`** across all relevant React Native internal feature flag configurations. This **configuration change** primarily impacts the **Android text rendering subsystem**, making the **linear text layout** the standard behavior for all React Native applications on Android by default. The update affects `ReactNativeFeatureFlagsDefaults.kt`, `ReactNativeFeatureFlagsDefaults.h`, `ReactNativeFeatureFlags.config.js`, and `ReactNativeFeatureFlags.js`, ensuring the new default is consistently applied. This change promotes a previously experimental feature to general availability, aiming to improve text rendering performance or consistency on the Android platform. | Mar 19 | 4 | grow |
| f88946d2 | This commit delivers a **bug fix** addressing a visual artifact in **Android UI rendering** for API levels 28 and below. Previously, when `clipWithAntiAliasing` used `saveLayer` for anti-aliased border radius clipping, partially off-screen views would display erroneous black pixels because the GPU failed to properly initialize the offscreen buffer. The fix involves adding a `canvas.clipRect` call within the `clipWithAntiAliasing` method in `BackgroundStyleApplicator.kt` before `saveLayer`, which forces the hardware UI to correctly initialize the buffer. This prevents the appearance of black artifacts, significantly improving the rendering quality of **React Native components** with rounded corners on older Android devices. | Feb 27 | 1 | waste |
| 7d2d3a21 | This commit delivers a crucial **bug fix** addressing a **SIGSEGV crash** within the **UIManager**'s `findShadowNodeByTag_DEPRECATED` function, which stemmed from a **use-after-free race condition** involving `ShadowNode` objects. The issue occurred when a raw pointer to a `RootShadowNode` became dangling after a `tryCommit` operation, leading to crashes during subsequent access, particularly during focus navigation. The solution replaces the unsafe raw pointer capture with `ShadowTree::getCurrentRevision()`, which returns a `ShadowTreeRevision` containing a `shared_ptr<const RootShadowNode>`, ensuring the node's lifetime is properly managed and preventing the use-after-free. This **stability improvement** is gated by a new **feature flag**, `fixFindShadowNodeByTagRaceCondition`, allowing for a controlled rollout to mitigate production crashes. | Feb 26 | 22 | grow |
| 51ec52e8 | This commit delivers a **bug fix** for **Android** `ReactImageView`s, addressing an issue where images would disappear on **API 24 (Nougat)** when antialiased border radius clipping was applied. The previous `DST_OUT` + `EVEN_ODD` compositing technique within `clipWithAntiAliasing()` in `BackgroundStyleApplicator.kt` was incompatible with `Fresco`'s `BitmapShader`-based drawing on this specific API level, leading to content erasure. The fix refactors the clipping logic to utilize a more robust nested `saveLayer` with `DST_IN` compositing, ensuring images with rounded corners render correctly. This change prevents visual glitches and improves the user experience for applications displaying images with antialiased borders on affected devices. | Feb 14 | 1 | waste |
| 5e93036a | This commit introduces a **new capability** to experiment with using Android's `NestedScrollView` as the underlying implementation for React Native's `RCTScrollView`, aiming to improve **nested scrolling behavior** on the Android platform. It achieves this through a sophisticated **code generation pipeline** that creates `ReactNestedScrollView.java` and `ReactNestedScrollViewManager.kt` from their `ScrollView` counterparts, extending `NestedScrollView`. A new `useNestedScrollViewAndroid` **feature flag** has been extensively integrated across the **React Native feature flag system** (Java, Kotlin, C++, and JS) to control which `ScrollView` implementation is registered at runtime. This infrastructure change enables safe A/B testing of the `NestedScrollView` benefits without requiring any JavaScript changes, allowing for a controlled rollout and evaluation. | Jan 21 | 24 | grow |
| 436ed6b2 | This commit **fixes the OSS build** for the **Fresco Showcase application** by **refactoring** its logging configuration. Specifically, it updates the `onCreate` method within `ShowcaseApplication.kt` to change how the `FLog` minimum logging level is assigned. The assignment now uses a direct property assignment instead of a method call, resolving an incompatibility or deprecated API usage that was causing build failures in the open-source environment. This ensures the **Fresco Showcase application** compiles correctly for OSS users. | Jan 20 | 2 | maint |
| ef9bab2a | This commit introduces a **feature enhancement** by making the **Android `ReactSwipeRefreshLayout` component** extendable within React Native. It modifies the `com.facebook.react.views.swiperefresh.ReactSwipeRefreshLayout` class to be `open`, allowing developers to **subclass and provide custom implementations** for the swipe-to-refresh functionality. This **API improvement** enables greater flexibility for Android-specific UI customizations, empowering developers to tailor the component's behavior beyond its default implementation. | Jan 16 | 2 | grow |
| 95bac85b | This commit **changes the default behavior** of `ScrollView` components on **Android** when a `refreshControl` is present. It **enables nested scrolling by default** for these instances, specifically addressing an issue where the `ReactSwipeRefreshLayout` would incorrectly discard non-touch scroll actions, such as those from joysticks. This **bug fix** ensures proper handling of all scroll events, improving accessibility and consistency without impacting existing touch-based scrolling. The change affects the `render` method within `packages/react-native/Libraries/Components/ScrollView/ScrollView.js`, making the `nestedScrollEnabled` prop default to `true` under these conditions. | Jan 16 | 1 | waste |
| 03b1bf60 | This commit **reverts** the previous change that forwarded `ACTION_SCROLL` events to children of `SwipeRefreshLayout` components within **React Native's Android implementation**. It performs a comprehensive **cleanup** by entirely removing the `passScrollToSwipeRefreshChild` feature flag and all its associated code. This **maintenance** action spans across **Java/Kotlin, C++, and JavaScript feature flag definitions** in `ReactAndroid` and `ReactCommon`, as the experiment that utilized this specific scroll event forwarding behavior is no longer needed. The change effectively removes an unused capability and its supporting infrastructure, simplifying the codebase. | Jan 16 | 22 | maint |
| 77779f83 | This commit introduces a **bug fix** and **new capability** for the **Android `SwipeRefreshLayout` integration** in React Native. It resolves an issue where `ACTION_SCROLL` events originating from non-touch input devices, such as joysticks or scrollwheels, were not correctly forwarded to child views wrapped within a `SwipeRefreshLayout`. The fix involves overriding `dispatchGenericMotionEvent` in `ReactSwipeRefreshLayout.kt` to explicitly pass these events to the first child, thereby enabling proper nested scrolling and pull-to-refresh functionality. This enhancement, controlled by a new **feature flag** `passScrollToSwipeRefreshChild`, significantly improves **accessibility and usability** for Android users employing alternative input methods. | Jan 14 | 22 | grow |
| 36a0d9ef | This commit **deprecates** the `setAccessibilityFocus` method within the **`AccessibilityInfo` API** in React Native's core library. This **API evolution** guides developers away from a function that is **unsupported in the new architecture**, recommending the use of `AccessibilityInfo.sendAccessibilityEvent` as the preferred alternative for setting accessibility focus. Additionally, it includes a **maintenance fix** by adding the `windowStateChange` event type to the `AccessibilityEventTypes` definition, improving type safety and completeness for accessibility event handling. This change ensures better compatibility with future architectural updates and provides clearer guidance for accessibility feature implementation. | Jan 6 | 2 | maint |
| ca2fc145 | This commit **fixes a rendering bug** in the **Android UI Manager** affecting **clipping masks on API levels below 27**. Previously, content could incorrectly draw outside its padding box due to an incomplete clipping mask application, especially when outlines were present. The **bug fix** in `BackgroundStyleApplicator.kt` inverts the clipping logic by applying a mask to the entire content boundary and using `DST_OUT` to correctly "delete" content outside the padding box. This ensures **accurate visual clipping** and **consistent UI presentation** for React Native components on older Android devices. | Dec 17 | 1 | waste |
| d13bc562 | This commit introduces a **new example module** named `KeyEvents` to the **RNTester application**, specifically updating `RNTesterList.android.js`. This **enhancement** provides a dedicated test bench for easily logging and observing `onKeyDown` and `onKeyUp` events. It demonstrates how these keyboard events behave within the context of focusable views and text input fields, aiding in the development and debugging of **keyboard event handling** in React Native components, particularly on **Android**. This addition improves the testing infrastructure for **input event management**. | Nov 19 | 2 | grow |
| 79b09ce9 | This commit **introduces new keyboard event support** for **Android views** by adding `onKeyDown` and `onKeyUp` event handlers, enabling JavaScript components to directly respond to keyboard input. It enhances the **React Native Android platform** by integrating these events through the `ReactRootView` and `ReactSurfaceView` via a new `JSKeyDispatcher`, ensuring proper global dispatching without conflicts. The event payload is designed to be **W3C-compliant**, providing `key`, `code`, and modifier properties, while intentionally omitting legacy fields for better compatibility. This **new feature** significantly improves **input handling capabilities** for Android applications and is controlled by the `enableKeyEvents` feature flag. | Nov 19 | 13 | grow |
| 4f202189 | This commit performs a **maintenance fix** by correcting the `dateAdded` metadata for the `enableAndroidAntialiasedBorderRadiusClipping` feature flag. Specifically, it updates the date in `packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js` from an incorrect '2025-01-31' to the accurate '2025-11-14'. This ensures the **feature flag configuration** accurately reflects when the `enableAndroidAntialiasedBorderRadiusClipping` capability was introduced, which is crucial for internal tracking and tooling. | Nov 17 | 1 | waste |
| e08abbcb | This commit **fixes a long-standing visual bug** on **Android API 28 and below** where views and images with border radii displayed **jagged edges** due to the platform's `clipPath` API lacking proper antialiasing. It introduces a new `clipToPaddingBoxWithAntiAliasing` method within the **`BackgroundStyleApplicator`** to explicitly draw transparent pixels outside the clipped region, ensuring smooth rendering. This **rendering improvement** is controlled by a new feature flag, `enableAndroidAntialiasedBorderRadiusClipping`, allowing for a controlled rollout and mitigating visual artifacts for users on older Android versions. The `ReactImageView` component is updated to leverage this new antialiasing capability, enhancing the overall visual fidelity of React Native applications. | Nov 14 | 23 | grow |
| b7012ba9 | This commit **enhances the visual rendering quality** of **React Native UI components on Android** by **enabling anti-aliasing** for the `Paint` object within the `OutlineDrawable`. This **feature improvement** ensures that outlines drawn by `OutlineDrawable` appear smoother and less pixelated, aligning with the existing anti-aliasing applied to `BorderDrawable`. The change specifically impacts the `OutlineDrawable.kt` file, leading to a **more polished user interface** for applications utilizing these drawing capabilities. | Nov 9 | 1 | grow |
| 963f7a5c | This commit introduces a **behavior adjustment** to **React Native's Android scroll views**, specifically `ReactHorizontalScrollView` and `ReactScrollView`, when **paging is enabled**. It modifies the post-touch runnable to treat `ACTION_SCROLL` events as having non-zero velocity, akin to momentum scrolling, even though they don't dispatch with a real velocity. This ensures that the `flingAndSnap` logic is correctly applied, causing the scroll view to consistently snap to the next or previous item in the direction of the scroll, rather than the nearest offset. The change **fixes** an issue where paged scrolling might not advance to the intended item, improving the predictability and user experience of paged lists. | Nov 4 | 2 | waste |
| 502efe1c | This commit performs a **cleanup and refactoring** by **removing the `sweepActiveTouchOnChildNativeGesturesAndroid` feature flag** and all its associated infrastructure. As the flag's default value was previously aligned with the desired behavior, it became redundant. This change simplifies the **React Native feature flag system** across **Android (Kotlin), C++, and JavaScript layers**, eliminating unnecessary definitions, accessors, and checks. Specifically, the **Android touch event dispatching logic** in `JSTouchDispatcher.kt` is streamlined, making the "sweep active touch on child native gestures" behavior unconditional. This improves code maintainability by removing obsolete code. | Nov 4 | 21 | maint |
This commit provides a **bug fix** for the **LayoutAnimation** system by resolving **undefined behavior** in the `shouldFirstComeBeforeSecondMutation` comparator within `utils.h`. Previously, a pointer comparison fallback in the sorting logic led to SIGSEGV crashes on Android after an LLVM 19.x NDK upgrade, as `std::stable_sort`'s new implementation exposed this issue. The fix replaces the problematic pointer comparison with a **deterministic fallback** using `parentTag`, `newChildShadowView.tag`, and `oldChildShadowView.tag` to ensure stable ordering. This change prevents crashes and improves the robustness of LayoutAnimation, further reinforced by the addition of comprehensive tests in `MutationComparatorTest.cpp` covering strict weak ordering, type-based rules, and the new deterministic fallback.
This commit **rolls out** the `enableAndroidLinearText` feature flag by setting its **default value to `true`** across all relevant React Native internal feature flag configurations. This **configuration change** primarily impacts the **Android text rendering subsystem**, making the **linear text layout** the standard behavior for all React Native applications on Android by default. The update affects `ReactNativeFeatureFlagsDefaults.kt`, `ReactNativeFeatureFlagsDefaults.h`, `ReactNativeFeatureFlags.config.js`, and `ReactNativeFeatureFlags.js`, ensuring the new default is consistently applied. This change promotes a previously experimental feature to general availability, aiming to improve text rendering performance or consistency on the Android platform.
This commit delivers a **bug fix** addressing a visual artifact in **Android UI rendering** for API levels 28 and below. Previously, when `clipWithAntiAliasing` used `saveLayer` for anti-aliased border radius clipping, partially off-screen views would display erroneous black pixels because the GPU failed to properly initialize the offscreen buffer. The fix involves adding a `canvas.clipRect` call within the `clipWithAntiAliasing` method in `BackgroundStyleApplicator.kt` before `saveLayer`, which forces the hardware UI to correctly initialize the buffer. This prevents the appearance of black artifacts, significantly improving the rendering quality of **React Native components** with rounded corners on older Android devices.
This commit delivers a crucial **bug fix** addressing a **SIGSEGV crash** within the **UIManager**'s `findShadowNodeByTag_DEPRECATED` function, which stemmed from a **use-after-free race condition** involving `ShadowNode` objects. The issue occurred when a raw pointer to a `RootShadowNode` became dangling after a `tryCommit` operation, leading to crashes during subsequent access, particularly during focus navigation. The solution replaces the unsafe raw pointer capture with `ShadowTree::getCurrentRevision()`, which returns a `ShadowTreeRevision` containing a `shared_ptr<const RootShadowNode>`, ensuring the node's lifetime is properly managed and preventing the use-after-free. This **stability improvement** is gated by a new **feature flag**, `fixFindShadowNodeByTagRaceCondition`, allowing for a controlled rollout to mitigate production crashes.
This commit delivers a **bug fix** for **Android** `ReactImageView`s, addressing an issue where images would disappear on **API 24 (Nougat)** when antialiased border radius clipping was applied. The previous `DST_OUT` + `EVEN_ODD` compositing technique within `clipWithAntiAliasing()` in `BackgroundStyleApplicator.kt` was incompatible with `Fresco`'s `BitmapShader`-based drawing on this specific API level, leading to content erasure. The fix refactors the clipping logic to utilize a more robust nested `saveLayer` with `DST_IN` compositing, ensuring images with rounded corners render correctly. This change prevents visual glitches and improves the user experience for applications displaying images with antialiased borders on affected devices.
This commit introduces a **new capability** to experiment with using Android's `NestedScrollView` as the underlying implementation for React Native's `RCTScrollView`, aiming to improve **nested scrolling behavior** on the Android platform. It achieves this through a sophisticated **code generation pipeline** that creates `ReactNestedScrollView.java` and `ReactNestedScrollViewManager.kt` from their `ScrollView` counterparts, extending `NestedScrollView`. A new `useNestedScrollViewAndroid` **feature flag** has been extensively integrated across the **React Native feature flag system** (Java, Kotlin, C++, and JS) to control which `ScrollView` implementation is registered at runtime. This infrastructure change enables safe A/B testing of the `NestedScrollView` benefits without requiring any JavaScript changes, allowing for a controlled rollout and evaluation.
This commit **fixes the OSS build** for the **Fresco Showcase application** by **refactoring** its logging configuration. Specifically, it updates the `onCreate` method within `ShowcaseApplication.kt` to change how the `FLog` minimum logging level is assigned. The assignment now uses a direct property assignment instead of a method call, resolving an incompatibility or deprecated API usage that was causing build failures in the open-source environment. This ensures the **Fresco Showcase application** compiles correctly for OSS users.
This commit introduces a **feature enhancement** by making the **Android `ReactSwipeRefreshLayout` component** extendable within React Native. It modifies the `com.facebook.react.views.swiperefresh.ReactSwipeRefreshLayout` class to be `open`, allowing developers to **subclass and provide custom implementations** for the swipe-to-refresh functionality. This **API improvement** enables greater flexibility for Android-specific UI customizations, empowering developers to tailor the component's behavior beyond its default implementation.
This commit **changes the default behavior** of `ScrollView` components on **Android** when a `refreshControl` is present. It **enables nested scrolling by default** for these instances, specifically addressing an issue where the `ReactSwipeRefreshLayout` would incorrectly discard non-touch scroll actions, such as those from joysticks. This **bug fix** ensures proper handling of all scroll events, improving accessibility and consistency without impacting existing touch-based scrolling. The change affects the `render` method within `packages/react-native/Libraries/Components/ScrollView/ScrollView.js`, making the `nestedScrollEnabled` prop default to `true` under these conditions.
This commit **reverts** the previous change that forwarded `ACTION_SCROLL` events to children of `SwipeRefreshLayout` components within **React Native's Android implementation**. It performs a comprehensive **cleanup** by entirely removing the `passScrollToSwipeRefreshChild` feature flag and all its associated code. This **maintenance** action spans across **Java/Kotlin, C++, and JavaScript feature flag definitions** in `ReactAndroid` and `ReactCommon`, as the experiment that utilized this specific scroll event forwarding behavior is no longer needed. The change effectively removes an unused capability and its supporting infrastructure, simplifying the codebase.
This commit introduces a **bug fix** and **new capability** for the **Android `SwipeRefreshLayout` integration** in React Native. It resolves an issue where `ACTION_SCROLL` events originating from non-touch input devices, such as joysticks or scrollwheels, were not correctly forwarded to child views wrapped within a `SwipeRefreshLayout`. The fix involves overriding `dispatchGenericMotionEvent` in `ReactSwipeRefreshLayout.kt` to explicitly pass these events to the first child, thereby enabling proper nested scrolling and pull-to-refresh functionality. This enhancement, controlled by a new **feature flag** `passScrollToSwipeRefreshChild`, significantly improves **accessibility and usability** for Android users employing alternative input methods.
This commit **deprecates** the `setAccessibilityFocus` method within the **`AccessibilityInfo` API** in React Native's core library. This **API evolution** guides developers away from a function that is **unsupported in the new architecture**, recommending the use of `AccessibilityInfo.sendAccessibilityEvent` as the preferred alternative for setting accessibility focus. Additionally, it includes a **maintenance fix** by adding the `windowStateChange` event type to the `AccessibilityEventTypes` definition, improving type safety and completeness for accessibility event handling. This change ensures better compatibility with future architectural updates and provides clearer guidance for accessibility feature implementation.
This commit **fixes a rendering bug** in the **Android UI Manager** affecting **clipping masks on API levels below 27**. Previously, content could incorrectly draw outside its padding box due to an incomplete clipping mask application, especially when outlines were present. The **bug fix** in `BackgroundStyleApplicator.kt` inverts the clipping logic by applying a mask to the entire content boundary and using `DST_OUT` to correctly "delete" content outside the padding box. This ensures **accurate visual clipping** and **consistent UI presentation** for React Native components on older Android devices.
This commit introduces a **new example module** named `KeyEvents` to the **RNTester application**, specifically updating `RNTesterList.android.js`. This **enhancement** provides a dedicated test bench for easily logging and observing `onKeyDown` and `onKeyUp` events. It demonstrates how these keyboard events behave within the context of focusable views and text input fields, aiding in the development and debugging of **keyboard event handling** in React Native components, particularly on **Android**. This addition improves the testing infrastructure for **input event management**.
This commit **introduces new keyboard event support** for **Android views** by adding `onKeyDown` and `onKeyUp` event handlers, enabling JavaScript components to directly respond to keyboard input. It enhances the **React Native Android platform** by integrating these events through the `ReactRootView` and `ReactSurfaceView` via a new `JSKeyDispatcher`, ensuring proper global dispatching without conflicts. The event payload is designed to be **W3C-compliant**, providing `key`, `code`, and modifier properties, while intentionally omitting legacy fields for better compatibility. This **new feature** significantly improves **input handling capabilities** for Android applications and is controlled by the `enableKeyEvents` feature flag.
This commit performs a **maintenance fix** by correcting the `dateAdded` metadata for the `enableAndroidAntialiasedBorderRadiusClipping` feature flag. Specifically, it updates the date in `packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js` from an incorrect '2025-01-31' to the accurate '2025-11-14'. This ensures the **feature flag configuration** accurately reflects when the `enableAndroidAntialiasedBorderRadiusClipping` capability was introduced, which is crucial for internal tracking and tooling.
This commit **fixes a long-standing visual bug** on **Android API 28 and below** where views and images with border radii displayed **jagged edges** due to the platform's `clipPath` API lacking proper antialiasing. It introduces a new `clipToPaddingBoxWithAntiAliasing` method within the **`BackgroundStyleApplicator`** to explicitly draw transparent pixels outside the clipped region, ensuring smooth rendering. This **rendering improvement** is controlled by a new feature flag, `enableAndroidAntialiasedBorderRadiusClipping`, allowing for a controlled rollout and mitigating visual artifacts for users on older Android versions. The `ReactImageView` component is updated to leverage this new antialiasing capability, enhancing the overall visual fidelity of React Native applications.
This commit **enhances the visual rendering quality** of **React Native UI components on Android** by **enabling anti-aliasing** for the `Paint` object within the `OutlineDrawable`. This **feature improvement** ensures that outlines drawn by `OutlineDrawable` appear smoother and less pixelated, aligning with the existing anti-aliasing applied to `BorderDrawable`. The change specifically impacts the `OutlineDrawable.kt` file, leading to a **more polished user interface** for applications utilizing these drawing capabilities.
This commit introduces a **behavior adjustment** to **React Native's Android scroll views**, specifically `ReactHorizontalScrollView` and `ReactScrollView`, when **paging is enabled**. It modifies the post-touch runnable to treat `ACTION_SCROLL` events as having non-zero velocity, akin to momentum scrolling, even though they don't dispatch with a real velocity. This ensures that the `flingAndSnap` logic is correctly applied, causing the scroll view to consistently snap to the next or previous item in the direction of the scroll, rather than the nearest offset. The change **fixes** an issue where paged scrolling might not advance to the intended item, improving the predictability and user experience of paged lists.
This commit performs a **cleanup and refactoring** by **removing the `sweepActiveTouchOnChildNativeGesturesAndroid` feature flag** and all its associated infrastructure. As the flag's default value was previously aligned with the desired behavior, it became redundant. This change simplifies the **React Native feature flag system** across **Android (Kotlin), C++, and JavaScript layers**, eliminating unnecessary definitions, accessors, and checks. Specifically, the **Android touch event dispatching logic** in `JSTouchDispatcher.kt` is streamlined, making the "sweep active touch on child native gestures" behavior unconditional. This improves code maintainability by removing obsolete code.