Skip to content

TextInput (read-only) nested Text does not support list-style indentation via paddingLeft / missing textIndent #59355

Closed

Description

@Shawn1

Description

Read-only multiline TextInput with nested Text children does not apply list-style indentation the same way as a View + Text layout. paddingLeft on nested Text inside TextInput does not indent wrapped list body lines; there is no TextStyle equivalent to CSS text-indent for hanging/first-line indent in this text flow.

Context: On iOS, Text with selectable={true} does not expose selection handles (copy-only). We use editable={false} TextInput as a single text container with nested styled Text (Markdown-like content). List items previously used View (flexDirection: 'row') + bullet Text + body Text with paddingLeft, which worked. After moving list content into the TextInput text flow, paddingLeft on inner Text no longer produces visible block/list indentation (especially on line wrap). margin on nested Text inside TextInput is also unreliable in our testing.

Expected: Nested Text inside read-only TextInput can indent list/block body text (including wrapped lines), or documented supported API/pattern.

Actual: List body aligns with the bullet; paddingLeft on nested Text has no useful indent effect compared to the View-based layout.

Steps to reproduce

  1. Render a multiline TextInput with editable={false} and nested Text children (see reproducer).
  2. Render list-like content: bullet character in one Text node, list body in a sibling nested Text with paddingLeft: 24 (or paddingStart).
  3. Use long copy so the list body wraps to a second line.
  4. Compare with the same strings in a View row: flexDirection 'row', bullet Text, body Text with flex: 1 and paddingLeft: 24.
  5. Observe: View layout indents wrapped lines; TextInput text flow does not.

React Native Version

0.73.7

Affected Platforms

Runtime - Android, Runtime - iOS

Output of npx @react-native-community/cli info

(Pending — will paste `npx @react-native-community/cli info` from our MariBank RN 0.73 dev host before submit.)

Stacktrace or Logs

N/A — visual/layout issue, no crash, no native/JS stack trace.

Optional JS repro snippet (inline in app):

<TextInput editable={false} multiline>
  <Text>{'• '}</Text>
  <Text style={{ paddingLeft: 24 }}>
    {'First line of list item that wraps to a second line and should stay indented.'}
  </Text>
</TextInput>

vs.

<View style={{ flexDirection: 'row' }}>
  <Text>{'• '}</Text>
  <Text style={{ flex: 1, paddingLeft: 24 }}>
    {'Same content — indentation looks correct.'}
  </Text>
</View>

MANDATORY Reproducer

https://github.com/<YOUR_GITHUB_USER>/reproducer-rn-textinput-list-indent (TODO: minimal repo — single screen, RN 0.73.x, two blocks View vs TextInput as above + screenshot.)

Screenshots and Videos

No response

Activity

  1. react-native-bot commented on Oct 22, 2026

    @react-native-bot
    Collaborator

    Caution

    Too old version: It looks like your issue or the example you provided uses a Too Old Version of React Native.

    Due to the number of issues we receive, we're currently only accepting new issues against one of the supported versions. Please upgrade to latest and verify if the issue persists (alternatively, create a new project and repro the issue in it). If you cannot upgrade, please open your issue on StackOverflow to get further community support.

  2. react-native-bot commented on Oct 22, 2026

    @react-native-bot
    Collaborator

    Caution

    Too old version: It looks like your issue or the example you provided uses a Too Old Version of React Native.

    Due to the number of issues we receive, we're currently only accepting new issues against one of the supported versions. Please upgrade to latest and verify if the issue persists (alternatively, create a new project and repro the issue in it). If you cannot upgrade, please open your issue on StackOverflow to get further community support.

  3. react-native-bot commented on Oct 22, 2026

    @react-native-bot
    Collaborator

    Warning

    Missing reproducer: We could not detect a reproducible example in your issue report. Reproducers are mandatory and we can accept only one of those as a valid reproducer:


    You can read more about about it on our website: How to report a bug.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions