CodableConfiguration allows you to create Codable types whose members don’t all conform to Codable. For types that can’t support encoding and decoding by themselves but could become encodable and decodable with some statically-defined information, use the @CodableConfiguration wrapper. This lets you assign a configuration provider — a type that conforms to both EncodingConfigurationProviding and DecodingConfigurationProviding — to supply this data.
Limiting the CodableConfiguration to statically-defined information protects clients from loading unexpected data, similar to the protection provided by NSSecureCoding.
In the following example, the Message type uses @CodableConfiguration for an AttributedString property called content. While AttributedString does conform to Codable, it can only encode its known attributes — those declared by the platform SDK — as part of this conformance. By adding a CodableConfiguration for the custom MyAttributes type, Message uses encode(to:configuration:) when encoding content, which preserves the custom attributes.