OK UIKit folks, here's one for you. How am I supposed to add an iOS 26 inspector to the split view when my root controller is the modern UITabBarController and I don't have direct access to the split view controller? Is there API for this or do I have to walk the hierarchy and have a child VC invoke it?
Also, if I wanted to have custom UI in my sidebar, like say the Reminders-style quad, I guess I'm SOL with this UITabBarController API? Is there a way to vend a custom sidebar controller instead of the automatic one?
@stroughtonsmith This is unfortunately not supported with UITabSidebar. We do have header/footerContentConfiguration APIs, as well as APIs for customizing the UIContentConfiguration of the individual sidebar items, but not one that can achieve this grid layout.
@andyl that's a shame; now that I want to adopt the modern tab controller in a real app I'm finding a bunch of little ways it's just not quite/customizable enough to achieve the UI I was planning on shipping. Little things like not being able to have different labels for sidebar vs tab bar, or turn off collapsibility on sidebar sections, or having specific tab items that only show in sidebar but not tab bar, etc. I'm not at the stage of recreating it with a custom control yet, but getting there
@stroughtonsmith @andyl “different labels, having specific tab items that only show in the sidebar but not tab bar" is this really not possible? doesn't files.app do this? (it has a tab called browse that shows as “on this ipad" when in sidebar mode)
@Joekw @andyl I'm still working my way through the APIs, but it seems to me that the sidebar 'must' show everything, whereas you can customize the available identifiers for the compact mode. But I want to customize both. I expect I will have to monitor size class changes and inserts/remove tabs dynamically instead
@stroughtonsmith @andyl you've inspired me to check how my apps feel with the modern tab bar. maybe i'm being dumb but i don't understand how the UITabGroup is meant to work: it seems like every item returns the controller from the group provider instead of the actual tab controller? if i dont provide a group controller then it just crashes about the root tab needing a controller
@Joekw @andyl this confused me too — the tab group is a list of sidebar items that resolves to a single fallback view controller from the minimized tab bar itself. E.g. a list of folders in the sidebar would compact down to an 'all folders' view controller of your choosing. You need to provide both the tabs and the fallback
@stroughtonsmith @andyl but shouldn't tapping the item in the sidebar give the item VC? i can't seem to get it to ever show the actual tab VC, it always gives me the fallback
@Joekw @stroughtonsmith @andyl did you solve this somehow? I'm currently adopting the new UITabBarController and I'm facing the exact same issue. It always opens the VC for the "group", but never the ones I specify for the sub-items of the group.
@virtualrapha have you set the managingNavigationController to UINavigationController() ?
@Joekw No, I read sth about it in this thread, but didn't understand why I would need to do that. Documentation says nothing about it either (why would it, right?)

@virtualrapha i did suggest that it should be added 🥲

https://mastodon.social/@Joekw/114728146303536835

@Joekw It works now, thank you! And only now I understand the behavior of this component. Man, Apple's docs are so poor these days...
@stroughtonsmith @andyl it really does seem like the compact tab bar just ignores the preferredPlacement = .sidebarOnly property. good stuff. (here Discover is set to .sidebarOnly)
@Joekw @andyl but there is a property to set the visible tab identifiers for compact mode, too
@stroughtonsmith @andyl huh.. right, back to the posture concept. sidebar and tab bar (where preferredPlacement takes effect) and compact tab bar which can be defined separately.
@stroughtonsmith @andyl this API is actually driving me crazy. if you have a 5 item tab bar and add a tab group with .sidebarOnly and don't include it in the compactTabIdentifiers, it still creates a more item 😭
@Joekw @andyl 😅 I defer to the experts. I'm also struggling
@Joekw @stroughtonsmith @andyl I think TabView / UITabVC is woefully under-equipped for the complexities of modern app navigation

@BenRiceM @Joekw @stroughtonsmith There are 2 videos that go into detail on how this works:

1. From WWDC24 that explains these new APIs: https://developer.apple.com/videos/play/wwdc2024/10147
2. From this year, which explains managingNavigationController to automatically manage the hierarchy and selection of a tab group as a navigation stack: https://developer.apple.com/videos/play/wwdc2025/282

There are a lot of details that may not be immediately obvious, so let me know if you have questions.

Elevate your tab and sidebar experience in iPadOS - WWDC24 - Videos - Apple Developer

iPadOS 18 introduces a new navigation system that gives people the flexibility to choose between using a tab bar or sidebar. The newly...

Apple Developer
@BenRiceM @Joekw @stroughtonsmith A lot of these APIs are just a year old and we’re definitely still evolving and improving them. If there’s anything that you believe is important that isn’t yet possible, file an ER through Feedback Assistant and let me know! We want to make the best experience possible here, and have spent a lot of time making this better.

@Joekw @stroughtonsmith Tab placements are respected where they’re supported (where the sidebar is available). In this case, that sounds like a bug and we shouldn’t be creating a More item.

That being said, 5 or less tab items (including root groups) is recommended for apps. With nested groups and sidebarAppearance, you can display groups more inline with your expectation without have additional top level groups if the section is connected to another root tab.

@andyl @stroughtonsmith perhaps i'm doing something wrong (since music.app uses 5 tabs in compact), but as soon as i add the tab group, it creates the more tab: https://gist.github.com/joekw/84805544c55b5c5303ff0a5cbd985a9c

going to 4 compact tabs "fixes it" but i would like to have 5 (including search).

i'll probably end up tracking the size class and removing the tab group when compact to work around this.

UITabBar - 5 tabs + sidebar only tab group = more :(

UITabBar - 5 tabs + sidebar only tab group = more :( - SceneDelegate.swift

Gist

@Joekw @stroughtonsmith I guess the question is if the group hierarchically fits with another root tab (I’d assume it does because how will users access that content in compact).

If so, you could structure it as:

TabGroup (appearance=inline)
- Root Tab
- Section (appearance=rootSection)

Structuring them relatively to the parent will also help take care of adapting between compact and regular.

Beyond that though, can you file a feedback for the issue you see?

@andyl @stroughtonsmith oh wow that's actually works great! it kinda feels like magic how it automatically moves from side bar item to tab bar item and puts it on the correct stack in the library tab

@Joekw @stroughtonsmith Magic is the goal! We wanted to build an easier way to build tab-based apps that adapt well across various platforms and scene sizes.

With managingNavigationController, it removes a lot of the custom hierarchy management for adaptivity from apps so you can focus on building everything else in your app. 🙂

@andyl @stroughtonsmith the use of managingNavigationController was definitely the secret i was missing this morning. it might be helpful to others to add something about that here: https://developer.apple.com/documentation/UIKit/elevating-your-ipad-app-with-a-tab-bar-and-sidebar
Elevating your iPad app with a tab bar and sidebar | Apple Developer Documentation

Provide a compact, ergonomic tab bar for quick access to key parts of your app, and a sidebar for in-depth navigation.

Apple Developer Documentation