Skip to content

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

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.

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