July 14th, 2026
New this release:
-
🎉 (server, @lauzadis) Support enum-typed members in server event stream unions. Previously, the server codegen rejected any model with an
enum-trait shape reachable through an event stream, flagging it as an unsupported constraint. Theenumtrait is now excluded from that check, and the generated code is updated so it actually compiles and behaves correctly: event stream members skip theMaybeConstrained/builder unconstrained-type wrapping, and the generated unmarshaller callsbuild()on the parsed payload so a constraint violation surfaces as an unmarshalling error. Related: smithy-lang/smithy#1388. -
🎉 (server, @lauzadis) Add a
codegen.allowMissingUnionVariantconfiguration (boolean, defaultfalse). Whentrue, a union JSON body whose object did not set any recognized variant (e.g.{}or{"unknownKey": ...}) parses toOk(None)rather than returning a deserialization error. Opt in only for services that have shipped clients depending on the lenient behavior. Client codegen is unaffected. -
🎉 (client, aws-sdk-rust#146) Add support for third-party libraries to self-identify in the SDK user agent via framework metadata, addressing the long-standing request to customize the user agent (aws-sdk-rust#146).
A new public
FrameworkMetadatatype (re-exported asaws_config::FrameworkMetadataand on each client'sconfigmodule) can be set on the client config builder, onSdkConfig, and viaaws_config::ConfigLoader::framework_metadata:let config = aws_config::from_env() .framework_metadata(FrameworkMetadata::new("some-framework", Some("1.0"))?) .load() .await;
Framework metadata is additive — multiple libraries (and the application) can each self-identify without clobbering one another. The name/version are validated against the same charset as
AppName(rejecting, not sanitizing, invalid characters to prevent header injection). TheUserAgentInterceptorde-duplicates entries on(name, version)preserving first-seen order, caps the total at 10 unique entries, and renders each aslib/{name}/{version}in thex-amz-user-agentheader. -
🐛 (all, smithy-rs#4435) Gate event-stream
try_recv_initialto RPC protocols (awsJson,awsQuery,rpcv2Cbor) on both the client fluent builder and the server protocol generator. Previously, all event-stream operations performed an unconditionaltry_recv_initial, which can hang indefinitely on REST-bound operations whose streams take a long time to produce their first event. This change is a stopgap; the planned permanent fix tracked in #4435 will instead surface initial messages only when explicitly requested.
Contributors
Thank you for your contributions! ❤