What is the SDK?
The SDK enables JavaScript and TypeScript applications to call Amazon Web Services APIs from Node.js, browsers, and React Native. V3 replaces theaws-sdk v2 package with a modular architecture: separate packages per service, a redesigned middleware stack, and native TypeScript types throughout.
The two key differences from v2:
- Modular packages — install
@aws-sdk/client-s3or@aws-sdk/client-dynamodbindependently instead of the entireaws-sdk. - TypeScript-first — every client, command input, and command output is fully typed with no
@typespackage needed.
Modular packages
One npm package per AWS service. Install only what your application needs.
TypeScript native
Full types for every client, command, and input/output shape. No
@types package required.Middleware stack
Intercept and modify requests and responses at any lifecycle step: initialize, serialize, build, finalize, or deserialize.
Async paginators
Use
for await...of over paginated results without managing continuation tokens yourself.Cross-platform
Works in Node.js, browsers, and React Native with platform-appropriate HTTP and crypto implementations.
Higher-level libraries
@aws-sdk/lib-dynamodb and @aws-sdk/lib-storage wrap lower-level clients for common patterns.Repository structure
The SDK source is a monorepo with three top-level directories, each with a different purpose and npm naming convention.| Directory | npm prefix | Contents | Maintained by |
|---|---|---|---|
/clients | @aws-sdk/client-* | Generated service clients, one per AWS service. Created from AWS Smithy models. | AWS service teams + AWS SDK JS team |
/packages | @aws-sdk/* | Manually written utility code: credential providers, middleware, serializers, and types. | AWS SDK JS team |
/lib | @aws-sdk/lib-* | Higher-level JavaScript libraries that wrap generated clients for common use cases. | AWS SDK JS team |
Package naming
@aws-sdk/client-s3,@aws-sdk/client-dynamodb,@aws-sdk/client-lambda— service clients from/clients@aws-sdk/lib-dynamodb,@aws-sdk/lib-storage— higher-level libraries from/lib@aws-sdk/credential-providers,@aws-sdk/middleware-retry— utilities from/packages
Two usage styles
V3 supports two ways to call AWS APIs. Both are valid — choose based on your bundle size requirements.Bare-bones (recommended for most applications)
Import the client and each command separately. This allows tree shaking to remove unused commands from your bundle.Aggregated (v2-compatible style)
Import the service class directly. All commands are available as methods, matching the v2AWS.S3 style. This is convenient but imports all commands, increasing bundle size.
If you use tree shaking (e.g., with webpack or esbuild), the aggregated style will produce a larger bundle because all commands on the client are imported regardless of which ones you call.
Cross-platform support
The SDK runs on Node.js, browsers, and React Native. Platform-specific implementations of HTTP, crypto, and streams are selected automatically at runtime.- Node.js — uses Node.js built-in
https,crypto, and stream APIs. - Browsers — uses the Fetch API, Web Crypto API, and Web Streams.
- React Native — requires three polyfills (see Installation for details).
Stability
Not all packages in the SDK have the same stability guarantee. The table below summarizes which are public and stable versus internal.| Package | Folder | Stability |
|---|---|---|
@aws-sdk/client-* Commands | /clients | public / stable |
@aws-sdk/client-* Clients | /clients | public / stable |
@aws-sdk/lib-* | /lib | public / stable |
@aws-sdk/*-signer | /packages | public / stable |
@aws-sdk/middleware-stack | /packages | public / stable |
All other @aws-sdk/* | /packages | internal |
“Internal” does not mean a package is constantly changing. It means it can change without a deprecation period. Changes are included in the release notes. Public interfaces can also change in exceptional cases, but with advance notice.
Node.js version requirements
The minimum required Node.js version depends on the SDK version you install.| SDK version range | Minimum Node.js |
|---|---|
| v3.968.0 and higher | Node.js >= 20 |
| v3.723.0 – v3.967.x | Node.js >= 18 |
| v3.567.0 – v3.722.x | Node.js >= 16 |
| v3.201.0 – v3.566.x | Node.js >= 14 |
| v3.46.0 – v3.200.0 | Node.js >= 12 |
| Earlier versions | Node.js >= 10 |
Release cadence
The SDK releases once per weekday. Each release increments the minor version — for example,3.200.0 → 3.201.0. Because releases are frequent, keep all @aws-sdk/client-* packages pinned to the same version in your package.json to avoid subtle compatibility issues between mismatched client and utility packages.
Next steps
Quick start
Make your first AWS API call in under 5 minutes.
Installation
Install service clients, credential providers, and utilities.