feat(scroll-area): add raw prop to disable Radix wrapper via asChild #8472
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR introduces an optional raw prop to the ScrollArea component, allowing developers to render the viewport’s children directly without the internal Radix wrapper
<div style="min-width: 100%; display: table;">
This solves layout issues where the default wrapper conflicts with flex or grid-based children (e.g., in responsive or dynamic UIs).
Motivation
By default, Radix UI’s ScrollArea.Viewport adds a structural wrapper that enforces a table display and min-width of 100%.
This behavior is fine for most cases, but it restricts flexibility for advanced layouts like flex rows or grids inside scrollable containers.
Developers have raised this issue in:
Adding this prop provides control while maintaining backward compatibility.
Changes
Example Usage
Before (default behavior)
❌ Wrapped by Radix → display: table; min-width: 100% breaks flex layout.
After (with raw)
✅ Renders children directly, preserving flex/grid behavior.
Checklist
Notes for Maintainers