feat: [DSRN] Added TextArea#1141
Conversation
📖 Storybook Preview |
📖 Storybook Preview |
📖 Storybook Preview |
There was a problem hiding this comment.
Overall this PR looks good, and the RN implementation/tests are in solid shape. I think the remaining issue is mostly sequencing and shared-API shape: PR #1043 should land first so this component can build on InputPropsShared, and then TextAreaPropsShared can be based on the shared input contract rather than inheriting from TextFieldPropsShared.
📖 Storybook Preview |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 1d9dd05. Configure here.
📖 Storybook Preview |
georgewrmarshall
left a comment
There was a problem hiding this comment.
The RN implementation is close, and the earlier dependency/focus-state issues look resolved, but I think there are still a few API/process issues to address before merge. This PR extends the React Native-specific onChangeText callback name further into @metamask/design-system-shared, appears to expose textVariant on TextField through shared-type inheritance even though the source extension component does not expose typography control, and manually updates packages/design-system-shared/CHANGELOG.md even though changelog updates are part of the release process. I think those should be cleaned up before this lands.
📖 Storybook Preview |
📖 Storybook Preview |
georgewrmarshall
left a comment
There was a problem hiding this comment.
The current revision looks ready to merge. The earlier shared-type/API concerns appear resolved: TextAreaPropsShared now builds on InputPropsShared, TextField no longer exposes textVariant through shared inheritance, and the changelog edit is gone. The RN implementation and targeted multiline/input tests also look solid from this pass.
📖 Storybook Preview |

Description
This PR adds TextArea to
@metamask/design-system-react-native: a multiline field built from the existing Input inside a styled Box (border, focus/error/disabled states, min height, transparent inner input). It aligns with the shared field model by introducingTextAreaPropsSharedin@metamask/design-system-shared(ADR-0004), mirroringTextFieldwithout start/end accessories.Input was updated so multiline mode works correctly: typography uses the text variant + font classes instead of single-line input metrics, the inner
TextInputreceivesmultiline, and the iOS-onlylineHeight: 0placeholder workaround is skipped when multiline so paragraph layout is not broken.Also included: README, Storybook stories, and unit tests for TextArea; Input tests were extended for multiline behavior.
Related issues
Fixes: https://consensyssoftware.atlassian.net/browse/DSYS-573
Manual testing steps
yarn storybook:iosoryarn storybook:android).Screenshots/Recordings
If applicable, add screenshots and/or recordings to visualize the before and after of your change.
Before
After
Simulator.Screen.Recording.-.iPhone.15.Pro.Max.-.2026-04-30.at.13.24.23.mov
Pre-merge author checklist
Pre-merge reviewer checklist
Note
Medium Risk
Updates shared
Inputstyling/placeholder behavior and introduces a new multilineTextArea, so regressions could affect existing input rendering across platforms (especially iOS/Android placeholder/layout differences). Scope is UI-focused with good test coverage, but touches a widely-used primitive.Overview
Adds a new
TextAreacomponent to@metamask/design-system-react-native: a multiline, bordered field wrapper aroundInputwith focus/error/disabled chrome,inputPropspassthrough, and separate refs for the root container vs. innerTextInput.Updates
Inputto properly support multiline usage by forwardingmultiline, using variant typography styles (instead of single-line metrics) for multiline, and scoping the iOSlineHeight: 0placeholder workaround to single-line only.Extends/updates unit tests and Storybook to cover the new
TextAreaand the updatedInputmultiline + iOS placeholder behaviors, and aligns shared prop contracts by introducingTextAreaPropsSharedand refactoringTextFieldPropsSharedto build onInputPropsShared(which now includesplaceholderandautoFocus).Reviewed by Cursor Bugbot for commit fb78795. Bugbot is set up for automated code reviews on this repo. Configure here.