Skip to content

ScrollView component parity for Fabric #11152

Closed
@jonthysell

Description

@jonthysell

This task captures the work to reach parity between Paper and Fabric for the native code for the <ScrollView> component.

ComponentView

  1. Create the ScrollViewComponentView (SVCV)
  2. Register the ComponentView in the ComponentViewRegistry

APIs

See latest spec at https://reactnative.dev/docs/scrollview.

ScrollView Props

39/58

API Platform RNW Paper RNW Fabric Notes
  • StickyHeaderComponent
JS JS
  • alwaysBounceHorizontal
iOS No No?
  • alwaysBounceVertical
iOS No No?
  • automaticallyAdjustContentInsets
iOS No No?
  • automaticallyAdjustKeyboardInsets
iOS No No?
  • automaticallyAdjustsScrollIndicatorInsets
iOS No No?
  • bounces
iOS No No?
  • bouncesZoom
iOS No No?
  • canCancelContentTouches
iOS No No?
  • centerContent
iOS No No?
  • contentContainerStyle
See View style See View style Supports View Style Props, Layout Props, Shadow Props
  • contentInset
iOS No No?
  • contentInsetAdjustmentBehavior
iOS No No?
  • contentOffset
No SVCV
  • decelerationRate
No No?
  • directionalLockEnabled
iOS No No?
  • disableIntervalMomentum
No No?
  • disableScrollViewPanResponder
JS JS
  • endFillColor
Android No No?
  • fadingEdgeLength
Android No No?
  • horizontal
SVM Pri 1
  • indicatorStyle
iOS No No?
  • invertStickyHeaders
JS JS
  • keyboardDismissMode
SVM Pri 1
  • keyboardShouldPersistTaps
JS JS
  • maintainVisibleContentPosition
iOS No No?
  • maximumZoomScale
iOS SVM Pri 1
  • minimumZoomScale
iOS SVM Pri 1
  • nestedScrollEnabled
Android No No?
  • onContentSizeChange
SVM Pri 1
  • onMomentumScrollBegin
SVM Pri 1 Event is topScrollBeginMomentum, Fabric: Code present but commented out?
  • onMomentumScrollEnd
SVM Pri 1 Event is topScrollEndMomentum, Fabric: Code present but commented out?
  • onScroll
SVM SVCV
  • onScrollBeginDrag
SVM Pri 1 Fabric: Code present but commented out?
  • onScrollEndDrag
SVM Pri 1 Fabric: Code present but commented out?
  • onScrollToTop
iOS No No?
  • overScrollMode
Android No No?
  • pagingEnabled
SVM Pri 1
  • persistentScrollbar
Android No No?
  • pinchGestureEnabled
iOS No No?
  • refreshControl
No No?
  • removeClippedSubviews
No No?
  • scrollEnabled
SVM Pri 1
  • scrollEventThrottle
iOS No No?
  • scrollIndicatorInsets
iOS No No?
  • scrollPerfTag
Android No No?
  • scrollToOverflowEnabled
iOS No No?
  • scrollsToTop
iOS No No?
  • showsHorizontalScrollIndicator
SVM Pri 1
  • showsVerticalScrollIndicator
SVM Pri 1
  • snapToAlignment
iOS SVM Pri 1
  • snapToEnd
SVM Pri 1
  • snapToInterval
SVM Pri 1
  • snapToOffsets
SVM Pri 1
  • snapToStart
SVM Pri 1
  • stickyHeaderHiddenOnScroll
JS JS Mapped to ScrollViewStickyHeader's hiddenOnScroll
  • stickyHeaderIndices
JS JS
  • zoomScale
iOS SVM Pri 1

ScrollView Methods

API Platform RNW Paper RNW Fabric Notes
  • flashScrollIndicators()
iOS No No?
  • scrollTo()
SVM SVCV Fabric: #11344
SVM SVCV Fabric: #12190
  • zoomToRect()
No No?

View Props

51/58

API Platform RNW Paper RNW Fabric Notes
  • accessibilityActions
FEVM Pri 2
  • accessibilityElementsHidden
iOS No No?
  • accessibilityHint
FEVM CBCV+CDAP Fabric: #12036
  • accessibilityIgnoresInvertColors
iOS No No?
  • accessibilityLabel
FEVM CBCV+CDAP Fabric: #11674
  • accessibilityLanguage
iOS No No?
  • accessibilityLiveRegion
Android FEVM Pri 2
  • accessibilityRole
FEVM CDAP Fabric: #11412
  • accessibilityState
FEVM CBCV+CDAP Fabric: Partial impl in #11674
  • accessibilityValue
FEVM CBCV+CDAP Fabric: #12287
  • accessibilityViewIsModal
iOS No No?
  • accessible
CVM+FEVM CBCV+CDAP Fabric: #11719
  • collapsable
Android No No?
  • focusable
Android CVM CBCV+CDAP Fabric: #11674
  • hitSlop
JS JS
  • importantForAccessibility
Android No No?
  • nativeID
No No?
  • needsOffscreenAlphaCompositing
No No?
  • nextFocusDown
Android No No?
  • nextFocusForward
Android No No?
  • nextFocusLeft
Android No No?
  • nextFocusRight
Android No No?
  • nextFocusUp
Android No No?
  • onAccessibilityAction
VMB Pri 2
  • onAccessibilityEscape
iOS No No?
  • onAccessibilityTap
No CDAP Fabric: #11874
  • onLayout
VMB Pri 1
  • onMagicTap
iOS No No?
  • onMoveShouldSetResponder
JS JS
  • onMoveShouldSetResponderCapture
JS JS
  • onResponderGrant
JS JS
  • onResponderMove
JS JS
  • onResponderReject
JS JS
  • onResponderRelease
JS JS
  • onResponderTerminate
JS JS
  • onResponderTerminationRequest
JS JS
  • onStartShouldSetResponder
JS JS
  • onStartShouldSetResponderCapture
JS JS
  • pointerEvents
VMB SVCV
  • removeClippedSubviews
No No?
  • renderToHardwareTextureAndroid
Android No No?
  • shouldRasterizeIOS
iOS No No?
  • style
See Below See Below Supports View Style Props, Layout Props, Shadow Props
  • testID
FEVM CDAP Fabric: #11412
  • accessibilityPosInSet
Windows FEVM Pri 2
  • accessibilitySetSize
Windows FEVM Pri 2
  • enableFocusRing
Windows JS CBCV+SVCV Fabric: #11323, Focus ring impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • keyDownEvents
Windows VMB CBCV Fabric: #12146
  • keyUpEvents
Windows VMB CBCV Fabric: #12146
  • onBlur
Windows VMB CBCV Paper: Event is registered, but maybe never fired?, Fabric: #11279
  • onFocus
Windows VMB CBCV Paper: Event is registered, but maybe never fired?, Fabric: #11279
  • onKeyDown
Windows VMB CBCV+CEH Fabric: #12146
  • onKeyDownCapture
Windows VMB Pri 1
  • onKeyUp
Windows VMB CBCV+CEH Fabric: #12146
  • onKeyUpCapture
Windows VMB Pri 1
  • onMouseEnter
Windows VMB CEH
  • onMouseLeave
Windows VMB CEH
  • tabIndex
Windows CVM Pri 1
  • tooltip
Windows FEVM Pri 1

View Style Props

28/29

API Platform RNW Paper RNW Fabric Notes
  • backfaceVisibility
No CBCV+SVCV Fabric: #12115 Impl in CBCV and CV must call updateTransformProps
  • backgroundColor
CVM SVCV
  • borderBottomColor
No CBCV+SVCV Fabric:#11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderBottomEndRadius
CVM CBCV+SVCV Fabric:#11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderBottomLeftRadius
CVM CBCV+SVCV Fabric:#11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderBottomRightRadius
CVM CBCV+SVCV Fabric:#11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderBottomStartRadius
CVM CBCV+SVCV Fabric:#11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderBottomWidth
CVM+NUIM CBCV+SVCV Fabric:#11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderColor
CVM CBCV+SVCV Fabric:#11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderEndColor
No CBCV+SVCV Fabric:#11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderEndWidth
CVM+NUIM CBCV+SVCV Fabric:#11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderLeftColor
No CBCV+SVCV Fabric:#11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderLeftWidth
CVM+NUIM CBCV+SVCV Fabric:#11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderRadius
CVM CBCV+SVCV Fabric:#11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderRightColor
No CBCV+SVCV Fabric:#11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderRightWidth
CVM+NUIM CBCV+SVCV Fabric:#11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderStartColor
No CBCV+SVCV Fabric:#11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderStartWidth
CVM+NUIM CBCV+SVCV Fabric:#11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
No CBCV Fabric: Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderTopColor
No CBCV+SVCV Fabric:#11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderTopEndRadius
CVM CBCV+SVCV Fabric:#11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderTopLeftRadius
CVM CBCV+SVCV Fabric:#11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderTopRightRadius
CVM CBCV+SVCV Fabric:#11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderTopStartRadius
CVM CBCV+SVCV Fabric:#11323, Border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderTopWidth
CVM+NUIM CBCV+SVCV Fabric:#11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderWidth
CVM+NUIM CBCV+SVCV Fabric:#11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • elevation
Android No No?
  • opacity
FEVM Pri 1
  • transform
FEVM CBCV+SVCV Fabric: #12115 Impl in CBCV and CV must call updateTransformProps

Layout Props

51/53

API Platform RNW Paper RNW Fabric Notes
  • alignContent
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • alignItems
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • alignSelf
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • aspectRatio
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • borderBottomWidth
CVM+NUIM CBCV+SVCV Fabric:#11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderEndWidth
CVM+NUIM CBCV+SVCV Fabric:#11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderLeftWidth
CVM+NUIM CBCV+SVCV Fabric:#11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderRightWidth
CVM+NUIM CBCV+SVCV Fabric:#11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderStartWidth
CVM+NUIM CBCV+SVCV Fabric:#11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderTopWidth
CVM+NUIM CBCV+SVCV Fabric:#11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • borderWidth
CVM+NUIM CBCV+SVCV Fabric:#11323, RN Core resolves LayoutMetrics, but border impl in CBCV and CV must call updateBorderProps / updateBorderLayoutMetrics
  • bottom
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • direction
FEVM+NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • display
FEVM+NUIM SVCV
  • end
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • flex
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • flexBasis
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • flexDirection
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • flexGrow
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • flexShrink
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • flexWrap
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • height
VMB+NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • justifyContent
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • left
VMB+NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • margin
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • marginBottom
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • marginEnd
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • marginHorizontal
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • marginLeft
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • marginRight
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • marginStart
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • marginTop
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • marginVertical
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • maxHeight
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • maxWidth
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • minHeight
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • minWidth
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • overflow
NUIM Pri 1
  • padding
CVM+NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • paddingBottom
CVM+NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • paddingEnd
CVM+NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • paddingHorizontal
CVM+NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • paddingLeft
CVM+NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • paddingRight
CVM+NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • paddingStart
CVM+NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • paddingTop
CVM+NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • paddingVertical
CVM+NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • position
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • right
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • start
NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • top
VMB+NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • width
VMB+NUIM CBCV+SVCV Fabric: RN Core resolves LayoutMetrics
  • zIndex
FEVM Pri 1

Shadow Props

4/4

API Platform RNW Paper RNW Fabric Notes
  • shadowColor
No CBCV+SVCV Fabric: #12108, Shadow props impl in CBCV and CV must call updateShadowProps
  • shadowOffset
iOS No CBCV+SVCV Fabric: #12108, Shadow props impl in CBCV and CV must call updateShadowProps
  • shadowOpacity
iOS No CBCV+SVCV Fabric: #12108, Shadow props impl in CBCV and CV must call updateShadowProps
  • shadowRadius
iOS No CBCV+SVCV Fabric: #12108, Shadow props impl in CBCV and CV must call updateShadowProps

Native Component Methods

2/2

API Platform RNW Paper RNW Fabric Notes
  • blur()
Windows VMB CBCV Fabric: #11323
  • focus()
Windows VMB CBCV Fabric: #11323

Glossary

See the Glossary to decode the abbreviations above and/or the RNW Fabric Inventory.xlsx.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions