---
title: DisclosureGroupStyle
framework: swiftui
role: symbol
role_heading: Protocol
path: swiftui/disclosuregroupstyle
---

# DisclosureGroupStyle

A type that specifies the appearance and interaction of disclosure groups within a view hierarchy.

## Declaration

```swift
@MainActor @preconcurrency protocol DisclosureGroupStyle
```

## Overview

Overview To configure the disclosure group style for a view hierarchy, use the disclosureGroupStyle(_:) modifier. To create a custom disclosure group style, declare a type that conforms to DisclosureGroupStyle. Implement the makeBody(configuration:) method to return a view that composes the elements of the configuration that SwiftUI provides to your method. struct MyDisclosureStyle: DisclosureGroupStyle {     func makeBody(configuration: Configuration) -> some View {         VStack {             Button {                 withAnimation {                     configuration.isExpanded.toggle()                 }             } label: {                 HStack(alignment: .firstTextBaseline) {                     configuration.label                     Spacer()                     Text(configuration.isExpanded ? "hide" : "show")                         .foregroundColor(.accentColor)                         .font(.caption.lowercaseSmallCaps())                         .animation(nil, value: configuration.isExpanded)                 }                 .contentShape(Rectangle())             }             .buttonStyle(.plain)             if configuration.isExpanded {                 configuration.content             }         }     } } 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 the styles

- [automatic](swiftui/disclosuregroupstyle/automatic.md)

### Creating custom disclosure group styles

- [makeBody(configuration:)](swiftui/disclosuregroupstyle/makebody(configuration:).md)
- [DisclosureGroupStyleConfiguration](swiftui/disclosuregroupstyleconfiguration.md)
- [DisclosureGroupStyle.Configuration](swiftui/disclosuregroupstyle/configuration.md)
- [Body](swiftui/disclosuregroupstyle/body.md)

### Supporting types

- [AutomaticDisclosureGroupStyle](swiftui/automaticdisclosuregroupstyle.md)

## Relationships

### Conforming Types

- [AutomaticDisclosureGroupStyle](swiftui/automaticdisclosuregroupstyle.md)

## See Also

### Styling collection views

- [listStyle(_:)](swiftui/view/liststyle(_:).md)
- [ListStyle](swiftui/liststyle.md)
- [tableStyle(_:)](swiftui/view/tablestyle(_:).md)
- [TableStyle](swiftui/tablestyle.md)
- [TableStyleConfiguration](swiftui/tablestyleconfiguration.md)
- [disclosureGroupStyle(_:)](swiftui/view/disclosuregroupstyle(_:).md)
