How to get an anchored action sheet without the popover arrow on iOS 26?

I see in iPhone built-in apps that action sheets are presented as popovers without arrows over their originating views.

Here is an example in Messages and Shortcuts apps.

In WWDC 2025 session "Build a UIKit app with the new design", the speaker explains that all you have to do is to configurate the popover like we do for iPad.

Here is the relevant transcript:

14:33 ActionSheets on iPad are anchored to their source views. Starting in iOS 26, they behave the same on iPhone, appearing directly over the originating view.

14:46 On the alertController, make sure to set the sourceItem or the sourceView on popoverPresentationController, regardless of which device it’s displayed on. Assigning the source view automatically applies the new transitions to action sheets as well! Action sheets presented inline don’t have a cancel button because the cancel action is implicit by tapping anywhere else. If you don’t specify a source, the action sheet will be centered, and you will have a cancel button. iOS 26 provides a new, more integrated search experience, letting you position the search field where it best suits the needs of your app.

I do this in this sample code:

import UIKit

class ViewController: UIViewController {

	override func viewDidLoad() {
		super.viewDidLoad()
		view.backgroundColor = .systemBackground

		let actionButton = UIButton(configuration: .bordered())
		actionButton.setTitle("Show Action Sheet", for: .normal)
		actionButton.addTarget(self, action: #selector(showActionSheet), for: .touchUpInside)

		actionButton.translatesAutoresizingMaskIntoConstraints = false
		view.addSubview(actionButton)
		NSLayoutConstraint.activate([
			actionButton.centerXAnchor.constraint(equalTo: view.centerXAnchor),
			actionButton.centerYAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor, constant: 100)
		])
	}

	@objc private func showActionSheet(_ button: UIButton) {
		let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)

		alert.addAction(UIAlertAction(title: "Option 1", style: .default, handler: { _ in
			print("Option 1 selected")
		}))

		alert.addAction(UIAlertAction(title: "Option 2", style: .default, handler: { _ in
			print("Option 2 selected")
		}))
		
		alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))

		// Set the popover presentation anchor
		if let popover = alert.popoverPresentationController {
			popover.sourceItem = button	
		}

		present(alert, animated: true, completion: nil)
	}
}

When I run this code in iOS 26, I get a popover (versus a bottom action sheet on iOS 18) but this popover has an arrow.

What do I miss to display this popover like Apple does on iOS 26: without an arrow and over the originating view?

Answered by DTS Engineer in 862026022

Could you try reproducing the issue using this sample project: Customizing your app’s navigation bar and verify on iOS 26.1 Beta 3.

Please reply back with your findings.

Could you try reproducing the issue using this sample project: Customizing your app’s navigation bar and verify on iOS 26.1 Beta 3.

Please reply back with your findings.

How to get an anchored action sheet without the popover arrow on iOS 26?
 
 
Q