Skip to content

SwiftUI: use native text selection in thread messages #6089

Closed

Description

@saphid

Problem

Long-pressing message text in the native SwiftUI thread view opens a custom whole-message context menu and highlights the full message surface. Choosing Select text only toggles a hidden selection mode; a second long press still opens the same custom menu instead of immediately presenting native word selection and draggable handles.

Expected

Message text should use normal SwiftUI text selection: long-press the text, select a word or range, and adjust it with native selection handles. Whole-message copy should remain available through the native selection menu and VoiceOver action.

Reproduction

Reproduced on upstream/t3code/rebuild-mobile-app-swift at f98cab553 with a one-paragraph user message in the iOS Simulator.

Workflow

Implementation is being prepared on saphid/swiftui-text-selection; physical-device validation will be performed against personal/swiftui-approved before upstream merge preparation.

Activity

  1. saphid commented on Aug 11, 2026

    @saphid
    ContributorAuthor

    Implemented and preserved on upstream-ready branch saphid/swiftui-text-selection at 8d5695446d41. Focused simulator verification: 24 tests passed, 0 failed; native prose and fenced-code selection handles verified, with the standard edit menu plus Copy message. Final direct Claude Opus 5 high review exited 0 with no actionable findings. Disposable validation commit 0b8e253ef rebased as one commit atop personal/swiftui-approved; merged approved-branch verification passed 31 tests, 0 failed. Installed and launched personal Debug build 31 on Alex’s iPhone for explicit approval testing. Upstream preparation is intentionally paused pending that approval.

  2. locked and limited conversation to collaborators on Aug 15, 2026
  3. converted this issue into a discussion #7012 on Aug 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions