From e1685566df41fc6ff6814b68de4fbf237851221a Mon Sep 17 00:00:00 2001 From: Andrea Verrecchia Date: Thu, 28 May 2026 20:54:35 +0200 Subject: [PATCH] feat(ios): add subtitle support for UIMenu header button submenus. UIMenuElement.subtitle is a writable property available since iOS 15. This patch reads the 'subtitle' key from the menu item dictionary and assigns it after UIMenu creation, mirroring the existing subtitle support already present for UIAction items. Closes: adds subtitle to HeaderBarButtonItemSubmenu TypeScript type. --- ios/RNSBarButtonItem.mm | 15 ++++++++++----- src/types.tsx | 1 + 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/ios/RNSBarButtonItem.mm b/ios/RNSBarButtonItem.mm index 0eb1f09dee..9204d9864f 100644 --- a/ios/RNSBarButtonItem.mm +++ b/ios/RNSBarButtonItem.mm @@ -188,11 +188,16 @@ + (UIMenu *)initUIMenuWithDict:(NSDictionary *)dict image = img; }]; - return [UIMenu menuWithTitle:dict[@"title"] - image:image - identifier:nil - options:RNSMakeUIMenuOptionsFromConfig(dict) - children:elements]; + UIMenu *menu = [UIMenu menuWithTitle:dict[@"title"] + image:image + identifier:nil + options:RNSMakeUIMenuOptionsFromConfig(dict) + children:elements]; + NSString *subtitle = dict[@"subtitle"]; + if (subtitle != nil && @available(iOS 15.0, *)) { + menu.subtitle = subtitle; + } + return menu; } + (UIAction *)createActionItemFromConfig:(NSDictionary *)dict diff --git a/src/types.tsx b/src/types.tsx index 76a83f3acb..9dbb91835f 100644 --- a/src/types.tsx +++ b/src/types.tsx @@ -1251,6 +1251,7 @@ export interface HeaderBarButtonItemMenuAction { export interface HeaderBarButtonItemSubmenu { type: 'submenu'; title?: string | undefined; + subtitle?: string | undefined; icon?: PlatformIconIOS | undefined; items: HeaderBarButtonItemWithMenu['menu']['items']; displayInline?: boolean | undefined;