Skip to content

FB23671377: UIMenu element subtitles appear only after the menu presentation completes — iOS 26.5 Simulator & iPadOS 27.0 beta (24A5370h) #818

Description

@zalexej

Submission Date

2026-07-10

Status

Open

Area

UIKit

Operating System Version

iOS 26/iOS 27 beta

Type

Incorrect/Unexpected Behavior

Description

When a UIMenu is presented (UIButton.showsMenuAsPrimaryAction + menu, or UIContextMenuInteraction),
the subtitles of ALL menu elements — leaf UIActions and child UIMenus (submenu rows) alike — are not
visible on the first frame. Rows appear at their final two-line height with empty space reserved for
the subtitle; titles, images and submenu chevrons are visible immediately; subtitles become visible
only after the presentation animation settles. With Simulator Slow Animations the delay stretches
proportionally, i.e. the reveal is tied to the presentation choreography, not to a timer.
This is not an app-side data problem: subtitle values are set before presentation, and (verified
with lldb) UIKit applies them to the row cells before the menu is visible — see technical evidence.
ENVIRONMENT MATRIX (same reproducer binary)

  • iOS 26.5 Simulator, iPad ................................. subtitles appear late
  • iOS 26.5 Simulator, iPhone ............................... subtitles appear late
  • iOS 18.5 Simulator, iPhone ............................... subtitles appear on first frame
  • iPhone hardware, iOS 26.5 ................................ subtitles appear on first frame
  • iPad (10th gen) hardware, iPadOS 27.0 beta (24A5370h) .... subtitles appear late
    The identical matrix is observed with a full production app (RoboForm for iOS, deployment target
    15.0, built with the iOS 26.5 SDK). The presence of the issue on physical hardware running an
    iPadOS 27 beta means the deferred reveal is not Simulator-only and may ship to end users with
    iOS 27. (The minimal reproducer has not yet been run on that iPad; the production app reproduces
    there.)
    STEPS TO REPRODUCE
  1. Create a UIMenu containing (a) a child UIMenu with subtitle set and 3 child UIActions, and
    (b) a leaf UIAction with subtitle set. See the attached single-file reproducer.
  2. Assign it to UIButton.menu, set showsMenuAsPrimaryAction = true.
  3. Run on an iOS 26.5 Simulator and tap the button (Debug > Slow Animations makes it obvious).
    EXPECTED
    Subtitles are visible on the first frame of the menu together with titles/images/chevrons
    (as on iOS 18.5, and as on iPhone hardware running iOS 26.5).
    ACTUAL
    Rows are presented with empty reserved subtitle space; subtitles appear only after the presentation
    animation completes.
    NOTES
  • Affects all subtitle-bearing rows equally (leaf actions and submenu rows).
  • Not related to menu height: reproduces with short, non-scrolling menus.
  • Reproduces with both UIButton.menu and UIContextMenuConfiguration/actionProvider paths.
  • Tapping a submenu row while subtitles are still hidden reveals that row's subtitle immediately,
    ahead of the other rows — the reveal is per-row and user interaction forces it to complete.
    Consistent with a per-row reveal animation/effect that is slow to finish in the Simulator and on
    iPadOS 27 beta hardware, not with missing data.
  • Regression vs iOS 18.5 Simulator; not reproducible on iPhone hardware running iOS 26.5.
    TECHNICAL EVIDENCE (lldb, iOS 26.5 Simulator)
    Subtitles are applied to the cells before the menu becomes visible, inside the presentation sizing
    pass, and never re-applied afterwards:
    0 UIKitCore -[_UIContextMenuCellContentView setSubtitle:]
    1 UIKitCore -[_UIContextMenuListView _configureCell:inCollectionView:atIndexPath:forElement:section:size:]
    ...
    11 UIKitCore -[UICollectionView layoutSubviews]
    17 UIKitCore -[UIView(Hierarchy) layoutBelowIfNeeded]
    20 UIKitCore -[_UIContextMenuListView preferredContentSizeWithinContainerSize:]
    21 UIKitCore -[_UIContextMenuView preferredContentSizeWithinContainerSize:]
    22 UIKitCore -[_UIContextMenuUIController _layoutWithUpdatedAttachment:concealedMenu:]
    27 UIKitCore -[_UIContextMenuPresentation prepareToPresent]
    29 UIKitCore -[_UIRapidClickPresentationAssistant _performPresentationAnimationsFromViewController:]
    34 UIKitCore -[_UIClickPresentationInteraction _performPresentation]
    The label receives its text via -[UILabel setText:] wrapped in +[UIView performWithoutAnimation:]
    within the same pass. On the first frame the label already contains the subtitle text at its final
    frame; only its visibility is deferred.
    ATTACHMENTS
  • Minimal reproducible project (single ViewController.swift)
  • Screen recordings: iOS 26.5 Simulator (delayed), iOS 18.5 Simulator (instant)

Keywords

UIMenu subtitle delayed

Prerequisites

  • The title follows the format FB<number>: <title>
  • I will keep this issue updated with Apple's responses

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions