Not sure what they do in iOS, but in Vision OS it seems you have to set the titleVisibility to .visible for .confirmationDialog to show it’s title.
.confirmationdialog documentation
Without it (defaults to automatic):
Button("Label") { ... }
.confirmationDialog("Are you sure?", isPresented: $showConfirmation)
It doesn’t show the “Are you sure?”
The Apple Page for default says: https://developer.apple.com/documentation/swiftui/visibility/automatic
For example, some components employ different automatic behavior depending on factors including the platform, the surrounding container, user settings, etc.
With it set to visible:
Button("Label") { ... }
.confirmationDialog("Are you sure?", isPresented: $showConfirmation, titleVisibility: .visible)
Now it shows the title on the alert. Wonder why the default is automatic, and then automatic hides the title in vision os? hmm.