<!--
{
  "availability" : [
    "iOS: 2.0.0 -",
    "iPadOS: 2.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.5.0 -",
    "tvOS: 9.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 2.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Foundation",
  "identifier" : "/documentation/Foundation/NSKeyValueObservingOptions/initial",
  "metadataVersion" : "0.1.0",
  "role" : "Type Property",
  "symbol" : {
    "kind" : "Type Property",
    "modules" : [
      "Foundation"
    ],
    "preciseIdentifier" : "c:@E@NSKeyValueObservingOptions@NSKeyValueObservingOptionInitial"
  },
  "title" : "initial"
}
-->

# initial

If specified, a notification should be sent to the observer immediately, before the observer registration method even returns.

```
static var initial: NSKeyValueObservingOptions { get }
```

## Discussion

The change dictionary in the notification will always contain an [`newKey`](/documentation/Foundation/NSKeyValueChangeKey/newKey) entry if [`new`](/documentation/Foundation/NSKeyValueObservingOptions/new) is also specified but will never contain an [`oldKey`](/documentation/Foundation/NSKeyValueChangeKey/oldKey) entry. (In an initial notification the current value of the observed property may be old, but it’s new to the observer.) You can use this option instead of explicitly invoking, at the same time, code that is also invoked by the observer’s <doc://com.apple.documentation/documentation/ObjectiveC/NSObject-swift.class/observeValue(forKeyPath:of:change:context:)> method. When this option is used with<doc://com.apple.documentation/documentation/ObjectiveC/NSObject-swift.class/addObserver(_:forKeyPath:options:context:)> a notification will be sent for each indexed object to which the observer is being added.

---

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)