Skip to content

chore(deps): bump aws-sdk-swift from 1.7.27 to 1.7.53 - #4262

Merged
harsh62 merged 1 commit into
mainfrom
worktree-bump-aws-sdk-1.7.53
Aug 4, 2026
Merged

chore(deps): bump aws-sdk-swift from 1.7.27 to 1.7.53#4262
harsh62 merged 1 commit into
mainfrom
worktree-bump-aws-sdk-1.7.53

Conversation

@harsh62

@harsh62 harsh62 commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Issue #

N/A — routine dependency maintenance.

Description

Updates the aws-sdk-swift dependency to 1.7.53, which moves the transitive dependency:

smithy-swift  0.223.0 -> 0.238.0

aws-crt-swift stays resolved at 0.64.1: smithy-swift raised its floor from from: "0.63.0" to from: "0.64.0", which the already-pinned 0.64.1 satisfies. No other transitive pins change, so the aws-crt-swift coexistence with the AWS IoT Device SDK for Swift established in #4234 is preserved.

aws-sdk-swift 1.7.28 → 1.7.53

The range is almost entirely API and endpoint model regeneration. For the services Amplify depends on, the changes are additive only:

  • Cognito Identity Provider — gains GetProvisionedLimit / UpdateProvisionedLimit (1.7.30), EumsSms in SmsConfigurationType (1.7.41), and AdminGetUserAuthFactors (1.7.46)
  • CloudWatch Logs — gains storage-tier and lookup-table APIs
  • TranscribeStreaming — gains an optional TranscriptFormat parameter
  • S3 — documentation-only changes

The one breaking entry in the range (1.7.28 removes SimSpaceWeaver, Panorama, IoT Events, and IoT Events Data) does not touch any Amplify dependency.

smithy-swift 0.224.0 → 0.238.0

The breaking changes here are confined to the @_spi(SchemaBasedSerde) codegen surface that only the SDK's own generated code consumes:

  • ShapeDeserializer.readInteger / readLong narrow to Int32 / Int64
  • readDocument returns any SmithyDocument instead of the concrete wrapper
  • ReadStructConsumer is replaced by a deserializeMember(_:_:) requirement; traits became classes, so getTrait is no longer throws

The modules Amplify imports directly — SmithyIdentity, SmithyRetries, SmithyHTTPAuth and their API variants — are unchanged, and Sources/Smithy/Document/ is identical between the two versions. ClientRuntime's only behavioral delta is percent-encoding moving its implementation into SmithyHTTPAPI.URLEncodingUtils with the same allowed character sets (a pure refactor), plus a telemetry-only switch from Date() to CLOCK_MONOTONIC_RAW for serialization timing.

Regression check on the #4234 blocker

The previous bump was gated on smithy-swift 0.223.0 because the schema-based JSON deserializer (introduced in 0.206.0) regressed null handling for non-sparse maps, breaking deserialization of Cognito RespondToAuthChallenge responses whose ChallengeParameters contain a null value — e.g. "FRIENDLY_DEVICE_NAME": null in the SELECT_MFA_TYPE challenge.

Verified this has not returned in 0.238.0. Sources/SmithyJSON/Deserializer.swift is byte-identical to 0.223.0 in the relevant blocks: readMap and readList still compact UnexpectedNullError out of non-sparse collections, and readStruct still skips null members. Confirmed empirically as well, by building a throwaway package against 1.7.53 with a stub HTTPClient returning that exact SELECT_MFA_TYPE payload — deserialization succeeds with the null key compacted out, matching 0.223.0 behavior.

Follow-up worth tracking separately

Releases 1.7.50+ carry an announcement that in Fall 2026 the SDK will drop support for older Swift/Xcode versions and several Apple and Linux platforms (aws-sdk-swift discussion #2140). This does not affect the current bump — no new minimum Swift version or platform floor is introduced here — but it will eventually require raising Amplify's platform floors.

General Checklist

  • Added new tests to cover change, if needed — dependency-only change, no behavioral surface added. See note below.
  • Build succeeds with all target using Swift Package Manager
  • All unit tests pass
  • All integration tests pass — not run locally; needs a CI/maintainer run
  • Security oriented best practices and standards are followed (e.g. using input sanitization, principle of least privilege, etc)
  • Documentation update for the change if required — no public API change
  • PR title conforms to conventional commit style
  • New or updated tests include Given When Then inline code documentation and are named accordingly testThing_condition_expectation() — no new tests
  • If breaking change, documentation/changelog update with migration instructions — not a breaking change for Amplify consumers

Verification

  • swift build — all 1131 modules compile, zero errors, no new warnings
  • swift test — 1028 tests across all 21 test targets, zero failures
  • swiftformat --lint — clean

Note on test coverage

There is currently no regression test in this repo pinning the null-ChallengeParameters deserialization behavior described above. The existing .selectMfaType tests construct challengeParameters as already-decoded Swift dictionaries, so they exercise the state machines rather than the JSON deserializer — meaning a future smithy-swift bump could silently reintroduce this bug, as it did once already. Adding a test that feeds a raw JSON body with a null map value through the Cognito client would close that gap; happy to add it here or in a follow-up.

Updates the aws-sdk-swift dependency to 1.7.53, which moves the
transitive dependency:

  smithy-swift  0.223.0 -> 0.238.0

aws-crt-swift stays resolved at 0.64.1: smithy-swift raised its floor
from `from: "0.63.0"` to `from: "0.64.0"`, which the already-pinned
0.64.1 satisfies. No other transitive pins change.

The aws-sdk-swift range is almost entirely API and endpoint model
regeneration. For the services Amplify depends on the changes are
additive only: Cognito Identity Provider gains GetProvisionedLimit /
UpdateProvisionedLimit, EumsSms in SmsConfigurationType, and
AdminGetUserAuthFactors; CloudWatch Logs gains storage-tier and
lookup-table APIs; TranscribeStreaming gains an optional
TranscriptFormat parameter. The one breaking entry in the range
(1.7.28 removes SimSpaceWeaver, Panorama, IoT Events, IoT Events Data)
does not touch any Amplify dependency.

smithy-swift's breaking changes in 0.224.0-0.238.0 are confined to the
@_spi(SchemaBasedSerde) codegen surface that only the SDK's own
generated code consumes: ShapeDeserializer.readInteger/readLong
narrowing to Int32/Int64, readDocument returning `any SmithyDocument`,
and ReadStructConsumer being replaced by a deserializeMember
requirement. The modules Amplify imports directly - SmithyIdentity,
SmithyRetries, SmithyHTTPAuth and their API variants - are unchanged.
ClientRuntime's only behavioral delta is percent-encoding moving its
implementation into SmithyHTTPAPI.URLEncodingUtils with the same
allowed character sets.

Verified that the non-sparse-map null regression which gated the
previous bump (#4234) has not returned: SmithyJSON's Deserializer
still compacts UnexpectedNullError out of non-sparse maps and lists,
so Cognito RespondToAuthChallenge responses carrying a null
ChallengeParameters value (e.g. "FRIENDLY_DEVICE_NAME": null in the
SELECT_MFA_TYPE challenge) continue to deserialize.
@harsh62
harsh62 requested a review from a team as a code owner August 4, 2026 14:14
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 14:14 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 15:59 — with GitHub Actions Inactive
@harsh62
harsh62 temporarily deployed to IntegrationTest August 4, 2026 15:59 — with GitHub Actions Inactive
@codecov

codecov Bot commented Aug 4, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 66.85%. Comparing base (a7c45dc) to head (00ad889).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4262      +/-   ##
==========================================
+ Coverage   66.83%   66.85%   +0.01%     
==========================================
  Files        1170     1170              
  Lines       44539    44539              
==========================================
+ Hits        29768    29776       +8     
+ Misses      14771    14763       -8     
Flag Coverage Δ
API_plugin_unit_test 68.36% <ø> (ø)
AWSPluginsCore 68.07% <ø> (ø)
Amplify 47.56% <ø> (-0.02%) ⬇️
Amplify_Foundation_Bridge_unit_test 62.28% <ø> (ø)
Amplify_Foundation_unit_test 67.64% <ø> (ø)
Analytics_plugin_unit_test 83.43% <ø> (ø)
Auth_plugin_unit_test 72.43% <ø> (-0.15%) ⬇️
Connect_unit_test 42.95% <ø> (ø)
DataStore_plugin_unit_test 82.07% <ø> (+0.39%) ⬆️
EventEnrichment_unit_test 88.98% <ø> (ø)
Firehose_plugin_unit_test 53.15% <ø> (ø)
Geo_plugin_unit_test 73.39% <ø> (ø)
Kinesis_plugin_unit_test 52.17% <ø> (ø)
Logging_plugin_unit_test 64.86% <ø> (ø)
Predictions_plugin_unit_test 34.09% <ø> (ø)
PushNotifications_plugin_unit_test 84.58% <ø> (ø)
RecordCache_unit_test 76.40% <ø> (ø)
Storage_plugin_unit_test 78.67% <ø> (ø)
unit_tests 66.85% <ø> (+0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants