Skip to main content

SwipeableCardStack Component

Core Props

Required Props

PropTypeDescription
dataT[]Array of items to be rendered as cards.
swipesSwipeDirection[]Array of swipe directions corresponding to each card's state.
renderCardRenderCard<T>Function to render each card. Receives props containing item data and animated position values.
keyExtractor(item: T) => stringFunction to extract a unique key for each card item.

Optional Props

Gesture Configuration

PropTypeDefaultDescription
allowedPanDirectionsAllowedPanDirection[]['left', 'right']Allowed directions for card panning i.e moving a card with gestures.
allowedSwipeDirectionsAllowedPanDirection[]['left', 'right']Allowed directions for card swiping i.e. validating a swipe.

Swipe Thresholds

PropTypeDefaultUnitDescription
horizontalTranslationValidationThresholdnumber0.3 * windowWidthpointsMinimum horizontal translation to trigger a swipe.
horizontalVelocityValidationThresholdnumber1000points/secondMinimum horizontal velocity to trigger a swipe.
verticalTranslationValidationThresholdnumber0.3 * windowHeightpointsMinimum vertical translation to trigger a swipe.
verticalVelocityValidationThresholdnumber1000points/secondMinimum vertical velocity to trigger a swipe.

Stack Configuration

PropTypeDefaultDescription
numberOfUnswipedCardsToRendernumber3Number of cards to render beyond the swiped cards.
horizontalRestingPositionnumberscreenWidthFinal resting position for horizontal swipes.
verticalRestingPositionnumberscreenHeightFinal resting position for vertical swipes.

Event Callbacks

PropTypeDescription
onSwipeEnded(item: T, direction: SwipeDirection) => voidCallback fired when a card swipe animation completes.

Styling

PropTypeDescription
styleStyleProp<ViewStyle>Style prop for the container View.
viewPropsOmit<ViewProps, 'style'>Additional props to pass to the container View.

Animation Configurations

All animations use either WithSpringConfig or WithTimingConfig from React Native Reanimated:

Swipe Animations

Animations used when a card is actively being swiped in a specific direction. Default: Timing animation

PropTypeDescription
unknownSwipeTimingConfigWithTimingConfigTiming animation when swipe direction is unknown.
unknownSwipeSpringConfigWithSpringConfigSpring animation when swipe direction is unknown.
leftSwipeTimingConfigWithTimingConfigTiming animation for left swipes.
leftSwipeSpringConfigWithSpringConfigSpring animation for left swipes.
rightSwipeTimingConfigWithTimingConfigTiming animation for right swipes.
rightSwipeSpringConfigWithSpringConfigSpring animation for right swipes.
topSwipeTimingConfigWithTimingConfigTiming animation for top swipes.
topSwipeSpringConfigWithSpringConfigSpring animation for top swipes.
bottomSwipeTimingConfigWithTimingConfigTiming animation for bottom swipes.
bottomSwipeSpringConfigWithSpringConfigSpring animation for bottom swipes.

Validation Animations

Triggered when a gesture ends and meets swipe threshold criteria. Default: Spring animation

PropTypeDescription
validationLeftSwipeTimingConfig(event) => WithTimingConfigTiming animation for validating left swipes.
validationLeftSwipeSpringConfig(event) => WithSpringConfigSpring animation for validating left swipes.
validationRightSwipeTimingConfig(event) => WithTimingConfigTiming animation for validating right swipes.
validationRightSwipeSpringConfig(event) => WithSpringConfigSpring animation for validating right swipes.
validationTopSwipeTimingConfig(event) => WithTimingConfigTiming animation for validating top swipes.
validationTopSwipeSpringConfig(event) => WithSpringConfigSpring animation for validating top swipes.
validationBottomSwipeTimingConfig(event) => WithTimingConfigTiming animation for validating bottom swipes.
validationBottomSwipeSpringConfig(event) => WithSpringConfigSpring animation for validating bottom swipes.

Reset Animations

Used when a card needs to return to its initial position. Default: Timing animation

PropTypeDescription
resetSwipeTimingConfigWithTimingConfigTiming animation for resetting to initial position.
resetSwipeSpringConfigWithSpringConfigSpring animation for resetting to initial position.

Cancel Animations

Triggered when a swipe gesture ends without meeting the threshold criteria. Default: Timing animation

PropTypeDescription
canceledHorizontalSwipeTimingConfig(event) => WithTimingConfigTiming animation when horizontal swipe is canceled.
canceledHorizontalSwipeSpringConfig(event) => WithSpringConfigSpring animation when horizontal swipe is canceled.
canceledVerticalSwipeTimingConfig(event) => WithTimingConfigTiming animation when vertical swipe is canceled.
canceledVerticalSwipeSpringConfig(event) => WithSpringConfigSpring animation when vertical swipe is canceled.