Nested Sheets
Stack multiple sheets with an automatic scale effect, similar to native iOS sheet stacking.
How to nest
Use BottomSheet.NestedRoot instead of BottomSheet.Root for the inner sheet. The parent sheet automatically scales down when the nested sheet opens.
<BottomSheet.Root open={open} onOpenChange={setOpen}>
<BottomSheet.Portal>
<BottomSheet.Overlay />
<BottomSheet.Content>
<BottomSheet.Handle />
<h2>Parent Sheet</h2>
{/* Nested sheet inside the parent */}
<BottomSheet.NestedRoot open={nestedOpen} onOpenChange={setNestedOpen}>
<BottomSheet.Trigger>Open Nested</BottomSheet.Trigger>
<BottomSheet.Portal>
<BottomSheet.Overlay />
<BottomSheet.Content>
<BottomSheet.Handle />
<h2>Nested Sheet</h2>
</BottomSheet.Content>
</BottomSheet.Portal>
</BottomSheet.NestedRoot>
</BottomSheet.Content>
</BottomSheet.Portal>
</BottomSheet.Root>Behavior
- The parent sheet scales down with a subtle animation when the child opens
- Closing the nested sheet restores the parent to its original size
NestedRootaccepts the same props asRoot- You can nest multiple levels deep
Tips
Keep nested sheets simple. Deep nesting (3+ levels) can feel confusing on mobile. If you need complex navigation, consider a full-screen modal or a separate route instead.