diff --git a/base/graphql-swift/test/inputs/graphql/github1.graphql/default/quicktype.swift b/head/graphql-swift/test/inputs/graphql/github1.graphql/default/quicktype.swift
index 87d31b9..626343d 100644
--- a/base/graphql-swift/test/inputs/graphql/github1.graphql/default/quicktype.swift
+++ b/head/graphql-swift/test/inputs/graphql/github1.graphql/default/quicktype.swift
@@ -191,11 +191,23 @@ extension Error {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/graphql-swift/test/inputs/graphql/github2.graphql/default/quicktype.swift b/head/graphql-swift/test/inputs/graphql/github2.graphql/default/quicktype.swift
index ccd4719..2465094 100644
--- a/base/graphql-swift/test/inputs/graphql/github2.graphql/default/quicktype.swift
+++ b/head/graphql-swift/test/inputs/graphql/github2.graphql/default/quicktype.swift
@@ -283,11 +283,23 @@ extension Error {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/graphql-swift/test/inputs/graphql/github3.graphql/default/quicktype.swift b/head/graphql-swift/test/inputs/graphql/github3.graphql/default/quicktype.swift
index fdc4703..62be7b1 100644
--- a/base/graphql-swift/test/inputs/graphql/github3.graphql/default/quicktype.swift
+++ b/head/graphql-swift/test/inputs/graphql/github3.graphql/default/quicktype.swift
@@ -329,11 +329,23 @@ extension Error {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/graphql-swift/test/inputs/graphql/github4.graphql/default/quicktype.swift b/head/graphql-swift/test/inputs/graphql/github4.graphql/default/quicktype.swift
index 61110e5..5ccd571 100644
--- a/base/graphql-swift/test/inputs/graphql/github4.graphql/default/quicktype.swift
+++ b/head/graphql-swift/test/inputs/graphql/github4.graphql/default/quicktype.swift
@@ -333,11 +333,23 @@ extension Error {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/graphql-swift/test/inputs/graphql/github5.graphql/default/quicktype.swift b/head/graphql-swift/test/inputs/graphql/github5.graphql/default/quicktype.swift
index 695763b..4546d76 100644
--- a/base/graphql-swift/test/inputs/graphql/github5.graphql/default/quicktype.swift
+++ b/head/graphql-swift/test/inputs/graphql/github5.graphql/default/quicktype.swift
@@ -191,11 +191,23 @@ extension Error {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/graphql-swift/test/inputs/graphql/github6.graphql/default/quicktype.swift b/head/graphql-swift/test/inputs/graphql/github6.graphql/default/quicktype.swift
index fac743e..6e9cc7c 100644
--- a/base/graphql-swift/test/inputs/graphql/github6.graphql/default/quicktype.swift
+++ b/head/graphql-swift/test/inputs/graphql/github6.graphql/default/quicktype.swift
@@ -191,11 +191,23 @@ extension Error {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/graphql-swift/test/inputs/graphql/github7.graphql/default/quicktype.swift b/head/graphql-swift/test/inputs/graphql/github7.graphql/default/quicktype.swift
index e81acf5..add054e 100644
--- a/base/graphql-swift/test/inputs/graphql/github7.graphql/default/quicktype.swift
+++ b/head/graphql-swift/test/inputs/graphql/github7.graphql/default/quicktype.swift
@@ -387,11 +387,23 @@ extension Error {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/graphql-swift/test/inputs/graphql/github8.graphql/default/quicktype.swift b/head/graphql-swift/test/inputs/graphql/github8.graphql/default/quicktype.swift
index bc5e13d..a377e01 100644
--- a/base/graphql-swift/test/inputs/graphql/github8.graphql/default/quicktype.swift
+++ b/head/graphql-swift/test/inputs/graphql/github8.graphql/default/quicktype.swift
@@ -252,11 +252,23 @@ extension Error {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/graphql-swift/test/inputs/graphql/github9.graphql/default/quicktype.swift b/head/graphql-swift/test/inputs/graphql/github9.graphql/default/quicktype.swift
index 87a0a54..1840375 100644
--- a/base/graphql-swift/test/inputs/graphql/github9.graphql/default/quicktype.swift
+++ b/head/graphql-swift/test/inputs/graphql/github9.graphql/default/quicktype.swift
@@ -296,11 +296,23 @@ extension Error {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/accessors.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/accessors.schema/default/quicktype.swift
index 1af470b..0fef7c7 100644
--- a/base/schema-swift/test/inputs/schema/accessors.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/accessors.schema/default/quicktype.swift
@@ -97,11 +97,23 @@ enum Union: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/all-of-additional-properties-false.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/all-of-additional-properties-false.schema/default/quicktype.swift
index e9e19bf..24cc4d5 100644
--- a/base/schema-swift/test/inputs/schema/all-of-additional-properties-false.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/all-of-additional-properties-false.schema/default/quicktype.swift
@@ -74,11 +74,23 @@ enum TypeEnum: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/any.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/any.schema/default/quicktype.swift
index 5c1ba98..91e9b86 100644
--- a/base/schema-swift/test/inputs/schema/any.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/any.schema/default/quicktype.swift
@@ -55,11 +55,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/bool-string.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/bool-string.schema/default/quicktype.swift
index 62fcc50..7aa332c 100644
--- a/base/schema-swift/test/inputs/schema/bool-string.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/bool-string.schema/default/quicktype.swift
@@ -103,11 +103,23 @@ enum UnionWithBool: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/boolean-subschema.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/boolean-subschema.schema/default/quicktype.swift
index 92bbff3..7c54622 100644
--- a/base/schema-swift/test/inputs/schema/boolean-subschema.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/boolean-subschema.schema/default/quicktype.swift
@@ -63,11 +63,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/camelCase.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/camelCase.schema/default/quicktype.swift
index 335b396..3f33ee6 100644
--- a/base/schema-swift/test/inputs/schema/camelCase.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/camelCase.schema/default/quicktype.swift
@@ -55,11 +55,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/class-map-union.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/class-map-union.schema/default/quicktype.swift
index 1980f22..2bad067 100644
--- a/base/schema-swift/test/inputs/schema/class-map-union.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/class-map-union.schema/default/quicktype.swift
@@ -137,11 +137,23 @@ extension UnionClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/class-with-additional.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/class-with-additional.schema/default/quicktype.swift
index 4ae81e1..220dbe9 100644
--- a/base/schema-swift/test/inputs/schema/class-with-additional.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/class-with-additional.schema/default/quicktype.swift
@@ -79,11 +79,23 @@ enum Map: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/quicktype.swift
index 024ec75..98c0e31 100644
--- a/base/schema-swift/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/comment-injection-enum-nested-comment.schema/default/quicktype.swift
@@ -63,11 +63,23 @@ enum Kind: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/comment-injection-enum.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/comment-injection-enum.schema/default/quicktype.swift
index 9a1c09c..b64b5ef 100644
--- a/base/schema-swift/test/inputs/schema/comment-injection-enum.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/comment-injection-enum.schema/default/quicktype.swift
@@ -69,11 +69,23 @@ enum Kind: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/comment-injection-nested-comment.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/comment-injection-nested-comment.schema/default/quicktype.swift
index 9783183..c534ad1 100644
--- a/base/schema-swift/test/inputs/schema/comment-injection-nested-comment.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/comment-injection-nested-comment.schema/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/comment-injection.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/comment-injection.schema/default/quicktype.swift
index 26b3604..cb68da1 100644
--- a/base/schema-swift/test/inputs/schema/comment-injection.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/comment-injection.schema/default/quicktype.swift
@@ -90,11 +90,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/const-non-string.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/const-non-string.schema/default/quicktype.swift
index b7f8aa6..5ec1904 100644
--- a/base/schema-swift/test/inputs/schema/const-non-string.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/const-non-string.schema/default/quicktype.swift
@@ -71,11 +71,23 @@ enum Kind: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/constructor.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/constructor.schema/default/quicktype.swift
index 3e5564e..5b468bd 100644
--- a/base/schema-swift/test/inputs/schema/constructor.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/constructor.schema/default/quicktype.swift
@@ -122,11 +122,23 @@ extension Constructor {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/cut-enum.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/cut-enum.schema/default/quicktype.swift
index 1e5299a..a0aa38f 100644
--- a/base/schema-swift/test/inputs/schema/cut-enum.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/cut-enum.schema/default/quicktype.swift
@@ -51,11 +51,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/date-time-or-string.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/date-time-or-string.schema/default/quicktype.swift
index b215321..723437a 100644
--- a/base/schema-swift/test/inputs/schema/date-time-or-string.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/date-time-or-string.schema/default/quicktype.swift
@@ -87,11 +87,23 @@ enum BarEnum: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/date-time.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/date-time.schema/default/quicktype.swift
index eb26016..9369862 100644
--- a/base/schema-swift/test/inputs/schema/date-time.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/date-time.schema/default/quicktype.swift
@@ -107,11 +107,23 @@ enum ComplexUnionArrayEnum: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/default-value.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/default-value.schema/default/quicktype.swift
index 5f2edac..01d518c 100644
--- a/base/schema-swift/test/inputs/schema/default-value.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/default-value.schema/default/quicktype.swift
@@ -52,11 +52,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/description-with-double-quotes.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/description-with-double-quotes.schema/default/quicktype.swift
index 9b511bf..b78c0c7 100644
--- a/base/schema-swift/test/inputs/schema/description-with-double-quotes.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/description-with-double-quotes.schema/default/quicktype.swift
@@ -52,11 +52,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/description.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/description.schema/default/quicktype.swift
index f1e2457..7fe57d3 100644
--- a/base/schema-swift/test/inputs/schema/description.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/description.schema/default/quicktype.swift
@@ -180,11 +180,23 @@ enum Union: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/direct-union.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/direct-union.schema/default/quicktype.swift
index 12f26f8..2a56464 100644
--- a/base/schema-swift/test/inputs/schema/direct-union.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/direct-union.schema/default/quicktype.swift
@@ -162,11 +162,23 @@ enum Anything: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/empty-object.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/empty-object.schema/default/quicktype.swift
index bb94586..7650aff 100644
--- a/base/schema-swift/test/inputs/schema/empty-object.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/empty-object.schema/default/quicktype.swift
@@ -33,11 +33,23 @@ extension Dictionary where Key == String, Value == JSONAny {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/enum-large.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/enum-large.schema/default/quicktype.swift
index 7813fbe..d9be154 100644
--- a/base/schema-swift/test/inputs/schema/enum-large.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/enum-large.schema/default/quicktype.swift
@@ -84,11 +84,23 @@ enum Priority: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/enum-with-null.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/enum-with-null.schema/default/quicktype.swift
index 914a348..83790b2 100644
--- a/base/schema-swift/test/inputs/schema/enum-with-null.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/enum-with-null.schema/default/quicktype.swift
@@ -56,11 +56,23 @@ enum Enum: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/enum-with-values.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/enum-with-values.schema/default/quicktype.swift
index 1f90b38..5eaf38b 100644
--- a/base/schema-swift/test/inputs/schema/enum-with-values.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/enum-with-values.schema/default/quicktype.swift
@@ -61,11 +61,23 @@ enum Weekdays: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/enum.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/enum.schema/default/quicktype.swift
index 3f6b58e..f91299a 100644
--- a/base/schema-swift/test/inputs/schema/enum.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/enum.schema/default/quicktype.swift
@@ -113,11 +113,23 @@ enum Lvc: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/fractional-bounds.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/fractional-bounds.schema/default/quicktype.swift
index 304f919..78dc8ce 100644
--- a/base/schema-swift/test/inputs/schema/fractional-bounds.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/fractional-bounds.schema/default/quicktype.swift
@@ -51,11 +51,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/go-schema-pattern-properties.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/go-schema-pattern-properties.schema/default/quicktype.swift
index fb18ab7..34a6324 100644
--- a/base/schema-swift/test/inputs/schema/go-schema-pattern-properties.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/go-schema-pattern-properties.schema/default/quicktype.swift
@@ -51,11 +51,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/haskell-enum-forbidden.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/haskell-enum-forbidden.schema/default/quicktype.swift
index ef0c698..fd9470f 100644
--- a/base/schema-swift/test/inputs/schema/haskell-enum-forbidden.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/haskell-enum-forbidden.schema/default/quicktype.swift
@@ -56,11 +56,23 @@ enum Health: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/id-no-address.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/id-no-address.schema/default/quicktype.swift
index f1631dd..9aeea17 100644
--- a/base/schema-swift/test/inputs/schema/id-no-address.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/id-no-address.schema/default/quicktype.swift
@@ -51,11 +51,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/id-root.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/id-root.schema/default/quicktype.swift
index d2bc376..e552ca4 100644
--- a/base/schema-swift/test/inputs/schema/id-root.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/id-root.schema/default/quicktype.swift
@@ -51,11 +51,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/ie-suffix-singularization.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/ie-suffix-singularization.schema/default/quicktype.swift
index 28af7f5..e4418c2 100644
--- a/base/schema-swift/test/inputs/schema/ie-suffix-singularization.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/ie-suffix-singularization.schema/default/quicktype.swift
@@ -99,11 +99,23 @@ extension Cookie {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/implicit-all-of.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/implicit-all-of.schema/default/quicktype.swift
index 17713a2..b05c5f7 100644
--- a/base/schema-swift/test/inputs/schema/implicit-all-of.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/implicit-all-of.schema/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/implicit-class-array-union.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/implicit-class-array-union.schema/default/quicktype.swift
index 14f48f2..ac33962 100644
--- a/base/schema-swift/test/inputs/schema/implicit-class-array-union.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/implicit-class-array-union.schema/default/quicktype.swift
@@ -158,11 +158,23 @@ extension FooClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/implicit-one-of.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/implicit-one-of.schema/default/quicktype.swift
index ec1954d..32a6594 100644
--- a/base/schema-swift/test/inputs/schema/implicit-one-of.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/implicit-one-of.schema/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/integer-before-number.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/integer-before-number.schema/default/quicktype.swift
index 73f0b58..5bf3371 100644
--- a/base/schema-swift/test/inputs/schema/integer-before-number.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/integer-before-number.schema/default/quicktype.swift
@@ -36,11 +36,23 @@ enum TopLevel: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/integer-float-union.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/integer-float-union.schema/default/quicktype.swift
index 27bff9b..31ddac5 100644
--- a/base/schema-swift/test/inputs/schema/integer-float-union.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/integer-float-union.schema/default/quicktype.swift
@@ -79,11 +79,23 @@ enum Number: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/integer-string.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/integer-string.schema/default/quicktype.swift
index 38b5e85..46408d6 100644
--- a/base/schema-swift/test/inputs/schema/integer-string.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/integer-string.schema/default/quicktype.swift
@@ -103,11 +103,23 @@ enum UnionWithInt: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/integer-type.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/integer-type.schema/default/quicktype.swift
index 6d84ff0..6274ab6 100644
--- a/base/schema-swift/test/inputs/schema/integer-type.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/integer-type.schema/default/quicktype.swift
@@ -83,11 +83,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/intersection-nested.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/intersection-nested.schema/default/quicktype.swift
index 968901e..7eac936 100644
--- a/base/schema-swift/test/inputs/schema/intersection-nested.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/intersection-nested.schema/default/quicktype.swift
@@ -51,11 +51,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/intersection.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/intersection.schema/default/quicktype.swift
index 35932e6..28b3caa 100644
--- a/base/schema-swift/test/inputs/schema/intersection.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/intersection.schema/default/quicktype.swift
@@ -99,11 +99,23 @@ extension Intersection {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/issue2680-top-level-array.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/issue2680-top-level-array.schema/default/quicktype.swift
index d9aacba..8fc0472 100644
--- a/base/schema-swift/test/inputs/schema/issue2680-top-level-array.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/issue2680-top-level-array.schema/default/quicktype.swift
@@ -33,11 +33,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/keyword-enum.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/keyword-enum.schema/default/quicktype.swift
index ae4cc9e..ef34e10 100644
--- a/base/schema-swift/test/inputs/schema/keyword-enum.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/keyword-enum.schema/default/quicktype.swift
@@ -387,11 +387,23 @@ enum Enum: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/keyword-unions.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/keyword-unions.schema/default/quicktype.swift
index 0e431b7..6d78355 100644
--- a/base/schema-swift/test/inputs/schema/keyword-unions.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/keyword-unions.schema/default/quicktype.swift
@@ -24951,11 +24951,23 @@ extension Yield {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/light.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/light.schema/default/quicktype.swift
index b2ddd3c..40ef867 100644
--- a/base/schema-swift/test/inputs/schema/light.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/light.schema/default/quicktype.swift
@@ -103,11 +103,23 @@ extension LightParams {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/list.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/list.schema/default/quicktype.swift
index 0160730..f535b7c 100644
--- a/base/schema-swift/test/inputs/schema/list.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/list.schema/default/quicktype.swift
@@ -57,11 +57,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/min-max-items.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/min-max-items.schema/default/quicktype.swift
index 3237d11..342ace2 100644
--- a/base/schema-swift/test/inputs/schema/min-max-items.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/min-max-items.schema/default/quicktype.swift
@@ -95,11 +95,23 @@ enum UnionItem: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/minmax-integer.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/minmax-integer.schema/default/quicktype.swift
index 392281b..3aba94b 100644
--- a/base/schema-swift/test/inputs/schema/minmax-integer.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/minmax-integer.schema/default/quicktype.swift
@@ -79,11 +79,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/minmax.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/minmax.schema/default/quicktype.swift
index eefd7ba..88ccbce 100644
--- a/base/schema-swift/test/inputs/schema/minmax.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/minmax.schema/default/quicktype.swift
@@ -79,11 +79,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/minmaxlength.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/minmaxlength.schema/default/quicktype.swift
index 22778cb..8a8e30e 100644
--- a/base/schema-swift/test/inputs/schema/minmaxlength.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/minmaxlength.schema/default/quicktype.swift
@@ -107,11 +107,23 @@ enum InUnion: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/multi-type-enum.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/multi-type-enum.schema/default/quicktype.swift
index 53332d1..ba3cc4b 100644
--- a/base/schema-swift/test/inputs/schema/multi-type-enum.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/multi-type-enum.schema/default/quicktype.swift
@@ -99,11 +99,23 @@ enum FooEnum: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/mutually-recursive.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/mutually-recursive.schema/default/quicktype.swift
index 95331ea..f4f1db8 100644
--- a/base/schema-swift/test/inputs/schema/mutually-recursive.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/mutually-recursive.schema/default/quicktype.swift
@@ -128,11 +128,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/nested-intersection-union.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/nested-intersection-union.schema/default/quicktype.swift
index 9d257c1..addadd5 100644
--- a/base/schema-swift/test/inputs/schema/nested-intersection-union.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/nested-intersection-union.schema/default/quicktype.swift
@@ -107,11 +107,23 @@ extension Item {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/non-standard-ref.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/non-standard-ref.schema/default/quicktype.swift
index 72a84e1..fc75d3b 100644
--- a/base/schema-swift/test/inputs/schema/non-standard-ref.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/non-standard-ref.schema/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/nullable-optional-one-of.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/nullable-optional-one-of.schema/default/quicktype.swift
index 40719ce..1750623 100644
--- a/base/schema-swift/test/inputs/schema/nullable-optional-one-of.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/nullable-optional-one-of.schema/default/quicktype.swift
@@ -60,11 +60,23 @@ enum Kind: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/object-type-required.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/object-type-required.schema/default/quicktype.swift
index ec176fa..47e99d8 100644
--- a/base/schema-swift/test/inputs/schema/object-type-required.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/object-type-required.schema/default/quicktype.swift
@@ -102,11 +102,23 @@ extension Empty {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/optional-any.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/optional-any.schema/default/quicktype.swift
index 63cd02e..07ff3ea 100644
--- a/base/schema-swift/test/inputs/schema/optional-any.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/optional-any.schema/default/quicktype.swift
@@ -55,11 +55,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/optional-const-ref.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/optional-const-ref.schema/default/quicktype.swift
index 26d6241..f13c964 100644
--- a/base/schema-swift/test/inputs/schema/optional-const-ref.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/optional-const-ref.schema/default/quicktype.swift
@@ -123,11 +123,23 @@ extension Coordinate {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/optional-constraints.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/optional-constraints.schema/default/quicktype.swift
index 2c25ead..26cead1 100644
--- a/base/schema-swift/test/inputs/schema/optional-constraints.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/optional-constraints.schema/default/quicktype.swift
@@ -67,11 +67,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/optional-date-time.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/optional-date-time.schema/default/quicktype.swift
index f82c168..9f428c8 100644
--- a/base/schema-swift/test/inputs/schema/optional-date-time.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/optional-date-time.schema/default/quicktype.swift
@@ -71,11 +71,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/optional-enum.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/optional-enum.schema/default/quicktype.swift
index fee0394..9384fb1 100644
--- a/base/schema-swift/test/inputs/schema/optional-enum.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/optional-enum.schema/default/quicktype.swift
@@ -60,11 +60,23 @@ enum Shortcut: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/pattern.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/pattern.schema/default/quicktype.swift
index 673a29c..bf5cf46 100644
--- a/base/schema-swift/test/inputs/schema/pattern.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/pattern.schema/default/quicktype.swift
@@ -107,11 +107,23 @@ extension RegExp {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/postman-collection.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/postman-collection.schema/default/quicktype.swift
index 190ed05..4b0fa53 100644
--- a/base/schema-swift/test/inputs/schema/postman-collection.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/postman-collection.schema/default/quicktype.swift
@@ -104,11 +104,23 @@ extension Response {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/prefix-items.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/prefix-items.schema/default/quicktype.swift
index 72879ac..a61dcbc 100644
--- a/base/schema-swift/test/inputs/schema/prefix-items.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/prefix-items.schema/default/quicktype.swift
@@ -83,11 +83,23 @@ enum Open: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/recursive-union-flattening.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/recursive-union-flattening.schema/default/quicktype.swift
index 7b23466..ef60890 100644
--- a/base/schema-swift/test/inputs/schema/recursive-union-flattening.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/recursive-union-flattening.schema/default/quicktype.swift
@@ -347,11 +347,23 @@ enum X: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/ref-id-files.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/ref-id-files.schema/default/quicktype.swift
index 1e5299a..a0aa38f 100644
--- a/base/schema-swift/test/inputs/schema/ref-id-files.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/ref-id-files.schema/default/quicktype.swift
@@ -51,11 +51,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/ref-remote.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/ref-remote.schema/default/quicktype.swift
index 0160730..f535b7c 100644
--- a/base/schema-swift/test/inputs/schema/ref-remote.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/ref-remote.schema/default/quicktype.swift
@@ -57,11 +57,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/renaming-bug.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/renaming-bug.schema/default/quicktype.swift
index 1c25dde..50c051c 100644
--- a/base/schema-swift/test/inputs/schema/renaming-bug.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/renaming-bug.schema/default/quicktype.swift
@@ -716,11 +716,23 @@ enum Name: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/required-draft3.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/required-draft3.schema/default/quicktype.swift
index b18bcce..25799c8 100644
--- a/base/schema-swift/test/inputs/schema/required-draft3.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/required-draft3.schema/default/quicktype.swift
@@ -51,11 +51,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/required-non-properties.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/required-non-properties.schema/default/quicktype.swift
index 1e87e51..ae96e31 100644
--- a/base/schema-swift/test/inputs/schema/required-non-properties.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/required-non-properties.schema/default/quicktype.swift
@@ -55,11 +55,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/required.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/required.schema/default/quicktype.swift
index b18bcce..25799c8 100644
--- a/base/schema-swift/test/inputs/schema/required.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/required.schema/default/quicktype.swift
@@ -51,11 +51,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/rust-cycle-breaker-union.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/rust-cycle-breaker-union.schema/default/quicktype.swift
index ed9ba34..625bb5c 100644
--- a/base/schema-swift/test/inputs/schema/rust-cycle-breaker-union.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/rust-cycle-breaker-union.schema/default/quicktype.swift
@@ -138,11 +138,23 @@ indirect enum Next: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/schema-constraints.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/schema-constraints.schema/default/quicktype.swift
index c18597e..f4ec71d 100644
--- a/base/schema-swift/test/inputs/schema/schema-constraints.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/schema-constraints.schema/default/quicktype.swift
@@ -55,11 +55,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/simple-ref.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/simple-ref.schema/default/quicktype.swift
index 0160730..f535b7c 100644
--- a/base/schema-swift/test/inputs/schema/simple-ref.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/simple-ref.schema/default/quicktype.swift
@@ -57,11 +57,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/strict-optional.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/strict-optional.schema/default/quicktype.swift
index 7764357..b1361cc 100644
--- a/base/schema-swift/test/inputs/schema/strict-optional.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/strict-optional.schema/default/quicktype.swift
@@ -51,11 +51,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/top-level-array.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/top-level-array.schema/default/quicktype.swift
index 401f2dc..b654dfe 100644
--- a/base/schema-swift/test/inputs/schema/top-level-array.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/top-level-array.schema/default/quicktype.swift
@@ -82,11 +82,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/top-level-enum.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/top-level-enum.schema/default/quicktype.swift
index 6fa71e4..d67d059 100644
--- a/base/schema-swift/test/inputs/schema/top-level-enum.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/top-level-enum.schema/default/quicktype.swift
@@ -13,11 +13,23 @@ enum TopLevel: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/top-level-primitive-array.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/top-level-primitive-array.schema/default/quicktype.swift
index 584cbbe..5649a67 100644
--- a/base/schema-swift/test/inputs/schema/top-level-primitive-array.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/top-level-primitive-array.schema/default/quicktype.swift
@@ -33,11 +33,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/top-level-primitive.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/top-level-primitive.schema/default/quicktype.swift
index ba14f1e..03dc083 100644
--- a/base/schema-swift/test/inputs/schema/top-level-primitive.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/top-level-primitive.schema/default/quicktype.swift
@@ -8,11 +8,23 @@ typealias TopLevel = Double
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/tuple.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/tuple.schema/default/quicktype.swift
index a61436a..22826ec 100644
--- a/base/schema-swift/test/inputs/schema/tuple.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/tuple.schema/default/quicktype.swift
@@ -79,11 +79,23 @@ enum Tuple: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/unevaluated-properties.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/unevaluated-properties.schema/default/quicktype.swift
index c7bfe76..242514d 100644
--- a/base/schema-swift/test/inputs/schema/unevaluated-properties.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/unevaluated-properties.schema/default/quicktype.swift
@@ -257,11 +257,23 @@ extension Item {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/unicode-codepoint-length.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/unicode-codepoint-length.schema/default/quicktype.swift
index d7501d5..5a2b925 100644
--- a/base/schema-swift/test/inputs/schema/unicode-codepoint-length.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/unicode-codepoint-length.schema/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/union-int-double.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/union-int-double.schema/default/quicktype.swift
index a52c994..9969d61 100644
--- a/base/schema-swift/test/inputs/schema/union-int-double.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/union-int-double.schema/default/quicktype.swift
@@ -86,11 +86,23 @@ enum Value: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/union-list.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/union-list.schema/default/quicktype.swift
index c86e112..a48983f 100644
--- a/base/schema-swift/test/inputs/schema/union-list.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/union-list.schema/default/quicktype.swift
@@ -123,11 +123,23 @@ indirect enum UnionList: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/union.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/union.schema/default/quicktype.swift
index 6e54b58..38a83ea 100644
--- a/base/schema-swift/test/inputs/schema/union.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/union.schema/default/quicktype.swift
@@ -86,11 +86,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/uuid.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/uuid.schema/default/quicktype.swift
index e41ca47..60d3e04 100644
--- a/base/schema-swift/test/inputs/schema/uuid.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/uuid.schema/default/quicktype.swift
@@ -103,11 +103,23 @@ enum UnionWithEnumEnum: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/schema-swift/test/inputs/schema/vega-lite.schema/default/quicktype.swift b/head/schema-swift/test/inputs/schema/vega-lite.schema/default/quicktype.swift
index 6e82235..fcdec4f 100644
--- a/base/schema-swift/test/inputs/schema/vega-lite.schema/default/quicktype.swift
+++ b/head/schema-swift/test/inputs/schema/vega-lite.schema/default/quicktype.swift
@@ -10376,11 +10376,23 @@ extension Repeat {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/00c36.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/00c36.json/default/quicktype.swift
index 9474c0d..1a2a794 100644
--- a/base/swift/test/inputs/json/misc/00c36.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/00c36.json/default/quicktype.swift
@@ -236,11 +236,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/00ec5.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/00ec5.json/default/quicktype.swift
index 24ee751..002c99c 100644
--- a/base/swift/test/inputs/json/misc/00ec5.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/00ec5.json/default/quicktype.swift
@@ -619,11 +619,23 @@ extension Schema {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/010b1.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/010b1.json/default/quicktype.swift
index 3d90cf7..59eff03 100644
--- a/base/swift/test/inputs/json/misc/010b1.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/010b1.json/default/quicktype.swift
@@ -102,11 +102,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/016af.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/016af.json/default/quicktype.swift
index 3fa9b91..9e39e7a 100644
--- a/base/swift/test/inputs/json/misc/016af.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/016af.json/default/quicktype.swift
@@ -99,11 +99,23 @@ extension TotalPopulation {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/033b1.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/033b1.json/default/quicktype.swift
index 34a601f..ec1f42d 100644
--- a/base/swift/test/inputs/json/misc/033b1.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/033b1.json/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/050b0.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/050b0.json/default/quicktype.swift
index 58198b2..75eb0e5 100644
--- a/base/swift/test/inputs/json/misc/050b0.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/050b0.json/default/quicktype.swift
@@ -333,11 +333,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/06bee.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/06bee.json/default/quicktype.swift
index eb36fe3..944ea7a 100644
--- a/base/swift/test/inputs/json/misc/06bee.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/06bee.json/default/quicktype.swift
@@ -278,11 +278,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/07540.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/07540.json/default/quicktype.swift
index 2e6c550..20cc3c4 100644
--- a/base/swift/test/inputs/json/misc/07540.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/07540.json/default/quicktype.swift
@@ -94,11 +94,23 @@ extension Cookies {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/0779f.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/0779f.json/default/quicktype.swift
index 248159f..95f7716 100644
--- a/base/swift/test/inputs/json/misc/0779f.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/0779f.json/default/quicktype.swift
@@ -267,11 +267,23 @@ extension Meta {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/07c75.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/07c75.json/default/quicktype.swift
index d25f075..2ed4399 100644
--- a/base/swift/test/inputs/json/misc/07c75.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/07c75.json/default/quicktype.swift
@@ -254,11 +254,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/09f54.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/09f54.json/default/quicktype.swift
index 869ab4a..7916fad 100644
--- a/base/swift/test/inputs/json/misc/09f54.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/09f54.json/default/quicktype.swift
@@ -159,11 +159,23 @@ extension Description {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/0a358.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/0a358.json/default/quicktype.swift
index 09fbaf5..5d69c27 100644
--- a/base/swift/test/inputs/json/misc/0a358.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/0a358.json/default/quicktype.swift
@@ -182,11 +182,23 @@ extension Result {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/0a91a.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/0a91a.json/default/quicktype.swift
index e424526..8095f0e 100644
--- a/base/swift/test/inputs/json/misc/0a91a.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/0a91a.json/default/quicktype.swift
@@ -1238,11 +1238,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/0b91a.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/0b91a.json/default/quicktype.swift
index b047142..6bec286 100644
--- a/base/swift/test/inputs/json/misc/0b91a.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/0b91a.json/default/quicktype.swift
@@ -351,11 +351,23 @@ extension Component {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/0cffa.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/0cffa.json/default/quicktype.swift
index fb3085a..2d93db1 100644
--- a/base/swift/test/inputs/json/misc/0cffa.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/0cffa.json/default/quicktype.swift
@@ -727,11 +727,23 @@ extension Pagination {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/0e0c2.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/0e0c2.json/default/quicktype.swift
index 9de9530..e0d12d8 100644
--- a/base/swift/test/inputs/json/misc/0e0c2.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/0e0c2.json/default/quicktype.swift
@@ -522,11 +522,23 @@ extension VoteScore {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/0fecf.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/0fecf.json/default/quicktype.swift
index 19aaafb..c655486 100644
--- a/base/swift/test/inputs/json/misc/0fecf.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/0fecf.json/default/quicktype.swift
@@ -51,11 +51,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/10be4.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/10be4.json/default/quicktype.swift
index f49d82c..5bf50e1 100644
--- a/base/swift/test/inputs/json/misc/10be4.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/10be4.json/default/quicktype.swift
@@ -344,11 +344,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/112b5.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/112b5.json/default/quicktype.swift
index b845a51..ed19e8c 100644
--- a/base/swift/test/inputs/json/misc/112b5.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/112b5.json/default/quicktype.swift
@@ -162,11 +162,23 @@ extension Headers {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/127a1.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/127a1.json/default/quicktype.swift
index ddd7e46..4e6e777 100644
--- a/base/swift/test/inputs/json/misc/127a1.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/127a1.json/default/quicktype.swift
@@ -726,11 +726,23 @@ extension Pagination {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/13d8d.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/13d8d.json/default/quicktype.swift
index f0155ca..60b2d7b 100644
--- a/base/swift/test/inputs/json/misc/13d8d.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/13d8d.json/default/quicktype.swift
@@ -258,11 +258,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/14d38.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/14d38.json/default/quicktype.swift
index 22b6172..e1e3fa4 100644
--- a/base/swift/test/inputs/json/misc/14d38.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/14d38.json/default/quicktype.swift
@@ -107,11 +107,23 @@ extension Headers {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/167d6.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/167d6.json/default/quicktype.swift
index 34a601f..ec1f42d 100644
--- a/base/swift/test/inputs/json/misc/167d6.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/167d6.json/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/16bc5.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/16bc5.json/default/quicktype.swift
index ff8fe52..c64029f 100644
--- a/base/swift/test/inputs/json/misc/16bc5.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/16bc5.json/default/quicktype.swift
@@ -807,11 +807,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/176f1.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/176f1.json/default/quicktype.swift
index 6ae6b82..084ed34 100644
--- a/base/swift/test/inputs/json/misc/176f1.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/176f1.json/default/quicktype.swift
@@ -263,11 +263,23 @@ extension Footnote {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/1a7f5.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/1a7f5.json/default/quicktype.swift
index 3d90cf7..59eff03 100644
--- a/base/swift/test/inputs/json/misc/1a7f5.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/1a7f5.json/default/quicktype.swift
@@ -102,11 +102,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/1b28c.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/1b28c.json/default/quicktype.swift
index 3fa9b91..9e39e7a 100644
--- a/base/swift/test/inputs/json/misc/1b28c.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/1b28c.json/default/quicktype.swift
@@ -99,11 +99,23 @@ extension TotalPopulation {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/1b409.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/1b409.json/default/quicktype.swift
index 7da0f97..82f7625 100644
--- a/base/swift/test/inputs/json/misc/1b409.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/1b409.json/default/quicktype.swift
@@ -441,11 +441,23 @@ enum Title: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/2465e.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/2465e.json/default/quicktype.swift
index 01548cb..61d4dfc 100644
--- a/base/swift/test/inputs/json/misc/2465e.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/2465e.json/default/quicktype.swift
@@ -679,11 +679,23 @@ extension Schema {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/24f52.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/24f52.json/default/quicktype.swift
index 248159f..95f7716 100644
--- a/base/swift/test/inputs/json/misc/24f52.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/24f52.json/default/quicktype.swift
@@ -267,11 +267,23 @@ extension Meta {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/262f0.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/262f0.json/default/quicktype.swift
index 10cb7cf..a9bf58f 100644
--- a/base/swift/test/inputs/json/misc/262f0.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/262f0.json/default/quicktype.swift
@@ -813,11 +813,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/26b49.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/26b49.json/default/quicktype.swift
index b5809c3..584366e 100644
--- a/base/swift/test/inputs/json/misc/26b49.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/26b49.json/default/quicktype.swift
@@ -726,11 +726,23 @@ extension Pagination {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/26c9c.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/26c9c.json/default/quicktype.swift
index 1746635..d74b52e 100644
--- a/base/swift/test/inputs/json/misc/26c9c.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/26c9c.json/default/quicktype.swift
@@ -1470,11 +1470,23 @@ extension Expression {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/27332.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/27332.json/default/quicktype.swift
index 33e3a22..1fe4ee5 100644
--- a/base/swift/test/inputs/json/misc/27332.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/27332.json/default/quicktype.swift
@@ -878,11 +878,23 @@ enum Kind: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/29f47.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/29f47.json/default/quicktype.swift
index 10ab38e..5092aae 100644
--- a/base/swift/test/inputs/json/misc/29f47.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/29f47.json/default/quicktype.swift
@@ -812,11 +812,23 @@ enum Kind: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/2d4e2.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/2d4e2.json/default/quicktype.swift
index b288b7e..eed024f 100644
--- a/base/swift/test/inputs/json/misc/2d4e2.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/2d4e2.json/default/quicktype.swift
@@ -467,11 +467,23 @@ enum Title: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/2df80.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/2df80.json/default/quicktype.swift
index d884ce2..befaf95 100644
--- a/base/swift/test/inputs/json/misc/2df80.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/2df80.json/default/quicktype.swift
@@ -296,11 +296,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/31189.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/31189.json/default/quicktype.swift
index 8750c12..689f6ed 100644
--- a/base/swift/test/inputs/json/misc/31189.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/31189.json/default/quicktype.swift
@@ -227,11 +227,23 @@ extension Rates {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/32431.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/32431.json/default/quicktype.swift
index 848ce1f..a5df6eb 100644
--- a/base/swift/test/inputs/json/misc/32431.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/32431.json/default/quicktype.swift
@@ -398,11 +398,23 @@ extension Metadata {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/32d5c.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/32d5c.json/default/quicktype.swift
index bc6d323..57c5545 100644
--- a/base/swift/test/inputs/json/misc/32d5c.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/32d5c.json/default/quicktype.swift
@@ -106,11 +106,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/337ed.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/337ed.json/default/quicktype.swift
index 6b3dfb2..6ad0786 100644
--- a/base/swift/test/inputs/json/misc/337ed.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/337ed.json/default/quicktype.swift
@@ -374,11 +374,23 @@ enum ResultType: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/33d2e.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/33d2e.json/default/quicktype.swift
index eb1ea9f..9606255 100644
--- a/base/swift/test/inputs/json/misc/33d2e.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/33d2e.json/default/quicktype.swift
@@ -302,11 +302,23 @@ enum Category: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/34702.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/34702.json/default/quicktype.swift
index ac5e4aa..c63c2e3 100644
--- a/base/swift/test/inputs/json/misc/34702.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/34702.json/default/quicktype.swift
@@ -414,11 +414,23 @@ enum FeatureType: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/3536b.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/3536b.json/default/quicktype.swift
index f3975fe..f2ca98b 100644
--- a/base/swift/test/inputs/json/misc/3536b.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/3536b.json/default/quicktype.swift
@@ -266,11 +266,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/3659d.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/3659d.json/default/quicktype.swift
index 3fa9b91..9e39e7a 100644
--- a/base/swift/test/inputs/json/misc/3659d.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/3659d.json/default/quicktype.swift
@@ -99,11 +99,23 @@ extension TotalPopulation {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/36d5d.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/36d5d.json/default/quicktype.swift
index 248159f..95f7716 100644
--- a/base/swift/test/inputs/json/misc/36d5d.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/36d5d.json/default/quicktype.swift
@@ -267,11 +267,23 @@ extension Meta {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/3a6b3.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/3a6b3.json/default/quicktype.swift
index 248159f..95f7716 100644
--- a/base/swift/test/inputs/json/misc/3a6b3.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/3a6b3.json/default/quicktype.swift
@@ -267,11 +267,23 @@ extension Meta {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/3e9a3.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/3e9a3.json/default/quicktype.swift
index 6ae6b82..084ed34 100644
--- a/base/swift/test/inputs/json/misc/3e9a3.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/3e9a3.json/default/quicktype.swift
@@ -263,11 +263,23 @@ extension Footnote {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/3f1ce.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/3f1ce.json/default/quicktype.swift
index 2f6cea9..4b8a940 100644
--- a/base/swift/test/inputs/json/misc/3f1ce.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/3f1ce.json/default/quicktype.swift
@@ -811,11 +811,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/421d4.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/421d4.json/default/quicktype.swift
index 3968a9a..2fb59d0 100644
--- a/base/swift/test/inputs/json/misc/421d4.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/421d4.json/default/quicktype.swift
@@ -873,11 +873,23 @@ extension Owner {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/437e7.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/437e7.json/default/quicktype.swift
index a79f6d4..0360b73 100644
--- a/base/swift/test/inputs/json/misc/437e7.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/437e7.json/default/quicktype.swift
@@ -714,11 +714,23 @@ extension Pagination {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/43970.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/43970.json/default/quicktype.swift
index c43f458..c00737e 100644
--- a/base/swift/test/inputs/json/misc/43970.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/43970.json/default/quicktype.swift
@@ -86,11 +86,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/43eaf.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/43eaf.json/default/quicktype.swift
index 34a601f..ec1f42d 100644
--- a/base/swift/test/inputs/json/misc/43eaf.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/43eaf.json/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/458db.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/458db.json/default/quicktype.swift
index e1b1b23..e264320 100644
--- a/base/swift/test/inputs/json/misc/458db.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/458db.json/default/quicktype.swift
@@ -351,11 +351,23 @@ enum Name: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/4961a.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/4961a.json/default/quicktype.swift
index 3fa9b91..9e39e7a 100644
--- a/base/swift/test/inputs/json/misc/4961a.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/4961a.json/default/quicktype.swift
@@ -99,11 +99,23 @@ extension TotalPopulation {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/4a0d7.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/4a0d7.json/default/quicktype.swift
index 3fa9b91..9e39e7a 100644
--- a/base/swift/test/inputs/json/misc/4a0d7.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/4a0d7.json/default/quicktype.swift
@@ -99,11 +99,23 @@ extension TotalPopulation {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/4a455.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/4a455.json/default/quicktype.swift
index cff942e..7fc77da 100644
--- a/base/swift/test/inputs/json/misc/4a455.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/4a455.json/default/quicktype.swift
@@ -339,11 +339,23 @@ enum FeatureType: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/4c547.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/4c547.json/default/quicktype.swift
index ff8fe52..c64029f 100644
--- a/base/swift/test/inputs/json/misc/4c547.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/4c547.json/default/quicktype.swift
@@ -807,11 +807,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/4d6fb.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/4d6fb.json/default/quicktype.swift
index 394ca52..c0c4090 100644
--- a/base/swift/test/inputs/json/misc/4d6fb.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/4d6fb.json/default/quicktype.swift
@@ -875,11 +875,23 @@ enum Kind: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/4e336.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/4e336.json/default/quicktype.swift
index 3fa9b91..9e39e7a 100644
--- a/base/swift/test/inputs/json/misc/4e336.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/4e336.json/default/quicktype.swift
@@ -99,11 +99,23 @@ extension TotalPopulation {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/54147.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/54147.json/default/quicktype.swift
index 10e1731..9cadb57 100644
--- a/base/swift/test/inputs/json/misc/54147.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/54147.json/default/quicktype.swift
@@ -174,11 +174,23 @@ extension Headers {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/54d32.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/54d32.json/default/quicktype.swift
index b13897c..a8e9854 100644
--- a/base/swift/test/inputs/json/misc/54d32.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/54d32.json/default/quicktype.swift
@@ -187,11 +187,23 @@ enum Status: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/570ec.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/570ec.json/default/quicktype.swift
index b856219..5d6cff8 100644
--- a/base/swift/test/inputs/json/misc/570ec.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/570ec.json/default/quicktype.swift
@@ -308,11 +308,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/5dd0d.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/5dd0d.json/default/quicktype.swift
index 248159f..95f7716 100644
--- a/base/swift/test/inputs/json/misc/5dd0d.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/5dd0d.json/default/quicktype.swift
@@ -267,11 +267,23 @@ extension Meta {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/5eae5.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/5eae5.json/default/quicktype.swift
index 3e13dae..bc68b71 100644
--- a/base/swift/test/inputs/json/misc/5eae5.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/5eae5.json/default/quicktype.swift
@@ -90,11 +90,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/5eb20.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/5eb20.json/default/quicktype.swift
index 248159f..95f7716 100644
--- a/base/swift/test/inputs/json/misc/5eb20.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/5eb20.json/default/quicktype.swift
@@ -267,11 +267,23 @@ extension Meta {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/5f3a1.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/5f3a1.json/default/quicktype.swift
index 34a601f..ec1f42d 100644
--- a/base/swift/test/inputs/json/misc/5f3a1.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/5f3a1.json/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/5f7fe.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/5f7fe.json/default/quicktype.swift
index 4fb4994..868bff9 100644
--- a/base/swift/test/inputs/json/misc/5f7fe.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/5f7fe.json/default/quicktype.swift
@@ -1460,11 +1460,23 @@ extension Expression {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/617e8.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/617e8.json/default/quicktype.swift
index 5dc5398..892b512 100644
--- a/base/swift/test/inputs/json/misc/617e8.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/617e8.json/default/quicktype.swift
@@ -1456,11 +1456,23 @@ extension Expression {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/61b66.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/61b66.json/default/quicktype.swift
index 248159f..95f7716 100644
--- a/base/swift/test/inputs/json/misc/61b66.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/61b66.json/default/quicktype.swift
@@ -267,11 +267,23 @@ extension Meta {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/6260a.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/6260a.json/default/quicktype.swift
index 34a601f..ec1f42d 100644
--- a/base/swift/test/inputs/json/misc/6260a.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/6260a.json/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/65dec.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/65dec.json/default/quicktype.swift
index 8203a67..e5bfd5d 100644
--- a/base/swift/test/inputs/json/misc/65dec.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/65dec.json/default/quicktype.swift
@@ -381,11 +381,23 @@ enum TypeElement: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/66121.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/66121.json/default/quicktype.swift
index 82b2b3f..370eba9 100644
--- a/base/swift/test/inputs/json/misc/66121.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/66121.json/default/quicktype.swift
@@ -278,11 +278,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/6617c.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/6617c.json/default/quicktype.swift
index f1494ea..3c8b7f4 100644
--- a/base/swift/test/inputs/json/misc/6617c.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/6617c.json/default/quicktype.swift
@@ -107,11 +107,23 @@ extension IssPosition {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/67c03.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/67c03.json/default/quicktype.swift
index a8e0783..d250a7f 100644
--- a/base/swift/test/inputs/json/misc/67c03.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/67c03.json/default/quicktype.swift
@@ -107,11 +107,23 @@ extension Person {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/68c30.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/68c30.json/default/quicktype.swift
index 82a5162..3ccb84f 100644
--- a/base/swift/test/inputs/json/misc/68c30.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/68c30.json/default/quicktype.swift
@@ -259,11 +259,23 @@ extension Out {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/6c155.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/6c155.json/default/quicktype.swift
index eb9af63..29a6564 100644
--- a/base/swift/test/inputs/json/misc/6c155.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/6c155.json/default/quicktype.swift
@@ -431,11 +431,23 @@ extension Location {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/6de06.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/6de06.json/default/quicktype.swift
index ef81ecd..0334101 100644
--- a/base/swift/test/inputs/json/misc/6de06.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/6de06.json/default/quicktype.swift
@@ -921,11 +921,23 @@ enum Kind: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/6dec6.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/6dec6.json/default/quicktype.swift
index 62fd053..935c993 100644
--- a/base/swift/test/inputs/json/misc/6dec6.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/6dec6.json/default/quicktype.swift
@@ -813,11 +813,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/6eb00.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/6eb00.json/default/quicktype.swift
index c98661f..1ecf1b0 100644
--- a/base/swift/test/inputs/json/misc/6eb00.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/6eb00.json/default/quicktype.swift
@@ -86,11 +86,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/70c77.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/70c77.json/default/quicktype.swift
index 34a601f..ec1f42d 100644
--- a/base/swift/test/inputs/json/misc/70c77.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/70c77.json/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/734ad.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/734ad.json/default/quicktype.swift
index f71745a..8928c9f 100644
--- a/base/swift/test/inputs/json/misc/734ad.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/734ad.json/default/quicktype.swift
@@ -395,11 +395,23 @@ enum Status: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/75912.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/75912.json/default/quicktype.swift
index 34a601f..ec1f42d 100644
--- a/base/swift/test/inputs/json/misc/75912.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/75912.json/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/7681c.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/7681c.json/default/quicktype.swift
index 28b069f..04a5bd3 100644
--- a/base/swift/test/inputs/json/misc/7681c.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/7681c.json/default/quicktype.swift
@@ -728,11 +728,23 @@ extension Pagination {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/76ae1.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/76ae1.json/default/quicktype.swift
index ccb2027..a4f8029 100644
--- a/base/swift/test/inputs/json/misc/76ae1.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/76ae1.json/default/quicktype.swift
@@ -1435,11 +1435,23 @@ enum SchemaType: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/77392.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/77392.json/default/quicktype.swift
index b036295..1881116 100644
--- a/base/swift/test/inputs/json/misc/77392.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/77392.json/default/quicktype.swift
@@ -132,11 +132,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/7d397.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/7d397.json/default/quicktype.swift
index c6ce0c6..e73d341 100644
--- a/base/swift/test/inputs/json/misc/7d397.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/7d397.json/default/quicktype.swift
@@ -671,11 +671,23 @@ extension Items {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/7d722.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/7d722.json/default/quicktype.swift
index 248159f..95f7716 100644
--- a/base/swift/test/inputs/json/misc/7d722.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/7d722.json/default/quicktype.swift
@@ -267,11 +267,23 @@ extension Meta {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/7df41.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/7df41.json/default/quicktype.swift
index 2140b74..3a104b9 100644
--- a/base/swift/test/inputs/json/misc/7df41.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/7df41.json/default/quicktype.swift
@@ -119,11 +119,23 @@ extension PC {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/7dfa6.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/7dfa6.json/default/quicktype.swift
index 3fa9b91..9e39e7a 100644
--- a/base/swift/test/inputs/json/misc/7dfa6.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/7dfa6.json/default/quicktype.swift
@@ -99,11 +99,23 @@ extension TotalPopulation {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/7eb30.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/7eb30.json/default/quicktype.swift
index f367512..bf4d8c5 100644
--- a/base/swift/test/inputs/json/misc/7eb30.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/7eb30.json/default/quicktype.swift
@@ -237,11 +237,23 @@ enum Tel: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/7f568.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/7f568.json/default/quicktype.swift
index a0a4367..186e9f2 100644
--- a/base/swift/test/inputs/json/misc/7f568.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/7f568.json/default/quicktype.swift
@@ -206,11 +206,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/7fbfb.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/7fbfb.json/default/quicktype.swift
index ceeb081..badcc1d 100644
--- a/base/swift/test/inputs/json/misc/7fbfb.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/7fbfb.json/default/quicktype.swift
@@ -236,11 +236,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/80aff.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/80aff.json/default/quicktype.swift
index c73e70a..322e204 100644
--- a/base/swift/test/inputs/json/misc/80aff.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/80aff.json/default/quicktype.swift
@@ -186,11 +186,23 @@ extension Result {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/82509.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/82509.json/default/quicktype.swift
index 1ace6e7..95cbde3 100644
--- a/base/swift/test/inputs/json/misc/82509.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/82509.json/default/quicktype.swift
@@ -51,11 +51,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/8592b.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/8592b.json/default/quicktype.swift
index 15e9ec8..749ff05 100644
--- a/base/swift/test/inputs/json/misc/8592b.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/8592b.json/default/quicktype.swift
@@ -683,11 +683,23 @@ enum Kind: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/88130.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/88130.json/default/quicktype.swift
index ff8fe52..c64029f 100644
--- a/base/swift/test/inputs/json/misc/88130.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/88130.json/default/quicktype.swift
@@ -807,11 +807,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/8a62c.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/8a62c.json/default/quicktype.swift
index 3fa9b91..9e39e7a 100644
--- a/base/swift/test/inputs/json/misc/8a62c.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/8a62c.json/default/quicktype.swift
@@ -99,11 +99,23 @@ extension TotalPopulation {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/908db.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/908db.json/default/quicktype.swift
index d8e097b..e013f78 100644
--- a/base/swift/test/inputs/json/misc/908db.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/908db.json/default/quicktype.swift
@@ -143,11 +143,23 @@ extension StateState {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/9617f.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/9617f.json/default/quicktype.swift
index 34a601f..ec1f42d 100644
--- a/base/swift/test/inputs/json/misc/9617f.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/9617f.json/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/96f7c.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/96f7c.json/default/quicktype.swift
index 4510594..aa2825e 100644
--- a/base/swift/test/inputs/json/misc/96f7c.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/96f7c.json/default/quicktype.swift
@@ -71,11 +71,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/9847b.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/9847b.json/default/quicktype.swift
index 9f629e5..8634582 100644
--- a/base/swift/test/inputs/json/misc/9847b.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/9847b.json/default/quicktype.swift
@@ -82,11 +82,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/9929c.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/9929c.json/default/quicktype.swift
index ff8fe52..c64029f 100644
--- a/base/swift/test/inputs/json/misc/9929c.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/9929c.json/default/quicktype.swift
@@ -807,11 +807,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/996bd.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/996bd.json/default/quicktype.swift
index a592de6..c9f8afa 100644
--- a/base/swift/test/inputs/json/misc/996bd.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/996bd.json/default/quicktype.swift
@@ -277,11 +277,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/9a503.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/9a503.json/default/quicktype.swift
index 78c36d4..69ae652 100644
--- a/base/swift/test/inputs/json/misc/9a503.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/9a503.json/default/quicktype.swift
@@ -260,11 +260,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/9ac3b.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/9ac3b.json/default/quicktype.swift
index f77f3f2..66bbd83 100644
--- a/base/swift/test/inputs/json/misc/9ac3b.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/9ac3b.json/default/quicktype.swift
@@ -212,11 +212,23 @@ enum Title: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/9eed5.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/9eed5.json/default/quicktype.swift
index eb9b604..ce2025e 100644
--- a/base/swift/test/inputs/json/misc/9eed5.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/9eed5.json/default/quicktype.swift
@@ -259,11 +259,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/a0496.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/a0496.json/default/quicktype.swift
index 5eae517..b6e1a21 100644
--- a/base/swift/test/inputs/json/misc/a0496.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/a0496.json/default/quicktype.swift
@@ -193,11 +193,23 @@ extension Errors {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/a1eca.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/a1eca.json/default/quicktype.swift
index ff8fe52..c64029f 100644
--- a/base/swift/test/inputs/json/misc/a1eca.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/a1eca.json/default/quicktype.swift
@@ -807,11 +807,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/a3d8c.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/a3d8c.json/default/quicktype.swift
index b097420..eb75f02 100644
--- a/base/swift/test/inputs/json/misc/a3d8c.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/a3d8c.json/default/quicktype.swift
@@ -867,11 +867,23 @@ extension Owner {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/a45b0.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/a45b0.json/default/quicktype.swift
index 3d90cf7..59eff03 100644
--- a/base/swift/test/inputs/json/misc/a45b0.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/a45b0.json/default/quicktype.swift
@@ -102,11 +102,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/a71df.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/a71df.json/default/quicktype.swift
index 248159f..95f7716 100644
--- a/base/swift/test/inputs/json/misc/a71df.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/a71df.json/default/quicktype.swift
@@ -267,11 +267,23 @@ extension Meta {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/a9691.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/a9691.json/default/quicktype.swift
index 34a601f..ec1f42d 100644
--- a/base/swift/test/inputs/json/misc/a9691.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/a9691.json/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/ab0d1.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/ab0d1.json/default/quicktype.swift
index 3d90cf7..59eff03 100644
--- a/base/swift/test/inputs/json/misc/ab0d1.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/ab0d1.json/default/quicktype.swift
@@ -102,11 +102,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/abb4b.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/abb4b.json/default/quicktype.swift
index 3fa9b91..9e39e7a 100644
--- a/base/swift/test/inputs/json/misc/abb4b.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/abb4b.json/default/quicktype.swift
@@ -99,11 +99,23 @@ extension TotalPopulation {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/ac944.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/ac944.json/default/quicktype.swift
index 34a601f..ec1f42d 100644
--- a/base/swift/test/inputs/json/misc/ac944.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/ac944.json/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/ad8be.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/ad8be.json/default/quicktype.swift
index f49d82c..5bf50e1 100644
--- a/base/swift/test/inputs/json/misc/ad8be.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/ad8be.json/default/quicktype.swift
@@ -344,11 +344,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/ae7f0.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/ae7f0.json/default/quicktype.swift
index ba9f2a9..e4f5a60 100644
--- a/base/swift/test/inputs/json/misc/ae7f0.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/ae7f0.json/default/quicktype.swift
@@ -506,11 +506,23 @@ enum Kind: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/ae9ca.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/ae9ca.json/default/quicktype.swift
index 1197bca..2ef9d7c 100644
--- a/base/swift/test/inputs/json/misc/ae9ca.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/ae9ca.json/default/quicktype.swift
@@ -264,11 +264,23 @@ enum FeatureType: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/af2d1.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/af2d1.json/default/quicktype.swift
index 238154a..9cbe2b5 100644
--- a/base/swift/test/inputs/json/misc/af2d1.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/af2d1.json/default/quicktype.swift
@@ -507,11 +507,23 @@ enum FeatureType: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/b4865.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/b4865.json/default/quicktype.swift
index 8144a0b..8720b89 100644
--- a/base/swift/test/inputs/json/misc/b4865.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/b4865.json/default/quicktype.swift
@@ -183,11 +183,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/b6f2c.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/b6f2c.json/default/quicktype.swift
index 3fa9b91..9e39e7a 100644
--- a/base/swift/test/inputs/json/misc/b6f2c.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/b6f2c.json/default/quicktype.swift
@@ -99,11 +99,23 @@ extension TotalPopulation {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/b6fe5.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/b6fe5.json/default/quicktype.swift
index 0061a9e..4c3e35b 100644
--- a/base/swift/test/inputs/json/misc/b6fe5.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/b6fe5.json/default/quicktype.swift
@@ -63,11 +63,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/b9f64.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/b9f64.json/default/quicktype.swift
index cb40fb8..895c2e2 100644
--- a/base/swift/test/inputs/json/misc/b9f64.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/b9f64.json/default/quicktype.swift
@@ -51,11 +51,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/bb1ec.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/bb1ec.json/default/quicktype.swift
index 3fa9b91..9e39e7a 100644
--- a/base/swift/test/inputs/json/misc/bb1ec.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/bb1ec.json/default/quicktype.swift
@@ -99,11 +99,23 @@ extension TotalPopulation {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/be234.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/be234.json/default/quicktype.swift
index 7af9bb4..4c5f637 100644
--- a/base/swift/test/inputs/json/misc/be234.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/be234.json/default/quicktype.swift
@@ -933,11 +933,23 @@ enum Kind: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/c0356.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/c0356.json/default/quicktype.swift
index 18955a5..d9bc438 100644
--- a/base/swift/test/inputs/json/misc/c0356.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/c0356.json/default/quicktype.swift
@@ -155,11 +155,23 @@ extension Description {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/c0a3a.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/c0a3a.json/default/quicktype.swift
index 248159f..95f7716 100644
--- a/base/swift/test/inputs/json/misc/c0a3a.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/c0a3a.json/default/quicktype.swift
@@ -267,11 +267,23 @@ extension Meta {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/c3303.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/c3303.json/default/quicktype.swift
index 3ad6fc1..30e15d1 100644
--- a/base/swift/test/inputs/json/misc/c3303.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/c3303.json/default/quicktype.swift
@@ -722,11 +722,23 @@ extension Pagination {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/c6cfd.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/c6cfd.json/default/quicktype.swift
index c856380..eec0cc0 100644
--- a/base/swift/test/inputs/json/misc/c6cfd.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/c6cfd.json/default/quicktype.swift
@@ -99,11 +99,23 @@ extension Country {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/c8c7e.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/c8c7e.json/default/quicktype.swift
index 41210b5..77460c0 100644
--- a/base/swift/test/inputs/json/misc/c8c7e.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/c8c7e.json/default/quicktype.swift
@@ -236,11 +236,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/cb0cc.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/cb0cc.json/default/quicktype.swift
index 1ea7b6a..bc6ff37 100644
--- a/base/swift/test/inputs/json/misc/cb0cc.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/cb0cc.json/default/quicktype.swift
@@ -176,11 +176,23 @@ extension Laureate {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/cb81e.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/cb81e.json/default/quicktype.swift
index 8979e02..1db5a74 100644
--- a/base/swift/test/inputs/json/misc/cb81e.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/cb81e.json/default/quicktype.swift
@@ -111,11 +111,23 @@ extension Description {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/ccd18.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/ccd18.json/default/quicktype.swift
index 248159f..95f7716 100644
--- a/base/swift/test/inputs/json/misc/ccd18.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/ccd18.json/default/quicktype.swift
@@ -267,11 +267,23 @@ extension Meta {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/cd238.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/cd238.json/default/quicktype.swift
index 248159f..95f7716 100644
--- a/base/swift/test/inputs/json/misc/cd238.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/cd238.json/default/quicktype.swift
@@ -267,11 +267,23 @@ extension Meta {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/cd463.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/cd463.json/default/quicktype.swift
index 34a601f..ec1f42d 100644
--- a/base/swift/test/inputs/json/misc/cd463.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/cd463.json/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/cda6c.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/cda6c.json/default/quicktype.swift
index 3e0546a..1514f4a 100644
--- a/base/swift/test/inputs/json/misc/cda6c.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/cda6c.json/default/quicktype.swift
@@ -236,11 +236,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/cf0d8.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/cf0d8.json/default/quicktype.swift
index ff8fe52..c64029f 100644
--- a/base/swift/test/inputs/json/misc/cf0d8.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/cf0d8.json/default/quicktype.swift
@@ -807,11 +807,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/cfbce.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/cfbce.json/default/quicktype.swift
index 34a601f..ec1f42d 100644
--- a/base/swift/test/inputs/json/misc/cfbce.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/cfbce.json/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/d0908.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/d0908.json/default/quicktype.swift
index 3fa9b91..9e39e7a 100644
--- a/base/swift/test/inputs/json/misc/d0908.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/d0908.json/default/quicktype.swift
@@ -99,11 +99,23 @@ extension TotalPopulation {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/d23d5.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/d23d5.json/default/quicktype.swift
index 8dc2f7f..dbcc155 100644
--- a/base/swift/test/inputs/json/misc/d23d5.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/d23d5.json/default/quicktype.swift
@@ -182,11 +182,23 @@ extension Result {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/dbfb3.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/dbfb3.json/default/quicktype.swift
index 813fae5..1dc1e53 100644
--- a/base/swift/test/inputs/json/misc/dbfb3.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/dbfb3.json/default/quicktype.swift
@@ -812,11 +812,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/dc44f.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/dc44f.json/default/quicktype.swift
index 2ce7f19..f7aee62 100644
--- a/base/swift/test/inputs/json/misc/dc44f.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/dc44f.json/default/quicktype.swift
@@ -420,11 +420,23 @@ enum TypeElement: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/dd1ce.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/dd1ce.json/default/quicktype.swift
index 2ce7f19..f7aee62 100644
--- a/base/swift/test/inputs/json/misc/dd1ce.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/dd1ce.json/default/quicktype.swift
@@ -420,11 +420,23 @@ enum TypeElement: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/dec3a.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/dec3a.json/default/quicktype.swift
index d31b801..a906609 100644
--- a/base/swift/test/inputs/json/misc/dec3a.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/dec3a.json/default/quicktype.swift
@@ -463,11 +463,23 @@ extension Location {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/df957.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/df957.json/default/quicktype.swift
index ff8fe52..c64029f 100644
--- a/base/swift/test/inputs/json/misc/df957.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/df957.json/default/quicktype.swift
@@ -807,11 +807,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/e0ac7.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/e0ac7.json/default/quicktype.swift
index 218eebb..7bff00d 100644
--- a/base/swift/test/inputs/json/misc/e0ac7.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/e0ac7.json/default/quicktype.swift
@@ -721,11 +721,23 @@ extension Pagination {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/e2915.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/e2915.json/default/quicktype.swift
index 5b2538e..d1e9958 100644
--- a/base/swift/test/inputs/json/misc/e2915.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/e2915.json/default/quicktype.swift
@@ -811,11 +811,23 @@ extension Wind {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/e2a58.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/e2a58.json/default/quicktype.swift
index b4723b2..83f8368 100644
--- a/base/swift/test/inputs/json/misc/e2a58.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/e2a58.json/default/quicktype.swift
@@ -82,11 +82,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/e324e.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/e324e.json/default/quicktype.swift
index 27d4740..08c2521 100644
--- a/base/swift/test/inputs/json/misc/e324e.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/e324e.json/default/quicktype.swift
@@ -667,11 +667,23 @@ extension Items {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/e53b5.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/e53b5.json/default/quicktype.swift
index 001649b..a982010 100644
--- a/base/swift/test/inputs/json/misc/e53b5.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/e53b5.json/default/quicktype.swift
@@ -236,11 +236,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/e64a0.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/e64a0.json/default/quicktype.swift
index b845a51..ed19e8c 100644
--- a/base/swift/test/inputs/json/misc/e64a0.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/e64a0.json/default/quicktype.swift
@@ -162,11 +162,23 @@ extension Headers {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/e8a0b.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/e8a0b.json/default/quicktype.swift
index 3d90cf7..59eff03 100644
--- a/base/swift/test/inputs/json/misc/e8a0b.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/e8a0b.json/default/quicktype.swift
@@ -102,11 +102,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/e8b04.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/e8b04.json/default/quicktype.swift
index 7e6fcc2..4a0b64a 100644
--- a/base/swift/test/inputs/json/misc/e8b04.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/e8b04.json/default/quicktype.swift
@@ -1699,11 +1699,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/ed095.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/ed095.json/default/quicktype.swift
index 35c6020..44631b7 100644
--- a/base/swift/test/inputs/json/misc/ed095.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/ed095.json/default/quicktype.swift
@@ -33,11 +33,23 @@ extension Dictionary where Key == String, Value == String {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/f22f5.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/f22f5.json/default/quicktype.swift
index a5d24b1..c085c93 100644
--- a/base/swift/test/inputs/json/misc/f22f5.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/f22f5.json/default/quicktype.swift
@@ -502,11 +502,23 @@ enum Kind: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/f3139.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/f3139.json/default/quicktype.swift
index 9f629e5..8634582 100644
--- a/base/swift/test/inputs/json/misc/f3139.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/f3139.json/default/quicktype.swift
@@ -82,11 +82,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/f3edf.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/f3edf.json/default/quicktype.swift
index 3d90cf7..59eff03 100644
--- a/base/swift/test/inputs/json/misc/f3edf.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/f3edf.json/default/quicktype.swift
@@ -102,11 +102,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/f466a.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/f466a.json/default/quicktype.swift
index 3d90cf7..59eff03 100644
--- a/base/swift/test/inputs/json/misc/f466a.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/f466a.json/default/quicktype.swift
@@ -102,11 +102,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/f6a65.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/f6a65.json/default/quicktype.swift
index e78c797..4ccf7a0 100644
--- a/base/swift/test/inputs/json/misc/f6a65.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/f6a65.json/default/quicktype.swift
@@ -729,11 +729,23 @@ extension Pagination {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/f74d5.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/f74d5.json/default/quicktype.swift
index 1786bfc..7eef4b8 100644
--- a/base/swift/test/inputs/json/misc/f74d5.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/f74d5.json/default/quicktype.swift
@@ -860,11 +860,23 @@ extension Owner {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/f82d9.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/f82d9.json/default/quicktype.swift
index eeeb21c..9a5e9b4 100644
--- a/base/swift/test/inputs/json/misc/f82d9.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/f82d9.json/default/quicktype.swift
@@ -747,11 +747,23 @@ extension Items {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/f974d.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/f974d.json/default/quicktype.swift
index 1b96582..d01d57c 100644
--- a/base/swift/test/inputs/json/misc/f974d.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/f974d.json/default/quicktype.swift
@@ -67,11 +67,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/faff5.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/faff5.json/default/quicktype.swift
index da48683..d420862 100644
--- a/base/swift/test/inputs/json/misc/faff5.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/faff5.json/default/quicktype.swift
@@ -99,11 +99,23 @@ extension Response {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/fcca3.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/fcca3.json/default/quicktype.swift
index 8a9dfdb..ab2b635 100644
--- a/base/swift/test/inputs/json/misc/fcca3.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/fcca3.json/default/quicktype.swift
@@ -1672,11 +1672,23 @@ extension Expression {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/misc/fd329.json/default/quicktype.swift b/head/swift/test/inputs/json/misc/fd329.json/default/quicktype.swift
index 869ab4a..7916fad 100644
--- a/base/swift/test/inputs/json/misc/fd329.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/misc/fd329.json/default/quicktype.swift
@@ -159,11 +159,23 @@ extension Description {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/blns-object.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/blns-object.json/default/quicktype.swift
index 5353211..c377c90 100644
--- a/base/swift/test/inputs/json/priority/blns-object.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/blns-object.json/default/quicktype.swift
@@ -2515,11 +2515,23 @@ extension C {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/bug2037.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/bug2037.json/default/quicktype.swift
index 96c5908..2afee18 100644
--- a/base/swift/test/inputs/json/priority/bug2037.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/bug2037.json/default/quicktype.swift
@@ -182,11 +182,23 @@ extension Reward {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/bug2521.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/bug2521.json/default/quicktype.swift
index 2825844..1263dee 100644
--- a/base/swift/test/inputs/json/priority/bug2521.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/bug2521.json/default/quicktype.swift
@@ -99,11 +99,23 @@ extension Option {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/bug2590.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/bug2590.json/default/quicktype.swift
index a832597..6c9b21b 100644
--- a/base/swift/test/inputs/json/priority/bug2590.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/bug2590.json/default/quicktype.swift
@@ -103,11 +103,23 @@ extension Invoice {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/bug2663.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/bug2663.json/default/quicktype.swift
index 204a87d..bc52953 100644
--- a/base/swift/test/inputs/json/priority/bug2663.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/bug2663.json/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/bug2793.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/bug2793.json/default/quicktype.swift
index 3aadff4..6baacf7 100644
--- a/base/swift/test/inputs/json/priority/bug2793.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/bug2793.json/default/quicktype.swift
@@ -146,11 +146,23 @@ extension Labels {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/bug427.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/bug427.json/default/quicktype.swift
index 8b0fc71..1b7a472 100644
--- a/base/swift/test/inputs/json/priority/bug427.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/bug427.json/default/quicktype.swift
@@ -4012,11 +4012,23 @@ enum TentacledKindString: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/bug790.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/bug790.json/default/quicktype.swift
index 647893e..1fe45fb 100644
--- a/base/swift/test/inputs/json/priority/bug790.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/bug790.json/default/quicktype.swift
@@ -79,11 +79,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/bug855-short.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/bug855-short.json/default/quicktype.swift
index c449097..b5caeb2 100644
--- a/base/swift/test/inputs/json/priority/bug855-short.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/bug855-short.json/default/quicktype.swift
@@ -94,11 +94,23 @@ extension Dictionary where Key == String, Value == TopLevelValue {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/bug863.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/bug863.json/default/quicktype.swift
index 8dbd1ef..55b7548 100644
--- a/base/swift/test/inputs/json/priority/bug863.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/bug863.json/default/quicktype.swift
@@ -391,11 +391,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/coin-pairs.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/coin-pairs.json/default/quicktype.swift
index 531d006..ed35afe 100644
--- a/base/swift/test/inputs/json/priority/coin-pairs.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/coin-pairs.json/default/quicktype.swift
@@ -127,11 +127,23 @@ extension Pair {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations1.json/access-level-internal--a653a863c206/quicktype.swift b/head/swift/test/inputs/json/priority/combinations1.json/access-level-internal--a653a863c206/quicktype.swift
index 561b381..db5b78c 100644
--- a/base/swift/test/inputs/json/priority/combinations1.json/access-level-internal--a653a863c206/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations1.json/access-level-internal--a653a863c206/quicktype.swift
@@ -2776,11 +2776,23 @@ enum Jacutinga: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations1.json/access-level-public--bc6fc37ec004/quicktype.swift b/head/swift/test/inputs/json/priority/combinations1.json/access-level-public--bc6fc37ec004/quicktype.swift
index 1121c05..0437786 100644
--- a/base/swift/test/inputs/json/priority/combinations1.json/access-level-public--bc6fc37ec004/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations1.json/access-level-public--bc6fc37ec004/quicktype.swift
@@ -3106,11 +3106,23 @@ public enum Jacutinga: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations1.json/coding-keys-false--33058e42a49b/quicktype.swift b/head/swift/test/inputs/json/priority/combinations1.json/coding-keys-false--33058e42a49b/quicktype.swift
index 561b381..db5b78c 100644
--- a/base/swift/test/inputs/json/priority/combinations1.json/coding-keys-false--33058e42a49b/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations1.json/coding-keys-false--33058e42a49b/quicktype.swift
@@ -2776,11 +2776,23 @@ enum Jacutinga: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations1.json/coding-keys-protocol-CaseIterable--169323764eaa/quicktype.swift b/head/swift/test/inputs/json/priority/combinations1.json/coding-keys-protocol-CaseIterable--169323764eaa/quicktype.swift
index f0f2866..e69f964 100644
--- a/base/swift/test/inputs/json/priority/combinations1.json/coding-keys-protocol-CaseIterable--169323764eaa/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations1.json/coding-keys-protocol-CaseIterable--169323764eaa/quicktype.swift
@@ -2776,11 +2776,23 @@ enum Jacutinga: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations1.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/combinations1.json/default/quicktype.swift
index 561b381..db5b78c 100644
--- a/base/swift/test/inputs/json/priority/combinations1.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations1.json/default/quicktype.swift
@@ -2776,11 +2776,23 @@ enum Jacutinga: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations1.json/density-dense--3bfb4c22cfd0/quicktype.swift b/head/swift/test/inputs/json/priority/combinations1.json/density-dense--3bfb4c22cfd0/quicktype.swift
index 0a5d875..315fab3 100644
--- a/base/swift/test/inputs/json/priority/combinations1.json/density-dense--3bfb4c22cfd0/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations1.json/density-dense--3bfb4c22cfd0/quicktype.swift
@@ -2390,11 +2390,23 @@ enum Jacutinga: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations1.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift b/head/swift/test/inputs/json/priority/combinations1.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift
index dc3b561..3a791ee 100644
--- a/base/swift/test/inputs/json/priority/combinations1.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations1.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift
@@ -3120,11 +3120,23 @@ enum Jacutinga: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations1.json/mutable-properties-true--a9feb4120f94/quicktype.swift b/head/swift/test/inputs/json/priority/combinations1.json/mutable-properties-true--a9feb4120f94/quicktype.swift
index 108a6a1..cdf8942 100644
--- a/base/swift/test/inputs/json/priority/combinations1.json/mutable-properties-true--a9feb4120f94/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations1.json/mutable-properties-true--a9feb4120f94/quicktype.swift
@@ -2776,11 +2776,23 @@ enum Jacutinga: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations1.json/protocol-equatable--bd9068f466c1/quicktype.swift b/head/swift/test/inputs/json/priority/combinations1.json/protocol-equatable--bd9068f466c1/quicktype.swift
index 844f789..083c777 100644
--- a/base/swift/test/inputs/json/priority/combinations1.json/protocol-equatable--bd9068f466c1/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations1.json/protocol-equatable--bd9068f466c1/quicktype.swift
@@ -2860,11 +2860,23 @@ enum Jacutinga: Codable, Equatable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations1.json/protocol-hashable--739b516c7897/quicktype.swift b/head/swift/test/inputs/json/priority/combinations1.json/protocol-hashable--739b516c7897/quicktype.swift
index 7416436..1312c7f 100644
--- a/base/swift/test/inputs/json/priority/combinations1.json/protocol-hashable--739b516c7897/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations1.json/protocol-hashable--739b516c7897/quicktype.swift
@@ -2860,11 +2860,23 @@ enum Jacutinga: Codable, Hashable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations1.json/sendable-true--1c3982c78639/quicktype.swift b/head/swift/test/inputs/json/priority/combinations1.json/sendable-true--1c3982c78639/quicktype.swift
index c8d0d8f..31ad715 100644
--- a/base/swift/test/inputs/json/priority/combinations1.json/sendable-true--1c3982c78639/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations1.json/sendable-true--1c3982c78639/quicktype.swift
@@ -2776,11 +2776,23 @@ enum Jacutinga: Codable, Sendable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations1.json/sendable-true__struct-or-class-class--265b1fe2e96e/quicktype.swift b/head/swift/test/inputs/json/priority/combinations1.json/sendable-true__struct-or-class-class--265b1fe2e96e/quicktype.swift
index 9d7d7db..6fe6aff 100644
--- a/base/swift/test/inputs/json/priority/combinations1.json/sendable-true__struct-or-class-class--265b1fe2e96e/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations1.json/sendable-true__struct-or-class-class--265b1fe2e96e/quicktype.swift
@@ -3120,11 +3120,23 @@ enum Jacutinga: Codable, Sendable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations1.json/struct-or-class-class--238d6c8a12d4/quicktype.swift b/head/swift/test/inputs/json/priority/combinations1.json/struct-or-class-class--238d6c8a12d4/quicktype.swift
index d4a0be9..4eabd4a 100644
--- a/base/swift/test/inputs/json/priority/combinations1.json/struct-or-class-class--238d6c8a12d4/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations1.json/struct-or-class-class--238d6c8a12d4/quicktype.swift
@@ -3120,11 +3120,23 @@ enum Jacutinga: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations1.json/support-linux-false--4bd8c552e09a/quicktype.swift b/head/swift/test/inputs/json/priority/combinations1.json/support-linux-false--4bd8c552e09a/quicktype.swift
index 8b870f8..a6e482a 100644
--- a/base/swift/test/inputs/json/priority/combinations1.json/support-linux-false--4bd8c552e09a/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations1.json/support-linux-false--4bd8c552e09a/quicktype.swift
@@ -2776,11 +2776,23 @@ enum Jacutinga: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     if #available(iOS 10.0, OSX 10.12, tvOS 10.0, watchOS 3.0, *) {
         decoder.dateDecodingStrategy = .custom { decoder in
             let dateStr = try decoder.singleValueContainer().decode(String.self).uppercased()
+            guard isValidDate(dateStr) else {
+                throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+            }
             let dateData = try JSONEncoder().encode(dateStr)
             let dateDecoder = JSONDecoder()
             dateDecoder.dateDecodingStrategy = .iso8601
diff --git a/base/swift/test/inputs/json/priority/combinations2.json/access-level-internal--a653a863c206/quicktype.swift b/head/swift/test/inputs/json/priority/combinations2.json/access-level-internal--a653a863c206/quicktype.swift
index 7f9e89c..f655d67 100644
--- a/base/swift/test/inputs/json/priority/combinations2.json/access-level-internal--a653a863c206/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations2.json/access-level-internal--a653a863c206/quicktype.swift
@@ -2540,11 +2540,23 @@ enum Shakespearolater: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations2.json/access-level-public--bc6fc37ec004/quicktype.swift b/head/swift/test/inputs/json/priority/combinations2.json/access-level-public--bc6fc37ec004/quicktype.swift
index 1439038..fba8cf3 100644
--- a/base/swift/test/inputs/json/priority/combinations2.json/access-level-public--bc6fc37ec004/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations2.json/access-level-public--bc6fc37ec004/quicktype.swift
@@ -2818,11 +2818,23 @@ public enum Shakespearolater: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations2.json/coding-keys-false--33058e42a49b/quicktype.swift b/head/swift/test/inputs/json/priority/combinations2.json/coding-keys-false--33058e42a49b/quicktype.swift
index 7f9e89c..f655d67 100644
--- a/base/swift/test/inputs/json/priority/combinations2.json/coding-keys-false--33058e42a49b/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations2.json/coding-keys-false--33058e42a49b/quicktype.swift
@@ -2540,11 +2540,23 @@ enum Shakespearolater: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations2.json/coding-keys-protocol-CaseIterable--169323764eaa/quicktype.swift b/head/swift/test/inputs/json/priority/combinations2.json/coding-keys-protocol-CaseIterable--169323764eaa/quicktype.swift
index 9c3d359..d2b6f1d 100644
--- a/base/swift/test/inputs/json/priority/combinations2.json/coding-keys-protocol-CaseIterable--169323764eaa/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations2.json/coding-keys-protocol-CaseIterable--169323764eaa/quicktype.swift
@@ -2540,11 +2540,23 @@ enum Shakespearolater: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations2.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/combinations2.json/default/quicktype.swift
index 7f9e89c..f655d67 100644
--- a/base/swift/test/inputs/json/priority/combinations2.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations2.json/default/quicktype.swift
@@ -2540,11 +2540,23 @@ enum Shakespearolater: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations2.json/density-dense--3bfb4c22cfd0/quicktype.swift b/head/swift/test/inputs/json/priority/combinations2.json/density-dense--3bfb4c22cfd0/quicktype.swift
index 810ef90..c1a69e6 100644
--- a/base/swift/test/inputs/json/priority/combinations2.json/density-dense--3bfb4c22cfd0/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations2.json/density-dense--3bfb4c22cfd0/quicktype.swift
@@ -2242,11 +2242,23 @@ enum Shakespearolater: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations2.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift b/head/swift/test/inputs/json/priority/combinations2.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift
index 84adc0a..024c6d3 100644
--- a/base/swift/test/inputs/json/priority/combinations2.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations2.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift
@@ -2829,11 +2829,23 @@ enum Shakespearolater: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations2.json/mutable-properties-true--a9feb4120f94/quicktype.swift b/head/swift/test/inputs/json/priority/combinations2.json/mutable-properties-true--a9feb4120f94/quicktype.swift
index 38dc50f..daa6b23 100644
--- a/base/swift/test/inputs/json/priority/combinations2.json/mutable-properties-true--a9feb4120f94/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations2.json/mutable-properties-true--a9feb4120f94/quicktype.swift
@@ -2540,11 +2540,23 @@ enum Shakespearolater: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations2.json/protocol-equatable--bd9068f466c1/quicktype.swift b/head/swift/test/inputs/json/priority/combinations2.json/protocol-equatable--bd9068f466c1/quicktype.swift
index d41fa0b..f4d323b 100644
--- a/base/swift/test/inputs/json/priority/combinations2.json/protocol-equatable--bd9068f466c1/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations2.json/protocol-equatable--bd9068f466c1/quicktype.swift
@@ -2606,11 +2606,23 @@ enum Shakespearolater: Codable, Equatable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations2.json/protocol-hashable--739b516c7897/quicktype.swift b/head/swift/test/inputs/json/priority/combinations2.json/protocol-hashable--739b516c7897/quicktype.swift
index e203dbe..169a57e 100644
--- a/base/swift/test/inputs/json/priority/combinations2.json/protocol-hashable--739b516c7897/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations2.json/protocol-hashable--739b516c7897/quicktype.swift
@@ -2606,11 +2606,23 @@ enum Shakespearolater: Codable, Hashable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations2.json/sendable-true--1c3982c78639/quicktype.swift b/head/swift/test/inputs/json/priority/combinations2.json/sendable-true--1c3982c78639/quicktype.swift
index c6e2e4a..d1c2e1d 100644
--- a/base/swift/test/inputs/json/priority/combinations2.json/sendable-true--1c3982c78639/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations2.json/sendable-true--1c3982c78639/quicktype.swift
@@ -2540,11 +2540,23 @@ enum Shakespearolater: Codable, Sendable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations2.json/sendable-true__struct-or-class-class--265b1fe2e96e/quicktype.swift b/head/swift/test/inputs/json/priority/combinations2.json/sendable-true__struct-or-class-class--265b1fe2e96e/quicktype.swift
index 990dcdc..2d049fe 100644
--- a/base/swift/test/inputs/json/priority/combinations2.json/sendable-true__struct-or-class-class--265b1fe2e96e/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations2.json/sendable-true__struct-or-class-class--265b1fe2e96e/quicktype.swift
@@ -2829,11 +2829,23 @@ enum Shakespearolater: Codable, Sendable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations2.json/struct-or-class-class--238d6c8a12d4/quicktype.swift b/head/swift/test/inputs/json/priority/combinations2.json/struct-or-class-class--238d6c8a12d4/quicktype.swift
index 0e565fa..01f6b9a 100644
--- a/base/swift/test/inputs/json/priority/combinations2.json/struct-or-class-class--238d6c8a12d4/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations2.json/struct-or-class-class--238d6c8a12d4/quicktype.swift
@@ -2829,11 +2829,23 @@ enum Shakespearolater: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations2.json/support-linux-false--4bd8c552e09a/quicktype.swift b/head/swift/test/inputs/json/priority/combinations2.json/support-linux-false--4bd8c552e09a/quicktype.swift
index 8237493..1dfaf8c 100644
--- a/base/swift/test/inputs/json/priority/combinations2.json/support-linux-false--4bd8c552e09a/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations2.json/support-linux-false--4bd8c552e09a/quicktype.swift
@@ -2540,11 +2540,23 @@ enum Shakespearolater: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     if #available(iOS 10.0, OSX 10.12, tvOS 10.0, watchOS 3.0, *) {
         decoder.dateDecodingStrategy = .custom { decoder in
             let dateStr = try decoder.singleValueContainer().decode(String.self).uppercased()
+            guard isValidDate(dateStr) else {
+                throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+            }
             let dateData = try JSONEncoder().encode(dateStr)
             let dateDecoder = JSONDecoder()
             dateDecoder.dateDecodingStrategy = .iso8601
diff --git a/base/swift/test/inputs/json/priority/combinations3.json/access-level-internal--a653a863c206/quicktype.swift b/head/swift/test/inputs/json/priority/combinations3.json/access-level-internal--a653a863c206/quicktype.swift
index 0ea3227..ebdba6f 100644
--- a/base/swift/test/inputs/json/priority/combinations3.json/access-level-internal--a653a863c206/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations3.json/access-level-internal--a653a863c206/quicktype.swift
@@ -3075,11 +3075,23 @@ enum Protext: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations3.json/access-level-public--bc6fc37ec004/quicktype.swift b/head/swift/test/inputs/json/priority/combinations3.json/access-level-public--bc6fc37ec004/quicktype.swift
index b789b08..5a1b20c 100644
--- a/base/swift/test/inputs/json/priority/combinations3.json/access-level-public--bc6fc37ec004/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations3.json/access-level-public--bc6fc37ec004/quicktype.swift
@@ -3457,11 +3457,23 @@ public enum Protext: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations3.json/coding-keys-false--33058e42a49b/quicktype.swift b/head/swift/test/inputs/json/priority/combinations3.json/coding-keys-false--33058e42a49b/quicktype.swift
index 0ea3227..ebdba6f 100644
--- a/base/swift/test/inputs/json/priority/combinations3.json/coding-keys-false--33058e42a49b/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations3.json/coding-keys-false--33058e42a49b/quicktype.swift
@@ -3075,11 +3075,23 @@ enum Protext: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations3.json/coding-keys-protocol-CaseIterable--169323764eaa/quicktype.swift b/head/swift/test/inputs/json/priority/combinations3.json/coding-keys-protocol-CaseIterable--169323764eaa/quicktype.swift
index 9f14fbb..68ab992 100644
--- a/base/swift/test/inputs/json/priority/combinations3.json/coding-keys-protocol-CaseIterable--169323764eaa/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations3.json/coding-keys-protocol-CaseIterable--169323764eaa/quicktype.swift
@@ -3075,11 +3075,23 @@ enum Protext: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations3.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/combinations3.json/default/quicktype.swift
index 0ea3227..ebdba6f 100644
--- a/base/swift/test/inputs/json/priority/combinations3.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations3.json/default/quicktype.swift
@@ -3075,11 +3075,23 @@ enum Protext: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations3.json/density-dense--3bfb4c22cfd0/quicktype.swift b/head/swift/test/inputs/json/priority/combinations3.json/density-dense--3bfb4c22cfd0/quicktype.swift
index d605179..e8e745d 100644
--- a/base/swift/test/inputs/json/priority/combinations3.json/density-dense--3bfb4c22cfd0/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations3.json/density-dense--3bfb4c22cfd0/quicktype.swift
@@ -2622,11 +2622,23 @@ enum Protext: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations3.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift b/head/swift/test/inputs/json/priority/combinations3.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift
index 8b16419..6376cbf 100644
--- a/base/swift/test/inputs/json/priority/combinations3.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations3.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift
@@ -3472,11 +3472,23 @@ enum Protext: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations3.json/mutable-properties-true--a9feb4120f94/quicktype.swift b/head/swift/test/inputs/json/priority/combinations3.json/mutable-properties-true--a9feb4120f94/quicktype.swift
index 4cd5536..30d052a 100644
--- a/base/swift/test/inputs/json/priority/combinations3.json/mutable-properties-true--a9feb4120f94/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations3.json/mutable-properties-true--a9feb4120f94/quicktype.swift
@@ -3075,11 +3075,23 @@ enum Protext: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations3.json/protocol-equatable--bd9068f466c1/quicktype.swift b/head/swift/test/inputs/json/priority/combinations3.json/protocol-equatable--bd9068f466c1/quicktype.swift
index 30cfbad..2dc9238 100644
--- a/base/swift/test/inputs/json/priority/combinations3.json/protocol-equatable--bd9068f466c1/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations3.json/protocol-equatable--bd9068f466c1/quicktype.swift
@@ -3165,11 +3165,23 @@ enum Protext: Codable, Equatable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations3.json/protocol-hashable--739b516c7897/quicktype.swift b/head/swift/test/inputs/json/priority/combinations3.json/protocol-hashable--739b516c7897/quicktype.swift
index 84095ad..63e7842 100644
--- a/base/swift/test/inputs/json/priority/combinations3.json/protocol-hashable--739b516c7897/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations3.json/protocol-hashable--739b516c7897/quicktype.swift
@@ -3165,11 +3165,23 @@ enum Protext: Codable, Hashable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations3.json/sendable-true--1c3982c78639/quicktype.swift b/head/swift/test/inputs/json/priority/combinations3.json/sendable-true--1c3982c78639/quicktype.swift
index 6ab6560..e053773 100644
--- a/base/swift/test/inputs/json/priority/combinations3.json/sendable-true--1c3982c78639/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations3.json/sendable-true--1c3982c78639/quicktype.swift
@@ -3075,11 +3075,23 @@ enum Protext: Codable, Sendable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations3.json/sendable-true__struct-or-class-class--265b1fe2e96e/quicktype.swift b/head/swift/test/inputs/json/priority/combinations3.json/sendable-true__struct-or-class-class--265b1fe2e96e/quicktype.swift
index 07ebe1c..611ec91 100644
--- a/base/swift/test/inputs/json/priority/combinations3.json/sendable-true__struct-or-class-class--265b1fe2e96e/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations3.json/sendable-true__struct-or-class-class--265b1fe2e96e/quicktype.swift
@@ -3472,11 +3472,23 @@ enum Protext: Codable, Sendable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations3.json/struct-or-class-class--238d6c8a12d4/quicktype.swift b/head/swift/test/inputs/json/priority/combinations3.json/struct-or-class-class--238d6c8a12d4/quicktype.swift
index f1343ef..eb0e7a9 100644
--- a/base/swift/test/inputs/json/priority/combinations3.json/struct-or-class-class--238d6c8a12d4/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations3.json/struct-or-class-class--238d6c8a12d4/quicktype.swift
@@ -3472,11 +3472,23 @@ enum Protext: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations3.json/support-linux-false--4bd8c552e09a/quicktype.swift b/head/swift/test/inputs/json/priority/combinations3.json/support-linux-false--4bd8c552e09a/quicktype.swift
index a7f87b2..6cdf549 100644
--- a/base/swift/test/inputs/json/priority/combinations3.json/support-linux-false--4bd8c552e09a/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations3.json/support-linux-false--4bd8c552e09a/quicktype.swift
@@ -3075,11 +3075,23 @@ enum Protext: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     if #available(iOS 10.0, OSX 10.12, tvOS 10.0, watchOS 3.0, *) {
         decoder.dateDecodingStrategy = .custom { decoder in
             let dateStr = try decoder.singleValueContainer().decode(String.self).uppercased()
+            guard isValidDate(dateStr) else {
+                throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+            }
             let dateData = try JSONEncoder().encode(dateStr)
             let dateDecoder = JSONDecoder()
             dateDecoder.dateDecodingStrategy = .iso8601
diff --git a/base/swift/test/inputs/json/priority/combinations4.json/access-level-internal--a653a863c206/quicktype.swift b/head/swift/test/inputs/json/priority/combinations4.json/access-level-internal--a653a863c206/quicktype.swift
index 981d492..9c82c17 100644
--- a/base/swift/test/inputs/json/priority/combinations4.json/access-level-internal--a653a863c206/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations4.json/access-level-internal--a653a863c206/quicktype.swift
@@ -3579,11 +3579,23 @@ extension WrothyClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations4.json/access-level-public--bc6fc37ec004/quicktype.swift b/head/swift/test/inputs/json/priority/combinations4.json/access-level-public--bc6fc37ec004/quicktype.swift
index e041cbb..3bdde39 100644
--- a/base/swift/test/inputs/json/priority/combinations4.json/access-level-public--bc6fc37ec004/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations4.json/access-level-public--bc6fc37ec004/quicktype.swift
@@ -4017,11 +4017,23 @@ public extension WrothyClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations4.json/coding-keys-false--33058e42a49b/quicktype.swift b/head/swift/test/inputs/json/priority/combinations4.json/coding-keys-false--33058e42a49b/quicktype.swift
index 981d492..9c82c17 100644
--- a/base/swift/test/inputs/json/priority/combinations4.json/coding-keys-false--33058e42a49b/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations4.json/coding-keys-false--33058e42a49b/quicktype.swift
@@ -3579,11 +3579,23 @@ extension WrothyClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations4.json/coding-keys-protocol-CaseIterable--169323764eaa/quicktype.swift b/head/swift/test/inputs/json/priority/combinations4.json/coding-keys-protocol-CaseIterable--169323764eaa/quicktype.swift
index 13f2dcb..6fffb26 100644
--- a/base/swift/test/inputs/json/priority/combinations4.json/coding-keys-protocol-CaseIterable--169323764eaa/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations4.json/coding-keys-protocol-CaseIterable--169323764eaa/quicktype.swift
@@ -3579,11 +3579,23 @@ extension WrothyClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations4.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/combinations4.json/default/quicktype.swift
index 981d492..9c82c17 100644
--- a/base/swift/test/inputs/json/priority/combinations4.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations4.json/default/quicktype.swift
@@ -3579,11 +3579,23 @@ extension WrothyClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations4.json/density-dense--3bfb4c22cfd0/quicktype.swift b/head/swift/test/inputs/json/priority/combinations4.json/density-dense--3bfb4c22cfd0/quicktype.swift
index 0c5efd7..2aa085e 100644
--- a/base/swift/test/inputs/json/priority/combinations4.json/density-dense--3bfb4c22cfd0/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations4.json/density-dense--3bfb4c22cfd0/quicktype.swift
@@ -3049,11 +3049,23 @@ extension WrothyClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations4.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift b/head/swift/test/inputs/json/priority/combinations4.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift
index 9584a40..3557a68 100644
--- a/base/swift/test/inputs/json/priority/combinations4.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations4.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift
@@ -4034,11 +4034,23 @@ extension WrothyClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations4.json/mutable-properties-true--a9feb4120f94/quicktype.swift b/head/swift/test/inputs/json/priority/combinations4.json/mutable-properties-true--a9feb4120f94/quicktype.swift
index f0db46c..bb39301 100644
--- a/base/swift/test/inputs/json/priority/combinations4.json/mutable-properties-true--a9feb4120f94/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations4.json/mutable-properties-true--a9feb4120f94/quicktype.swift
@@ -3579,11 +3579,23 @@ extension WrothyClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations4.json/protocol-equatable--bd9068f466c1/quicktype.swift b/head/swift/test/inputs/json/priority/combinations4.json/protocol-equatable--bd9068f466c1/quicktype.swift
index 05796d9..70284ff 100644
--- a/base/swift/test/inputs/json/priority/combinations4.json/protocol-equatable--bd9068f466c1/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations4.json/protocol-equatable--bd9068f466c1/quicktype.swift
@@ -3681,11 +3681,23 @@ extension WrothyClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations4.json/protocol-hashable--739b516c7897/quicktype.swift b/head/swift/test/inputs/json/priority/combinations4.json/protocol-hashable--739b516c7897/quicktype.swift
index c34957d..8655295 100644
--- a/base/swift/test/inputs/json/priority/combinations4.json/protocol-hashable--739b516c7897/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations4.json/protocol-hashable--739b516c7897/quicktype.swift
@@ -3681,11 +3681,23 @@ extension WrothyClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations4.json/sendable-true--1c3982c78639/quicktype.swift b/head/swift/test/inputs/json/priority/combinations4.json/sendable-true--1c3982c78639/quicktype.swift
index 94537b0..6a8392f 100644
--- a/base/swift/test/inputs/json/priority/combinations4.json/sendable-true--1c3982c78639/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations4.json/sendable-true--1c3982c78639/quicktype.swift
@@ -3579,11 +3579,23 @@ extension WrothyClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations4.json/sendable-true__struct-or-class-class--265b1fe2e96e/quicktype.swift b/head/swift/test/inputs/json/priority/combinations4.json/sendable-true__struct-or-class-class--265b1fe2e96e/quicktype.swift
index fc5e25d..8963e23 100644
--- a/base/swift/test/inputs/json/priority/combinations4.json/sendable-true__struct-or-class-class--265b1fe2e96e/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations4.json/sendable-true__struct-or-class-class--265b1fe2e96e/quicktype.swift
@@ -4034,11 +4034,23 @@ extension WrothyClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations4.json/struct-or-class-class--238d6c8a12d4/quicktype.swift b/head/swift/test/inputs/json/priority/combinations4.json/struct-or-class-class--238d6c8a12d4/quicktype.swift
index 296310c..6984768 100644
--- a/base/swift/test/inputs/json/priority/combinations4.json/struct-or-class-class--238d6c8a12d4/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations4.json/struct-or-class-class--238d6c8a12d4/quicktype.swift
@@ -4034,11 +4034,23 @@ extension WrothyClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/combinations4.json/support-linux-false--4bd8c552e09a/quicktype.swift b/head/swift/test/inputs/json/priority/combinations4.json/support-linux-false--4bd8c552e09a/quicktype.swift
index 0340673..979b74d 100644
--- a/base/swift/test/inputs/json/priority/combinations4.json/support-linux-false--4bd8c552e09a/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combinations4.json/support-linux-false--4bd8c552e09a/quicktype.swift
@@ -3579,11 +3579,23 @@ extension WrothyClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     if #available(iOS 10.0, OSX 10.12, tvOS 10.0, watchOS 3.0, *) {
         decoder.dateDecodingStrategy = .custom { decoder in
             let dateStr = try decoder.singleValueContainer().decode(String.self).uppercased()
+            guard isValidDate(dateStr) else {
+                throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+            }
             let dateData = try JSONEncoder().encode(dateStr)
             let dateDecoder = JSONDecoder()
             dateDecoder.dateDecodingStrategy = .iso8601
diff --git a/base/swift/test/inputs/json/priority/combined-enum.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/combined-enum.json/default/quicktype.swift
index 5457846..73c3a72 100644
--- a/base/swift/test/inputs/json/priority/combined-enum.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/combined-enum.json/default/quicktype.swift
@@ -105,11 +105,23 @@ enum X: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/direct-recursive.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/direct-recursive.json/default/quicktype.swift
index cc12143..ac7fc91 100644
--- a/base/swift/test/inputs/json/priority/direct-recursive.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/direct-recursive.json/default/quicktype.swift
@@ -76,11 +76,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/empty-enum.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/empty-enum.json/default/quicktype.swift
index ceab4e4..b5dacd8 100644
--- a/base/swift/test/inputs/json/priority/empty-enum.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/empty-enum.json/default/quicktype.swift
@@ -95,11 +95,23 @@ extension Foo {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/identifiers.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/identifiers.json/default/quicktype.swift
index d945b0e..3cd6c11 100644
--- a/base/swift/test/inputs/json/priority/identifiers.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/identifiers.json/default/quicktype.swift
@@ -346,11 +346,23 @@ extension EmptyClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/issue2680-object-array.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/issue2680-object-array.json/default/quicktype.swift
index 1dc3667..295bbf8 100644
--- a/base/swift/test/inputs/json/priority/issue2680-object-array.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/issue2680-object-array.json/default/quicktype.swift
@@ -78,11 +78,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/issue2680-scalar-array.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/issue2680-scalar-array.json/default/quicktype.swift
index d9aacba..8fc0472 100644
--- a/base/swift/test/inputs/json/priority/issue2680-scalar-array.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/issue2680-scalar-array.json/default/quicktype.swift
@@ -33,11 +33,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/keywords.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/keywords.json/default/quicktype.swift
index 67ce4b1..353675b 100644
--- a/base/swift/test/inputs/json/priority/keywords.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/keywords.json/default/quicktype.swift
@@ -16280,11 +16280,23 @@ extension Yield {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/keywords.json/objective-c-support-true__struct-or-class-class--f14372afa3e4/quicktype.swift b/head/swift/test/inputs/json/priority/keywords.json/objective-c-support-true__struct-or-class-class--f14372afa3e4/quicktype.swift
index b1da663..4959b4f 100644
--- a/base/swift/test/inputs/json/priority/keywords.json/objective-c-support-true__struct-or-class-class--f14372afa3e4/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/keywords.json/objective-c-support-true__struct-or-class-class--f14372afa3e4/quicktype.swift
@@ -18313,11 +18313,23 @@ extension Yield {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/keywords.json/protocol-equatable--bd9068f466c1/quicktype.swift b/head/swift/test/inputs/json/priority/keywords.json/protocol-equatable--bd9068f466c1/quicktype.swift
index 9e33f68..67df0cb 100644
--- a/base/swift/test/inputs/json/priority/keywords.json/protocol-equatable--bd9068f466c1/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/keywords.json/protocol-equatable--bd9068f466c1/quicktype.swift
@@ -18314,11 +18314,23 @@ extension Yield {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/keywords.json/sendable-true--1c3982c78639/quicktype.swift b/head/swift/test/inputs/json/priority/keywords.json/sendable-true--1c3982c78639/quicktype.swift
index eec6b9b..acdfc6e 100644
--- a/base/swift/test/inputs/json/priority/keywords.json/sendable-true--1c3982c78639/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/keywords.json/sendable-true--1c3982c78639/quicktype.swift
@@ -16280,11 +16280,23 @@ extension Yield {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/quicktype.swift
index d35e9b9..51c7aed 100644
--- a/base/swift/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/kotlin-enum-class-case-collision.json/default/quicktype.swift
@@ -83,11 +83,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/list.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/list.json/default/quicktype.swift
index d54ae29..8c4002f 100644
--- a/base/swift/test/inputs/json/priority/list.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/list.json/default/quicktype.swift
@@ -61,11 +61,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/name-style.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/name-style.json/default/quicktype.swift
index 59297c2..c3a22ee 100644
--- a/base/swift/test/inputs/json/priority/name-style.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/name-style.json/default/quicktype.swift
@@ -75,11 +75,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/nbl-stats.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/nbl-stats.json/default/quicktype.swift
index b1cf3cd..ca8ebbc 100644
--- a/base/swift/test/inputs/json/priority/nbl-stats.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/nbl-stats.json/default/quicktype.swift
@@ -1555,11 +1555,23 @@ extension Totallds {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/nested-objects.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/nested-objects.json/default/quicktype.swift
index 7cc8535..06513e5 100644
--- a/base/swift/test/inputs/json/priority/nested-objects.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/nested-objects.json/default/quicktype.swift
@@ -55,11 +55,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/no-classes.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/no-classes.json/default/quicktype.swift
index dd30d6e..327fdd5 100644
--- a/base/swift/test/inputs/json/priority/no-classes.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/no-classes.json/default/quicktype.swift
@@ -8,11 +8,23 @@ typealias TopLevel = Int
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/number-map.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/number-map.json/default/quicktype.swift
index a509c47..a57cee6 100644
--- a/base/swift/test/inputs/json/priority/number-map.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/number-map.json/default/quicktype.swift
@@ -51,11 +51,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/omit-empty.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/omit-empty.json/default/quicktype.swift
index 6749620..3daab85 100644
--- a/base/swift/test/inputs/json/priority/omit-empty.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/omit-empty.json/default/quicktype.swift
@@ -99,11 +99,23 @@ extension Result {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/optional-union.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/optional-union.json/default/quicktype.swift
index 5005116..6db1de9 100644
--- a/base/swift/test/inputs/json/priority/optional-union.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/optional-union.json/default/quicktype.swift
@@ -106,11 +106,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/php-mixed-union.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/php-mixed-union.json/default/quicktype.swift
index f1c8007..00c5149 100644
--- a/base/swift/test/inputs/json/priority/php-mixed-union.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/php-mixed-union.json/default/quicktype.swift
@@ -144,11 +144,23 @@ extension MixedClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/php-validation.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/php-validation.json/default/quicktype.swift
index 58af76b..b930dbf 100644
--- a/base/swift/test/inputs/json/priority/php-validation.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/php-validation.json/default/quicktype.swift
@@ -67,11 +67,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/recursive.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/recursive.json/default/quicktype.swift
index 0f83376..40db9cf 100644
--- a/base/swift/test/inputs/json/priority/recursive.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/recursive.json/default/quicktype.swift
@@ -975,11 +975,23 @@ extension FormatsClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/simple-identifiers.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/simple-identifiers.json/default/quicktype.swift
index 6252a93..c1ced4c 100644
--- a/base/swift/test/inputs/json/priority/simple-identifiers.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/simple-identifiers.json/default/quicktype.swift
@@ -83,11 +83,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/union-constructor-clash.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/union-constructor-clash.json/default/quicktype.swift
index bce9c7c..011c0be 100644
--- a/base/swift/test/inputs/json/priority/union-constructor-clash.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/union-constructor-clash.json/default/quicktype.swift
@@ -127,11 +127,23 @@ enum Union: Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/unions.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/unions.json/default/quicktype.swift
index 2c747c8..127f2f8 100644
--- a/base/swift/test/inputs/json/priority/unions.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/unions.json/default/quicktype.swift
@@ -173,11 +173,23 @@ extension ZClass {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/url.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/url.json/default/quicktype.swift
index 270f7a8..126e7d7 100644
--- a/base/swift/test/inputs/json/priority/url.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/url.json/default/quicktype.swift
@@ -55,11 +55,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/priority/uuids.json/default/quicktype.swift b/head/swift/test/inputs/json/priority/uuids.json/default/quicktype.swift
index 8ffd62f..83ae66a 100644
--- a/base/swift/test/inputs/json/priority/uuids.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/priority/uuids.json/default/quicktype.swift
@@ -71,11 +71,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/samples/bitcoin-block.json/default/quicktype.swift b/head/swift/test/inputs/json/samples/bitcoin-block.json/default/quicktype.swift
index 1b96582..d01d57c 100644
--- a/base/swift/test/inputs/json/samples/bitcoin-block.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/samples/bitcoin-block.json/default/quicktype.swift
@@ -67,11 +67,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/samples/copy-with-property.json/default/quicktype.swift b/head/swift/test/inputs/json/samples/copy-with-property.json/default/quicktype.swift
index 5843756..c67c685 100644
--- a/base/swift/test/inputs/json/samples/copy-with-property.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/samples/copy-with-property.json/default/quicktype.swift
@@ -55,11 +55,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/samples/getting-started.json/default/quicktype.swift b/head/swift/test/inputs/json/samples/getting-started.json/default/quicktype.swift
index 4073bfe..487d83e 100644
--- a/base/swift/test/inputs/json/samples/getting-started.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/samples/getting-started.json/default/quicktype.swift
@@ -55,11 +55,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/samples/github-events.json/default/quicktype.swift b/head/swift/test/inputs/json/samples/github-events.json/default/quicktype.swift
index 06b8284..b8f1530 100644
--- a/base/swift/test/inputs/json/samples/github-events.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/samples/github-events.json/default/quicktype.swift
@@ -1659,11 +1659,23 @@ extension Array where Element == TopLevel.Element {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/samples/kitchen-sink.json/default/quicktype.swift b/head/swift/test/inputs/json/samples/kitchen-sink.json/default/quicktype.swift
index eaa5c2d..8ef4bd8 100644
--- a/base/swift/test/inputs/json/samples/kitchen-sink.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/samples/kitchen-sink.json/default/quicktype.swift
@@ -310,11 +310,23 @@ extension PurplePerson {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/samples/null-safe.json/default/quicktype.swift b/head/swift/test/inputs/json/samples/null-safe.json/default/quicktype.swift
index 43044f6..7c8aa54 100644
--- a/base/swift/test/inputs/json/samples/null-safe.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/samples/null-safe.json/default/quicktype.swift
@@ -159,11 +159,23 @@ extension Address {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/samples/objc-control-characters.json/default/quicktype.swift b/head/swift/test/inputs/json/samples/objc-control-characters.json/default/quicktype.swift
index 87a9381..e3f17a1 100644
--- a/base/swift/test/inputs/json/samples/objc-control-characters.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/samples/objc-control-characters.json/default/quicktype.swift
@@ -64,11 +64,23 @@ enum Value: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/samples/pokedex.json/default/quicktype.swift b/head/swift/test/inputs/json/samples/pokedex.json/default/quicktype.swift
index 94ea7f4..a018f9e 100644
--- a/base/swift/test/inputs/json/samples/pokedex.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/samples/pokedex.json/default/quicktype.swift
@@ -236,11 +236,23 @@ enum TypeElement: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/samples/reddit.json/default/quicktype.swift b/head/swift/test/inputs/json/samples/reddit.json/default/quicktype.swift
index 4c395f0..ff30027 100644
--- a/base/swift/test/inputs/json/samples/reddit.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/samples/reddit.json/default/quicktype.swift
@@ -794,11 +794,23 @@ enum Kind: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/samples/simple-object.json/default/quicktype.swift b/head/swift/test/inputs/json/samples/simple-object.json/default/quicktype.swift
index 0c8a730..400b6e4 100644
--- a/base/swift/test/inputs/json/samples/simple-object.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/samples/simple-object.json/default/quicktype.swift
@@ -59,11 +59,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/samples/simple-object.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift b/head/swift/test/inputs/json/samples/simple-object.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift
index 577cfdf..6d43dd0 100644
--- a/base/swift/test/inputs/json/samples/simple-object.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift
+++ b/head/swift/test/inputs/json/samples/simple-object.json/final-classes-true__struct-or-class-class--d3c62ec7414d/quicktype.swift
@@ -66,11 +66,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/samples/simple-object.json/protocol-hashable--739b516c7897/quicktype.swift b/head/swift/test/inputs/json/samples/simple-object.json/protocol-hashable--739b516c7897/quicktype.swift
index ff091e3..1b6e1ea 100644
--- a/base/swift/test/inputs/json/samples/simple-object.json/protocol-hashable--739b516c7897/quicktype.swift
+++ b/head/swift/test/inputs/json/samples/simple-object.json/protocol-hashable--739b516c7897/quicktype.swift
@@ -65,11 +65,23 @@ extension TopLevel {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/samples/spotify-album.json/default/quicktype.swift b/head/swift/test/inputs/json/samples/spotify-album.json/default/quicktype.swift
index 78e4588..8bf4eb5 100644
--- a/base/swift/test/inputs/json/samples/spotify-album.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/samples/spotify-album.json/default/quicktype.swift
@@ -527,11 +527,23 @@ extension Item {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/samples/us-avg-temperatures.json/default/quicktype.swift b/head/swift/test/inputs/json/samples/us-avg-temperatures.json/default/quicktype.swift
index 869ab4a..7916fad 100644
--- a/base/swift/test/inputs/json/samples/us-avg-temperatures.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/samples/us-avg-temperatures.json/default/quicktype.swift
@@ -159,11 +159,23 @@ extension Description {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift/test/inputs/json/samples/us-senators.json/default/quicktype.swift b/head/swift/test/inputs/json/samples/us-senators.json/default/quicktype.swift
index 64cc57f..409c6a8 100644
--- a/base/swift/test/inputs/json/samples/us-senators.json/default/quicktype.swift
+++ b/head/swift/test/inputs/json/samples/us-senators.json/default/quicktype.swift
@@ -459,11 +459,23 @@ enum Title: String, Codable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift-sendable-objective-c/test/inputs/json/priority/combinations1.json/default/quicktype.swift b/head/swift-sendable-objective-c/test/inputs/json/priority/combinations1.json/default/quicktype.swift
index fe9c314..e1a6667 100644
--- a/base/swift-sendable-objective-c/test/inputs/json/priority/combinations1.json/default/quicktype.swift
+++ b/head/swift-sendable-objective-c/test/inputs/json/priority/combinations1.json/default/quicktype.swift
@@ -3120,11 +3120,23 @@ enum Jacutinga: Codable, Sendable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift-sendable-objective-c/test/inputs/json/samples/pokedex.json/default/quicktype.swift b/head/swift-sendable-objective-c/test/inputs/json/samples/pokedex.json/default/quicktype.swift
index 98e6d35..ea33292 100644
--- a/base/swift-sendable-objective-c/test/inputs/json/samples/pokedex.json/default/quicktype.swift
+++ b/head/swift-sendable-objective-c/test/inputs/json/samples/pokedex.json/default/quicktype.swift
@@ -268,11 +268,23 @@ enum TypeElement: String, Codable, Sendable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
diff --git a/base/swift-sendable-objective-c/test/inputs/json/samples/pokedex.json/struct-or-class-struct--aa0cc2601d8a/quicktype.swift b/head/swift-sendable-objective-c/test/inputs/json/samples/pokedex.json/struct-or-class-struct--aa0cc2601d8a/quicktype.swift
index 981401e..67e9899 100644
--- a/base/swift-sendable-objective-c/test/inputs/json/samples/pokedex.json/struct-or-class-struct--aa0cc2601d8a/quicktype.swift
+++ b/head/swift-sendable-objective-c/test/inputs/json/samples/pokedex.json/struct-or-class-struct--aa0cc2601d8a/quicktype.swift
@@ -236,11 +236,23 @@ enum TypeElement: String, Codable, Sendable {
 
 // MARK: - Helper functions for creating encoders and decoders
 
+private func isValidDate(_ value: String) -> Bool {
+    let formatter = DateFormatter()
+    formatter.locale = Locale(identifier: "en_US_POSIX")
+    formatter.timeZone = TimeZone(secondsFromGMT: 0)
+    formatter.dateFormat = "u-MM-dd"
+    formatter.isLenient = false
+    return formatter.date(from: String(value.prefix(10))) != nil
+}
+
 func newJSONDecoder() -> JSONDecoder {
     let decoder = JSONDecoder()
     decoder.dateDecodingStrategy = .custom({ (decoder) -> Date in
         let container = try decoder.singleValueContainer()
         let dateStr = try container.decode(String.self).uppercased()
+        guard isValidDate(dateStr) else {
+            throw DecodingError.dataCorrupted(.init(codingPath: decoder.codingPath, debugDescription: "Invalid date"))
+        }
 
         let formatter = DateFormatter()
         formatter.calendar = Calendar(identifier: .iso8601)
