---
title: WidgetBundle
framework: swiftui
role: symbol
role_heading: Protocol
path: swiftui/widgetbundle
---

# WidgetBundle

A container used to expose multiple widgets from a single widget extension.

## Declaration

```swift
@MainActor @preconcurrency protocol WidgetBundle
```

## Overview

Overview To support multiple types of widgets, add the @main attribute to a structure that conforms to WidgetBundle. For example, a game might have one widget to display summary information about the game and a second widget to display detailed information about individual characters. @main struct GameWidgets: WidgetBundle {    var body: some Widget {        GameStatusWidget()        CharacterDetailWidget()    } }

## Topics

### Implementing a widget bundle

- [body](swiftui/widgetbundle/body-swift.property.md)
- [Body](swiftui/widgetbundle/body-swift.associatedtype.md)
- [WidgetBundleBuilder](swiftui/widgetbundlebuilder.md)

### Running a widget bundle

- [init()](swiftui/widgetbundle/init().md)
- [main()](swiftui/widgetbundle/main().md)

## See Also

### Creating widgets

- [Building Widgets Using WidgetKit and SwiftUI](widgetkit/building_widgets_using_widgetkit_and_swiftui.md)
- [Creating a widget extension](widgetkit/creating-a-widget-extension.md)
- [Keeping a widget up to date](widgetkit/keeping-a-widget-up-to-date.md)
- [Making a configurable widget](widgetkit/making-a-configurable-widget.md)
- [Widget](swiftui/widget.md)
- [LimitedAvailabilityConfiguration](swiftui/limitedavailabilityconfiguration.md)
- [WidgetConfiguration](swiftui/widgetconfiguration.md)
- [EmptyWidgetConfiguration](swiftui/emptywidgetconfiguration.md)
