                     expect(update?.newValue).toEventually(beNil())
                 }
 
-                then("receives initial update with keyPaths") {
-                    self.keyStore.testOptionalValue = DefaultsKey<Serializable?>("test")
+                then("receives initial update being non-nil") {
+                    let key = DefaultsKey<Serializable?>("test1")
+                    defaults[key] = self.customValue
+
+                    var update: DefaultsObserver<Serializable?>.Update?
+                    let observer = defaults.observe(key, options: [.initial, .old, .new]) { receivedUpdate in
+                        update = receivedUpdate
+                    }
+
+                    expect(update).toEventuallyNot(beNil())
+                    expect(update?.oldValue).toEventually(beNil())
+                    expect(update?.newValue).toEventually(equal(self.customValue))
+                }
+
+                then("receives initial update being nil with keyPaths") {
+                    self.keyStore.testOptionalValue = DefaultsKey<Serializable?>("test2")
 
                     var update: DefaultsObserver<Serializable?>.Update?
                     let observer = defaults.observe(\.testOptionalValue, options: [.initial, .old, .new]) { receivedUpdate in

                }
                #endif

                then("receives initial update") {
                    let key = DefaultsKey<Serializable?>("test")

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

                            }

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

                    then("receives initial update being custom value with publishers") {
                        self.keyStore.testOptionalValue = DefaultsKey<Serializable?>("test", defaultValue: self.defaultValue)
                        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
