Repository navigation
Description
Is your feature request related to a problem? Please describe.
Description
We are currently migrating an iOS application from the legacy AWS SDKs to the modern AWS stack using Amplify Swift and aws-sdk-swift.
During this migration, we identified a dependency conflict that makes it impossible to use Amplify Swift and AWS IoT Device SDK for Swift in the same project.
Current dependency chain
Amplify Swift (2.53.x and also the latest 2.58.x releases) depends on:
aws-sdk-swift 1.6.71
which in turn depends on:
aws-crt-swift 0.58.1
On the other hand, AWS IoT Device SDK for Swift depends on:
aws-crt-swift 0.61.2+
As a result, Swift Package Manager cannot resolve the dependencies when both SDKs are added to the same project.
Repositories involved
Amplify Swift:
https://github.com/aws-amplify/amplify-swift
AWS SDK Swift:
https://github.com/awslabs/aws-sdk-swift
AWS CRT Swift:
https://github.com/awslabs/aws-crt-swift
AWS IoT Device SDK Swift:
https://github.com/aws/aws-iot-device-sdk-swift
Impact
This currently prevents applications from adopting the modern AWS IoT SDK while also using Amplify Swift for authentication and Cognito integration.
In our case, we have already migrated authentication to Amplify and aws-sdk-swift, but we are forced to continue using the legacy AWS IoT SDK because the modern AWS IoT Device SDK cannot coexist with Amplify in the same project.
Questions
-
Is there an official plan to align the aws-crt-swift dependency versions across these SDKs?
-
Is there a recommended architecture for applications that need both Amplify Swift and AWS IoT Device SDK for Swift?
-
Are there plans to:
- Update Amplify/aws-sdk-swift to support newer aws-crt-swift versions, or
- Provide a compatible AWS IoT Device SDK release that works with the CRT version currently used by Amplify?
AWS Premium Support has already acknowledged this dependency conflict and escalated the question internally to the SDK teams for clarification.
Any guidance would be greatly appreciated.
Describe the solution you'd like
Allow Amplify Swift and AWS IoT Device SDK for Swift to coexist in the same project without dependency conflicts.
Currently, Amplify Swift depends on aws-sdk-swift, which pins aws-crt-swift to version 0.58.1, while AWS IoT Device SDK for Swift requires aws-crt-swift 0.61.2 or newer. This makes it impossible to use both SDKs together in a single application.
Ideally, the AWS SDK ecosystem should align the aws-crt-swift dependency versions across Amplify Swift, aws-sdk-swift, and AWS IoT Device SDK for Swift, allowing customers to use Amplify for authentication and Cognito integration while adopting the modern AWS IoT SDK.
A compatible dependency strategy or an officially recommended integration path would significantly simplify migrations from the legacy AWS SDKs.
Describe alternatives you've considered
We evaluated several alternatives:
- Continuing to use the legacy AWS IoT SDK while migrating authentication to Amplify.
- Implementing MQTT communication manually using WebSocket and SigV4 signing.
- Using aws-crt-swift directly instead of AWS IoT Device SDK for Swift.
- Forking AWS IoT Device SDK for Swift and modifying its dependencies.
- Maintaining separate implementations for authentication and IoT connectivity.
However, all of these alternatives increase maintenance complexity, require custom implementations, or depend on SDKs that are currently in preview status.
Is the feature request related to any of the existing Amplify categories?
No response
Additional context
AWS Premium Support reviewed this issue and confirmed the dependency conflict between Amplify Swift and AWS IoT Device SDK for Swift. The case has been escalated internally to the SDK teams for guidance regarding future compatibility and recommended migration paths.
Our use case is a production iOS application currently migrating from the legacy AWS SDKs to Amplify Swift and aws-sdk-swift. The dependency conflict is the main blocker preventing adoption of the modern AWS IoT Device SDK for Swift.
Activity
harsh62 commentedon Jun 5, 2026
We will bump the dependency and cut a release next week.
jflmateusnassar commentedon Jun 5, 2026
Thank you for the quick response and for looking into this.
This is great news and will help a lot with migrations from the legacy AWS SDKs to Amplify and the modern AWS SDK stack.
We appreciate the support and look forward to testing the new release once it becomes available.
harsh62 commentedon Jun 8, 2026
Thanks for the detailed write-up, and for confirming this with Premium Support.
We investigated and want to share where things stand.
Amplify side — bumped to the latest aws-sdk-swift. Amplify currently pins
aws-sdk-swift 1.6.71, which brings inaws-crt-swift 0.58.1. We're bumping Amplify to the latestaws-sdk-swift 1.7.14, which moves the transitiveaws-crt-swiftto0.61.1. That narrows the gap considerably.The remaining blocker is upstream in aws-sdk-swift, not Amplify. Even at the latest release,
aws-sdk-swiftpinsaws-crt-swiftwith a hardexact:constraint:1.7.14(latest release)exact: "0.61.1"main(unreleased)exact: "0.61.1"1.0.0.upToNextMajor(from: "0.61.2")→[0.61.2, 1.0.0)Because
aws-sdk-swiftuses anexactpin (rather than a range), SPM cannot satisfy the IoT SDK's>= 0.61.2requirement no matter which Amplify version you use.aws-crt-swift 0.61.2and0.62.0are both published, butaws-sdk-swifthas not yet adopted them.So bumping Amplify to
1.7.14is the right move and we'll ship it, but it does not fully resolve the coexistence problem on its own — that needsaws-sdk-swiftto move its CRT pin to>= 0.61.2.We've opened an upstream issue with the aws-sdk-swift team to track that bump: awslabs/aws-sdk-swift#2181
We'll keep this issue open and linked until the upstream pin is updated and a matching Amplify release ships.
github-actions commentedon Jun 16, 2026
This has been identified as a feature request. If this feature is important to you, we strongly encourage you to give a 👍 reaction on the request. This helps us prioritize new features most important to you. Thank you!
chore(deps): bump aws-sdk-swift from 1.6.71 to 1.7.21
harsh62 commentedon Jun 17, 2026
Update — this is now resolved upstream, and the Amplify-side fix is staged.
As of
aws-sdk-swift 1.7.21, theaws-crt-swiftdependency is no longer pinned withexact:— it now floats (from: "0.63.0"up to the next major). This meansaws-sdk-swiftand the AWS IoT Device SDK for Swift can coexist in the same project, since theiraws-crt-swiftranges now overlap. The upstream tracking issue (awslabs/aws-sdk-swift#2181) has been closed as resolved.On the Amplify side, #4234 now bumps
aws-sdk-swiftto1.7.21:This will ship in an upcoming Amplify Swift release. We'll confirm here once it's out. Thanks for your patience, and for the detailed write-up that helped us track this down.
chore(deps): bump aws-sdk-swift from 1.6.71 to 1.7.21
alexlima-271182 commentedon Jun 24, 2026
Hi, I'm on the same team as @jflmateusnassar . I updated
aws-sdk-swiftto version 1.7.21, but when trying to addaws-iot-device-sdk-swiftwith the "up to next major version" setting, I keep getting a "Failed Resolution Package" error.jflmateusnassar commentedon Jun 29, 2026
Hi @harsh62 ,
Thanks for the update. Since the upstream dependency issue has already been resolved, it looks like the only remaining step is merging #4234.
This issue is currently blocking our production work because we need to use Amplify Swift together with the AWS IoT Device SDK for Swift.
Is there any chance #4234 could be reviewed and merged soon? We'd really appreciate it.
Thanks again!
harsh62 commentedon Jun 29, 2026
@jflmateusnassar Thanks for following up. The PR that I opened up actually found a regression via the integration test workflows with the SDK. We've been talking to the SDK team internally to get the regression resolved. I will post an update on the ticket when I have more information from the SDK team.
I am hoping to get some updates from the SDK team in the next couple of days.
chore(deps): bump aws-sdk-swift from 1.6.71 to 1.7.27
chore(deps): bump aws-sdk-swift from 1.6.71 to 1.7.27
chore(deps): bump aws-sdk-swift from 1.6.71 to 1.7.27 (#4234)
github-actions commentedon Jun 30, 2026
This issue is now closed. Comments on closed issues are hard for our team to see.
If you need more assistance, please open a new issue that references this one.
If you wish to keep having a conversation with other community members under this issue feel free to do so.
harsh62 commentedon Jun 30, 2026
Please use the latest release https://github.com/aws-amplify/amplify-swift/releases/tag/2.58.4
jflmateusnassar commentedon Jul 1, 2026
One suggestion that could help avoid this kind of issue in the future would be to have Amplify Swift depend on
aws-sdk-swiftusingfrom:instead ofexact:.Using
exact:means that every patch release ofaws-sdk-swiftrequires an Amplify Swift update, even when the changes are fully backward compatible. In situations like this, where the fix was already available upstream, users still had to wait for a new Amplify Swift release before they could consume it.Using a version range such as
from: "1.7.27"would allow compatible patch releases to be adopted automatically while still respecting semantic versioning. It would also reduce the time users remain blocked waiting for an Amplify release when the fix already exists inaws-sdk-swift.Is there a specific reason why Amplify pins
aws-sdk-swiftwithexact:instead of using a compatible version range?harsh62 commentedon Jul 2, 2026
@jflmateusnassar Your suggestion is spot on and that is where we want to be. Currently the Amplify team and SDK team don't have a shared workflow that can guarantee (or with certain degree of confidence) that a SDK update won't break Amplify. In historical context, we've observed that time to time breaking changes do make it to Amplify with a SDK update. So to avoid that until we have a concrete solution, we've pinned versions where our checks (like our Category integration tests) have passed.
You can see within this release update we were able to find a regression where certain Auth flow broke.
jflmateusnassar commentedon Jul 2, 2026
@harsh62 Thanks for the explanation and for all the work that went into resolving this issue.
I completely understand the reasoning behind pinning the SDK versions until a shared validation workflow is in place.
Thanks again to everyone involved for the support and for getting this fixed!