---
title: MenuStyle
framework: swiftui
role: symbol
role_heading: Protocol
path: swiftui/menustyle
---

# MenuStyle

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

## Declaration

```swift
@MainActor @preconcurrency protocol MenuStyle
```

## Overview

Overview To configure the current menu style for a view hierarchy, use the menuStyle(_:) modifier. 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 menu styles

- [automatic](swiftui/menustyle/automatic.md)
- [button](swiftui/menustyle/button.md)
- [borderedButton](swiftui/menustyle/borderedbutton.md)
- [borderlessButton](swiftui/menustyle/borderlessbutton.md)

### Creating custom menu styles

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

### Supporting types

- [DefaultMenuStyle](swiftui/defaultmenustyle.md)
- [ButtonMenuStyle](swiftui/buttonmenustyle.md)
- [BorderlessButtonMenuStyle](swiftui/borderlessbuttonmenustyle.md)
- [BorderedButtonMenuStyle](swiftui/borderedbuttonmenustyle.md)

## Relationships

### Conforming Types

- [BorderedButtonMenuStyle](swiftui/borderedbuttonmenustyle.md)
- [BorderlessButtonMenuStyle](swiftui/borderlessbuttonmenustyle.md)
- [ButtonMenuStyle](swiftui/buttonmenustyle.md)
- [DefaultMenuStyle](swiftui/defaultmenustyle.md)

## See Also

### Styling menus

- [menuStyle(_:)](swiftui/view/menustyle(_:).md)
- [MenuStyleConfiguration](swiftui/menustyleconfiguration.md)
