<!--
{
  "availability" : [
    "iOS: 10.0.0 - 14.0.0",
    "iPadOS: 10.0.0 - 14.0.0",
    "macCatalyst: 10.0.0 - 14.0.0",
    "macOS: 10.10.0 - 11.0.0"
  ],
  "documentType" : "symbol",
  "framework" : "NotificationCenter",
  "identifier" : "/documentation/NotificationCenter/NCWidgetProviding",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "Notification Center"
    ],
    "preciseIdentifier" : "c:objc(pl)NCWidgetProviding"
  },
  "title" : "NCWidgetProviding"
}
-->

# NCWidgetProviding

The interface for customizing the appearance and behavior of a Today widget.

```
protocol NCWidgetProviding : NSObjectProtocol
```

## Overview

The `NCWidgetProviding` protocol allows customization of the appearance and behavior of a Today widget.

## Topics

### Customizing the Display

[`widgetMarginInsets(forProposedMarginInsets:)`](/documentation/NotificationCenter/NCWidgetProviding/widgetMarginInsets(forProposedMarginInsets:))

Called to let a widget accept the default margin inset values or return custom values to use instead.

[`widgetActiveDisplayModeDidChange(_:withMaximumSize:)`](/documentation/NotificationCenter/NCWidgetProviding/widgetActiveDisplayModeDidChange(_:withMaximumSize:))

Called when the active display mode changes.

[`NCWidgetDisplayMode`](/documentation/NotificationCenter/NCWidgetDisplayMode)

The modes that can be toggled between when the user activates the More button for a widget running in iOS.

### Updating a Widget’s Contents

[`widgetPerformUpdate(completionHandler:)`](/documentation/NotificationCenter/NCWidgetProviding/widgetPerformUpdate(completionHandler:))

Called to give a widget an opportunity to update its contents.

[`NCUpdateResult`](/documentation/NotificationCenter/NCUpdateResult)

The result of updating a widget’s state.

### Supporting Editing

[`widgetAllowsEditing`](/documentation/NotificationCenter/NCWidgetProviding/widgetAllowsEditing)

A Boolean value indicating whether the widget can be edited by users.

[`widgetDidBeginEditing()`](/documentation/NotificationCenter/NCWidgetProviding/widgetDidBeginEditing())

Called when a user chooses the widget’s begin editing button.

[`widgetDidEndEditing()`](/documentation/NotificationCenter/NCWidgetProviding/widgetDidEndEditing())

Called when a widget’s editing session ends.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)