Skip to content

Dependency conflict between Amplify Swift and AWS IoT Device SDK for Swift #4233

Closed

Description

@jflmateusnassar

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

  1. Is there an official plan to align the aws-crt-swift dependency versions across these SDKs?

  2. Is there a recommended architecture for applications that need both Amplify Swift and AWS IoT Device SDK for Swift?

  3. 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

  1. harsh62 commented on Jun 5, 2026

    @harsh62
    Contributor

    We will bump the dependency and cut a release next week.

  2. added
    coreAmplify Core components
    and removed on Jun 5, 2026
  3. jflmateusnassar commented on Jun 5, 2026

    @jflmateusnassar
    Author

    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.

  4. harsh62 commented on Jun 8, 2026

    @harsh62
    Contributor

    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 in aws-crt-swift 0.58.1. We're bumping Amplify to the latest aws-sdk-swift 1.7.14, which moves the transitive aws-crt-swift to 0.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-swift pins aws-crt-swift with a hard exact: constraint:

    Package aws-crt-swift constraint
    aws-sdk-swift 1.7.14 (latest release) exact: "0.61.1"
    aws-sdk-swift main (unreleased) exact: "0.61.1"
    AWS IoT Device SDK for Swift 1.0.0 .upToNextMajor(from: "0.61.2") → [0.61.2, 1.0.0)

    Because aws-sdk-swift uses an exact pin (rather than a range), SPM cannot satisfy the IoT SDK's >= 0.61.2 requirement no matter which Amplify version you use. aws-crt-swift 0.61.2 and 0.62.0 are both published, but aws-sdk-swift has not yet adopted them.

    So bumping Amplify to 1.7.14 is the right move and we'll ship it, but it does not fully resolve the coexistence problem on its own — that needs aws-sdk-swift to 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.

  5. github-actions commented on Jun 16, 2026

    @github-actions
    Contributor

    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!

  6. added a commit that references this issue on Jun 17, 2026
    b5a42c4
  7. harsh62 commented on Jun 17, 2026

    @harsh62
    Contributor

    Update — this is now resolved upstream, and the Amplify-side fix is staged.

    As of aws-sdk-swift 1.7.21, the aws-crt-swift dependency is no longer pinned with exact: — it now floats (from: "0.63.0" up to the next major). This means aws-sdk-swift and the AWS IoT Device SDK for Swift can coexist in the same project, since their aws-crt-swift ranges 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-swift to 1.7.21:

    Package Before After
    aws-sdk-swift 1.6.71 1.7.21
    aws-crt-swift 0.58.1 0.63.0
    smithy-swift 0.191.0 0.219.0

    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.

  8. added a commit that references this issue on Jun 18, 2026
    240e5f0
  9. alexlima-271182 commented on Jun 24, 2026

    @alexlima-271182

    Hi, I'm on the same team as @jflmateusnassar . I updated aws-sdk-swift to version 1.7.21, but when trying to add aws-iot-device-sdk-swift with the "up to next major version" setting, I keep getting a "Failed Resolution Package" error.

  10. jflmateusnassar commented on Jun 29, 2026

    @jflmateusnassar
    Author

    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!

  11. harsh62 commented on Jun 29, 2026

    @harsh62
    Contributor

    @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.

  12. added 3 commits that reference this issue on Jun 30, 2026
    304eb68
    4cb7afc
    77d751f
  13. github-actions commented on Jun 30, 2026

    @github-actions
    Contributor

    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.

  14. harsh62 commented on Jun 30, 2026

    @harsh62
    Contributor
  15. jflmateusnassar commented on Jul 1, 2026

    @jflmateusnassar
    Author

    One suggestion that could help avoid this kind of issue in the future would be to have Amplify Swift depend on aws-sdk-swift using from: instead of exact:.

    Using exact: means that every patch release of aws-sdk-swift requires 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 in aws-sdk-swift.

    Is there a specific reason why Amplify pins aws-sdk-swift with exact: instead of using a compatible version range?

  16. harsh62 commented on Jul 2, 2026

    @harsh62
    Contributor

    @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.

  17. jflmateusnassar commented on Jul 2, 2026

    @jflmateusnassar
    Author

    @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!

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    coreAmplify Core componentsfeature-requestRequest a new feature

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions