                     expect(update?.newValue).toEventually(equal(self.defaultValue))
                 }
 
+                then("receives initial update being custom value with keyPaths") {
+                    self.keyStore.testValue = DefaultsKey<Serializable>("test", defaultValue: self.defaultValue)
+                    defaults[\.testValue] = self.customValue
+
+                    var update: DefaultsObserver<Serializable>.Update?
+                    let observer = defaults.observe(\.testValue, options: [.initial, .old, .new]) { receivedUpdate in
+                        update = receivedUpdate
+                    }
+
+                    expect(update?.oldValue).toEventually(equal(self.defaultValue))
+                    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") {
+                    then("receives initial update being default value with publishers") {
                         self.keyStore.testValue = DefaultsKey<Serializable>("test", defaultValue: self.defaultValue)
 
                         var update: Serializable?

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

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

                    var update: DefaultsObserver<Serializable>.Update?

                }
                #endif

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

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