                     expect(update?.newValue).toEventually(beNil())
                 }
 
+                then("receives initial update being non-nil with keyPaths") {
+                    self.keyStore.testOptionalValue = DefaultsKey<Serializable?>("test2")
+                    defaults[\.testOptionalValue] = self.customValue
+
+                    var update: DefaultsObserver<Serializable?>.Update?
+                    let observer = defaults.observe(\.testOptionalValue, options: [.initial, .old, .new]) { receivedUpdate in
+                        update = receivedUpdate
+                    }
+
+                    expect(update).toEventuallyNot(beNil())
+                    expect(update?.oldValue).toEventually(beNil())
+                    expect(update?.newValue).toEventually(equal(self.customValue))
+                }
+
                 #if canImport(Combine)
                 if #available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) {
-                    then("receives initial update with publishers") {
-                        self.keyStore.testOptionalValue = DefaultsKey<Serializable?>("test")
-
-                        var update: Serializable? = self.defaultValue
+                    then("receives initial update being nil with publishers") {
+                        self.keyStore.testOptionalValue = DefaultsKey<Serializable?>("test3")
+
+                        var update: Serializable? = self.customValue
                         let cancellable = defaults.publisher(for: \.testOptionalValue, options: [.initial, .old, .new])
                             .sink { value in
                                 update = value
                             }
 
                         expect(update).toEventually(beNil())
+                    }
+
+                    then("receives initial update being non-nil with publishers") {
+                        self.keyStore.testOptionalValue = DefaultsKey<Serializable?>("test3")
+                        defaults[\.testOptionalValue] = self.customValue
+
+                        var update: Serializable?
+                        let cancellable = defaults.publisher(for: \.testOptionalValue, options: [.initial, .old, .new])
+                            .sink { value in
+                                update = value
+                            }
+
+                        expect(update).toEventually(equal(self.customValue))
                     }
                 }
                 #endif

                            }

                        expect(update).toEventually(equal(self.defaultValue))
                    }
                }
                #endif

                    expect(update?.newValue).toEventually(equal(self.defaultValue))
                }

                then("receives initial update being custom value") {
                    let key = DefaultsKey<Serializable>("test", defaultValue: self.defaultValue)
                    defaults[key] = self.customValue

                    var update: DefaultsObserver<Serializable>.Update?
                    let observer = defaults.observe(key, options: [.initial, .old, .new]) { receivedUpdate in
                        update = receivedUpdate
                    }

                    expect(update?.oldValue).toEventually(equal(self.defaultValue))
                    expect(update?.newValue).toEventually(equal(self.customValue))
                }

                then("receives initial update being default value with keyPaths") {
                    self.keyStore.testValue = DefaultsKey<Serializable>("test", defaultValue: self.defaultValue)

                    var update: DefaultsObserver<Serializable>.Update?
