---
title: ButtonStyle
framework: swiftui
role: symbol
role_heading: Protocol
path: swiftui/buttonstyle
---

# ButtonStyle

A type that applies standard interaction behavior and a custom appearance to all buttons within a view hierarchy.

## Declaration

```swift
@MainActor @preconcurrency protocol ButtonStyle
```

## Overview

Overview To configure the current button style for a view hierarchy, use the buttonStyle(_:) modifier. Specify a style that conforms to ButtonStyle when creating a button that uses the standard button interaction behavior defined for each platform. To create a button with custom interaction behavior, use PrimitiveButtonStyle instead.

## Topics

### Custom button styles

- [makeBody(configuration:)](swiftui/buttonstyle/makebody(configuration:).md)
- [ButtonStyle.Configuration](swiftui/buttonstyle/configuration.md)
- [Body](swiftui/buttonstyle/body.md)

## See Also

### Styling buttons

- [buttonStyle(_:)](swiftui/view/buttonstyle(_:).md)
- [ButtonStyleConfiguration](swiftui/buttonstyleconfiguration.md)
- [PrimitiveButtonStyle](swiftui/primitivebuttonstyle.md)
- [PrimitiveButtonStyleConfiguration](swiftui/primitivebuttonstyleconfiguration.md)
- [signInWithAppleButtonStyle(_:)](swiftui/view/signinwithapplebuttonstyle(_:).md)
- [buttonSizing(_:)](swiftui/view/buttonsizing(_:).md)
- [ButtonSizing](swiftui/buttonsizing.md)
