Skip to content

[Analytics] Kinesis migration from Pinpoint: No event enrichment or session tracking #4180

Description

@sdorairaj-tab

Is your feature request related to a problem? Please describe.

Summary

We are migrating from AWSPinpointAnalyticsPlugin to AmplifyKinesisClient (v2.54.0) as recommended by the Pinpoint end-of-support docs. The Kinesis client handles transport well (batching, caching, retries), but there is no replacement for the enrichment layer that Pinpoint provided automatically.

What's missing

When using AWSPinpointAnalyticsPlugin, every event was automatically enriched with:

  • Device metadata (make, model, OS, locale, timezone)
  • Application metadata (app ID, version, SDK version, Cognito pool ID)
  • Client identity (persistent client ID, Cognito identity ID)
  • Session lifecycle (start/stop/pause/resume tied to app foreground/background state)
  • Structured event envelope (the JSON format delivered to S3 via Pinpoint event streaming)

AmplifyKinesisClient provides none of this. It accepts raw Data and sends it to a stream. Our downstream pipelines depend on the Pinpoint event envelope structure. Migrating currently requires manually reimplementing all of the above, including the session state machine (SessionClient.swift, PinpointSession.swift) from InternalAWSPinpoint.

Environment

Amplify Swift 2.54.1
Affects: iOS and Android

Describe the solution you'd like

Request

Provide a higher-level analytics plugin for Kinesis that replicates Pinpoint's event enrichment and session tracking. The logic already exists in InternalAWSPinpoint. Decoupling it from the Pinpoint API transport and making it usable with AmplifyKinesisClient would make the migration practical.

Describe alternatives you've considered

Manually reimplementing Pinpoint's device metadata collection, session state machine, endpoint tracking, and event envelope construction in our app's analytics provider. This works but is a significant effort for every Pinpoint customer migrating to Kinesis, and duplicates logic that already exists in InternalAWSPinpoint (SessionClient.swift, PinpointSession.swift). Ideally this logic would be decoupled from the Pinpoint API transport and made reusable with AmplifyKinesisClient.

Is the feature request related to any of the existing Amplify categories?

Analytics

Additional context

Related to Pinpoint - Kinesis migration

Metadata

Metadata

Assignees

No one assigned

    Labels

    analyticsIssues related to the Analytics categoryfeature-requestRequest a new feature

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions