The addition of UITabAccessory in iOS 26 is welcome. It does, however, create a problem as far as backward compatibility is concerned. How do you present the new accessory view on older versions of iOS?
This backward compatibility is especially important for Triode. A lot of folks turn an older device into a dedicated radio player. I have an old iPad in the kitchen, for example.
So what do you do on the other side of the availability check where you set UITabBarController.bottomAccessory
?
You’ll need to create two subclasses: one for UITabBarController
and another as base class for all the view controllers you add as tabs (mine is creatively named as TabViewController
).
In the UITabBarController
subclass, you’ll do the check for availability in viewDidLoad
and for versions older than iOS 26, you just add the accessory view to the tab controller’s view hierarchy using view.addSubview(accessoryView)
. You’ll also style the accessoryView
as needed (e.g. adding a backgroundColor
and cornerRadius
). The same gesture recognizer is the attached to the accessoryView
regardless of how you add it to the tab bar.
Then, in viewDidLayoutSubviews
, you use tabBar.frame
to position the accessoryView
relative to the tab controls.
The other piece of the puzzle is doing the automatic inset adjustments on the tab controller’s views. In your common subclass (e.g. TabViewController
), you’ll implement viewDidLayoutSubviews
. On iOS 18 and earlier, you can check if the view or its first subview is an instance of UIScrollView
. If it is, set contentInsetAdjustmentBehavior
to .always
and make new UIEdgeInsets
to match the metrics you used in your tab bar controller.
(Side note: if you are having problems with the bottomAccessory
on iOS 26 not animating as you scroll, make sure that your UIScrollView
is the first subview. If something like a search field is the first view, it won’t work correctly.)
On iOS 26, Triode’s tab bar looks like this:

And thanks to the work above, folks on older systems can use the same accessory view:

You don’t get the fancy animations and effects, but folks on older devices will appreciate having the same capabilities. And better text contrast ;-)