Two things I think I’ve learned about SwiftUI Buttons:

For iOS, Apple recommends that tappable objects be at least 44 pixels square so that our fingers can hit them easily. A SwiftUI Button by default is just whatever size its content is. A SF Symbols icon will usually be smaller than 44×44, so it might be a good idea to give them this:

.frame(minWidth: 44, minHeight: 44)

iPadOS buttons should have mouse and trackpad support, which you can add using .hoverEffect(). This applies the .automatic setting, which for a Button will actually be the .highlight effect. You could use .hoverEffect(.highlight), to be explicit about it but it doesn’t seem to be necessary. There’s also .lift.

Putting it together, I think most Button objects in SwiftUI should probably look like this:

Button("Tap Me") {
    print("Button tapped!")
.frame(minWidth: 44, minHeight: 44)

One could probably make a new view that applies these by default. If you’re also targeting the Mac there’s maybe more work to be done to restrict this to iOS and iPadOS.

(Unless I’m wrong about all this. Still learning! Life is study.)