Skip to main content
Version: Unreleased

Configuration

Configuration props available for TrueSheet. Extends ViewProps.

<TrueSheet
ref={sheet}
detents={['auto', 0.8, 1]}
backgroundColor="#696969"
// ...
>
<View />
</TrueSheet>

ref​

We use ref to reference our sheet and call the imperative methods. Learn more about refs here.

detents​

Array of detents you want the sheet to support. See this guide for example.

TypeDefaultπŸŽπŸ€–πŸŒ
SheetDetent[][0.5, 1]βœ…βœ…βœ…
info

A sheet can only support up to 3 detents only! AKA collapsed, half-expanded, and expanded.

tip

It's recommended to sort detents from smallest to largest.

name​

The name to reference this sheet. It has to be unique. You can then present this sheet globally using its name. See this guide for example.

TypeDefaultπŸŽπŸ€–πŸŒ
stringβœ…βœ…βœ…

backgroundColor​

The sheet's background color. Uses the system default when not provided.

TypeDefaultπŸŽπŸ€–πŸŒ
ColorValuesystem defaultβœ…βœ…βœ…
info

When not provided, iOS 26+ uses the default Liquid Glass effect, while iOS 18 and below uses the system background color. Android uses Material Design 3's colorSurfaceContainerLow which automatically adapts to light/dark mode.

On iOS 26.1+, setting this prop will override the default Liquid Glass effect.

backgroundBlur​

The blur effect style on iOS. When set, applies a blur effect over the backgroundColor. Example: "light", "dark", etc.

TypeDefaultπŸŽπŸ€–πŸŒ
BackgroundBlurβœ…
info

On iOS 26.1+, setting this prop will override the default Liquid Glass effect.

blurOptions​

Options for customizing the blur effect. Only applies when backgroundBlur is set.

TypeDefaultπŸŽπŸ€–πŸŒ
BlurOptionsβœ…
<TrueSheet
backgroundBlur="dark"
blurOptions={{
intensity: 80,
interaction: false,
}}
>
<View />
</TrueSheet>

cornerRadius​

The sheet corner radius.

TypeDefaultπŸŽπŸ€–πŸŒ
numbersystem defaultβœ…βœ…βœ…
info

When not provided, iOS uses the device's native corner radius automatically, while Android defaults to 16 (following Material Design 3 guidelines).

elevation​

The elevation (shadow depth) of the sheet.

TypeDefaultπŸŽπŸ€–πŸŒ
number4βœ…βœ…

maxContentHeight​

The absolute maximum height of the sheet content, regardless of detents.

TypeDefaultπŸŽπŸ€–πŸŒ
numberβœ…βœ…βœ…

maxContentWidth​

The maximum width of the sheet content.

TypeDefaultπŸŽπŸ€–πŸŒ
numberβœ…βœ…βœ…
info

On Android and Web, the sheet defaults to a maximum width of 640dp. Setting this prop overrides that default. On iOS, the sheet uses the system default width.

note

This prop is ignored on phones in portrait orientation β€” the sheet always spans the full width.

anchor​

Anchors the sheet to the specified horizontal edge.

TypeDefaultπŸŽπŸ€–πŸŒ
'left' | 'center' | 'right''center'βœ…βœ…βœ…
info

On iOS, the sheet uses sourceView to control horizontal positioning. System-defined margins prevent fully flush edge attachment.

note

This prop is ignored on phones in portrait orientation.

anchorOffset​

The offset from the screen edge. Only applies when anchor is 'left' or 'right'.

TypeDefaultπŸŽπŸ€–πŸŒ
number16βœ…βœ…

dismissible​

If set to false, the sheet will prevent interactive dismissal via dragging or clicking outside of it.

TypeDefaultπŸŽπŸ€–πŸŒ
booleantrueβœ…βœ…βœ…

draggable​

If set to false, the sheet will disable dragging to resize. The sheet can only be resized programmatically using the resize method.

TypeDefaultπŸŽπŸ€–πŸŒ
booleantrueβœ…βœ…βœ…
info

When draggable is false, the grabber is automatically hidden.

dimmed​

Specify whether the sheet background is dimmed. Set to false to allow interaction with the background components.

TypeDefaultπŸŽπŸ€–πŸŒ
booleantrueβœ…βœ…βœ…

dimmedDetentIndex​

The detent index that the sheet should start to dim the background.

TypeDefaultπŸŽπŸ€–πŸŒ
number0βœ…βœ…βœ…
info

This is ignored if dimmed is set to false.

initialDetentIndex​

Initially present the sheet, after mounting, at a given detent index.

TypeDefaultπŸŽπŸ€–πŸŒ
number-1βœ…βœ…βœ…

initialDetentAnimated​

Specify whether the sheet should animate after mounting. Used with initialDetentIndex.

TypeDefaultπŸŽπŸ€–πŸŒ
booleantrueβœ…βœ…βœ…

grabber​

Shows a native grabber (or drag handle) on the sheet.

TypeDefaultπŸŽπŸ€–πŸŒ
booleantrueβœ…βœ…βœ…
info

iOS uses the native UISheetPresentationController grabber by default, while Android renders a native view following Material Design 3 specifications (32x4dp, centered, with the standard drag handle color).

When grabberOptions is provided, iOS uses a custom grabber view instead of the system default.

grabberOptions​

Options for customizing the grabber appearance. Only applies when grabber is true.

TypeDefaultπŸŽπŸ€–πŸŒ
GrabberOptionsβœ…βœ…
<TrueSheet
grabber
grabberOptions={{
width: 48,
height: 6,
topMargin: 10,
color: '#FF0000',
}}
>
<View />
</TrueSheet>
info

On iOS, when grabberOptions is not provided, the native system grabber is used. When any option is provided, a custom grabber view with vibrancy effect is rendered instead.

accessibilityOptions​

Options for customizing (e.g. localizing) the accessibility strings announced by screen readers.

TypeDefaultπŸŽπŸ€–πŸŒ
AccessibilityOptionsβœ…βœ…βœ…
<TrueSheet
accessibilityOptions={{
grabberLabel: 'PoignΓ©e de dΓ©placement',
expandedValue: 'DΓ©veloppΓ©',
collapsedValue: 'RΓ©duit',
}}
>
<View />
</TrueSheet>
info

On iOS, the grabber strings only apply when grabberOptions is provided. Without it, iOS uses the system grabber which is already localized by the system.

A component that is fixed at the top of the sheet content. Useful for search bars, titles, or other header content. The header height is automatically accounted for in layout calculations. Accepts a functional Component or ReactElement. See this guide for example.

TypeDefaultπŸŽπŸ€–πŸŒ
ComponentType<...> | ReactElementβœ…βœ…βœ…

headerStyle​

Style for the header container.

TypeDefaultπŸŽπŸ€–πŸŒ
StyleProp<ViewStyle>βœ…βœ…βœ…

A component that floats at the bottom of the sheet. Accepts a functional Component or ReactElement.

TypeDefaultπŸŽπŸ€–πŸŒ
ComponentType<...> | ReactElementβœ…βœ…βœ…

footerStyle​

Style for the footer container.

TypeDefaultπŸŽπŸ€–πŸŒ
StyleProp<ViewStyle>βœ…βœ…βœ…

footerOptions​

Options for customizing footer behavior.

TypeDefaultπŸŽπŸ€–πŸŒ
FooterOptionsβœ…βœ…

scrollable​

On iOS, automatically pins ScrollView or FlatList to fit within the sheet's available space. When enabled, the ScrollView's top edge will be pinned below any top sibling views, and its left, right, and bottom edges will be pinned to the container. See this guide for example.

On Android, it ensures the scroll view fills the available sheet space and automatically manages nested scrolling. Any nestedScrollEnabled prop on your ScrollView or FlatList is ignored when scrollable is enabled.

TypeDefaultπŸŽπŸ€–πŸŒ
booleanfalseβœ…βœ…
warning

The auto detent is not supported with scrollable. Use fixed fractional detents (e.g., 0.5, 0.8, 1) instead.

scrollableOptions​

Options for customizing scrollable behavior. Only applies when scrollable is true.

TypeDefaultπŸŽπŸ€–πŸŒ
ScrollableOptionsβœ…βœ…

presentation​

Controls the sheet presentation style on iPad and web (landscape/tablet).

  • 'page': bottom-attached page sheet (full or readable width).
  • 'form': centered floating form sheet (default form-sheet width).

'form' is absolute β€” maxContentWidth is ignored when set.

TypeDefaultπŸŽπŸ€–πŸŒ
'page' | 'form''page'17+βœ…

insetAdjustment​

Controls how the bottom safe area inset affects detent heights.

TypeDefaultπŸŽπŸ€–πŸŒ
InsetAdjustment"automatic"βœ…βœ…

detached​

Renders the sheet as a detached floating card, not attached to the bottom edge.

TypeDefaultπŸŽπŸ€–πŸŒ
booleanfalseβœ…

detachedOffset​

The offset from the bottom edge when detached is enabled.

TypeDefaultπŸŽπŸ€–πŸŒ
number16βœ…

style​

The sheet's container style override.

TypeDefaultπŸŽπŸ€–πŸŒ
StyleProp<ViewStyle>βœ…βœ…βœ