$ account aws-amplify
This repository is the AWS Amplify JavaScript library, a production-grade client SDK for building cloud-connected web and React Native applications. In production, it runs inside end-user apps and mediates access to AWS services: Cognito authentication flows (SRP, OAuth/PKCE, WebAuthn passkeys, token refresh, MFA), S3 storage (multipart uploads, presigned URLs, path-based operations, resumable uploads), AppSync GraphQL/REST APIs, real-time WebSocket subscriptions and events, Pinpoint/Kinesis/Firehose/Personalize analytics, push notifications and in-app messaging, DataStore offline synchronization, Geo, Predictions, Lex, and IoT PubSub. It also ships a Next.js adapter that provides server-side rendering support with per-request cookie-based token storage and auth route handlers for both App Router and Pages Router. Architecturally this is a TypeScript monorepo: a `core` package provides foundational primitives (branded `AmplifyContext`, storage abstractions, HTTP middleware composition, SigV4 signing, retry logic, Hub event bus, cache), while category packages (`auth`, `storage`, `api-graphql`, `api-rest`, `analytics`, `notifications`, `datastore`, `geo`, `pubsub`) implement provider-specific logic behind a common context-first API pattern. The public `aws-amplify` umbrella package re-exports these through subpath exports, with `server` and `internals` entry points for SSR and advanced use. React Native support is provided through native modules for passkeys, push notifications, and web browser sessions. Data flows are typically: configure the Amplify singleton, resolve a context (global or per-request), call a category API, which uses composed HTTP middleware and generated service clients to talk to AWS endpoints, with analytics events buffered and flushed asynchronously. The codebase is actively maintained, with recent commits, extensive CI/CD workflows, changesets, and a large test suite. However, it carries notable transitional debt: Amazon Pinpoint APIs are deprecated with an October 2026 end-of-support, legacy v5 compatibility shims and deprecated key-based storage APIs remain, and some logic is deliberately duplicated across packages (e.g., connection state monitors and event buffers). Despite this, the architecture is coherent, the middleware and context patterns are well-designed, and the SDK is heavily tested across browser, React Native, and server environments.