---
title: PrimitiveButtonStyle
framework: swiftui
role: symbol
role_heading: Protocol
path: swiftui/primitivebuttonstyle
---

# PrimitiveButtonStyle

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

## Declaration

```swift
@MainActor @preconcurrency protocol PrimitiveButtonStyle
```

## Overview

Overview To configure the current button style for a view hierarchy, use the buttonStyle(_:) modifier. Specify a style that conforms to PrimitiveButtonStyle to create a button with custom interaction behavior. To create a button with the standard button interaction behavior defined for each platform, use ButtonStyle instead. A type conforming to this protocol inherits @preconcurrency @MainActor isolation from the protocol if the conformance is included in the type’s base declaration: struct MyCustomType: Transition {     // `@preconcurrency @MainActor` isolation by default } Isolation to the main actor is the default, but it’s not required. Declare the conformance in an extension to opt out of main actor isolation: extension MyCustomType: Transition {     // `nonisolated` by default }

## Topics

### Getting built-in button styles

- [automatic](swiftui/primitivebuttonstyle/automatic.md)
- [accessoryBar](swiftui/primitivebuttonstyle/accessorybar.md)
- [accessoryBarAction](swiftui/primitivebuttonstyle/accessorybaraction.md)
- [bordered](swiftui/primitivebuttonstyle/bordered.md)
- [borderedProminent](swiftui/primitivebuttonstyle/borderedprominent.md)
- [borderless](swiftui/primitivebuttonstyle/borderless.md)
- [card](swiftui/primitivebuttonstyle/card.md)
- [glass](swiftui/primitivebuttonstyle/glass.md)
- [glassProminent](swiftui/primitivebuttonstyle/glassprominent.md)
- [glass(_:)](swiftui/primitivebuttonstyle/glass(_:).md)
- [link](swiftui/primitivebuttonstyle/link.md)
- [plain](swiftui/primitivebuttonstyle/plain.md)

### Creating custom button styles

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

### Supporting types

- [DefaultButtonStyle](swiftui/defaultbuttonstyle.md)
- [AccessoryBarButtonStyle](swiftui/accessorybarbuttonstyle.md)
- [AccessoryBarActionButtonStyle](swiftui/accessorybaractionbuttonstyle.md)
- [BorderedButtonStyle](swiftui/borderedbuttonstyle.md)
- [BorderedProminentButtonStyle](swiftui/borderedprominentbuttonstyle.md)
- [BorderlessButtonStyle](swiftui/borderlessbuttonstyle.md)
- [CardButtonStyle](swiftui/cardbuttonstyle.md)
- [LinkButtonStyle](swiftui/linkbuttonstyle.md)
- [PlainButtonStyle](swiftui/plainbuttonstyle.md)

## Relationships

### Conforming Types

- [AccessoryBarActionButtonStyle](swiftui/accessorybaractionbuttonstyle.md)
- [AccessoryBarButtonStyle](swiftui/accessorybarbuttonstyle.md)
- [BorderedButtonStyle](swiftui/borderedbuttonstyle.md)
- [BorderedProminentButtonStyle](swiftui/borderedprominentbuttonstyle.md)
- [BorderlessButtonStyle](swiftui/borderlessbuttonstyle.md)
- [CardButtonStyle](swiftui/cardbuttonstyle.md)
- [DefaultButtonStyle](swiftui/defaultbuttonstyle.md)
- [GlassButtonStyle](swiftui/glassbuttonstyle.md)
- [GlassProminentButtonStyle](swiftui/glassprominentbuttonstyle.md)
- [LinkButtonStyle](swiftui/linkbuttonstyle.md)
- [PlainButtonStyle](swiftui/plainbuttonstyle.md)

## See Also

### Styling buttons

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