SDK Development
Create professional TypeScript SDKs from scratch or by extraction.
Key Principles
- Clean public API — Export only what consumers need, hide internals
- Type everything — Full type coverage for config, methods, responses, and errors
- Meaningful errors — Typed error classes with codes and context
- Sensible defaults — Works out of the box with minimal config
- Framework agnostic — Core SDK has no framework dependencies; add bindings separately
Quick Start Checklist
- Analyze scope: new SDK or extraction from existing app
- Design public API surface (exports, types, config)
- Implement client with typed methods and error handling
- Configure build for ESM/CJS/types (tsup recommended)
- Write tests (unit + integration) and examples
- Publish to npm with proper package.json exports field
References
| Reference | Description | |-----------|-------------| | extraction-scope-and-boundaries.md | Scope identification, dependency analysis, boundary definition | | extraction-usages-and-planning.md | Finding usages, test coverage, phased extraction plan | | package-structure-and-clients.md | SDK layout, client design patterns (single, modular, factory) | | configuration-and-api-design.md | Config interfaces, defaults, barrel exports, method signatures | | internal-architecture-and-best-practices.md | HTTP client, state management, tree-shaking, environment agnostic | | type-design.md | Strict types, branded types, generics, discriminated unions | | error-handling-and-async.md | Error class hierarchy, retry logic, request queues, token management | | events-storage-and-logging.md | Event emitter, storage abstraction, logger interface | | build-tools-and-output.md | tsup config, output formats, package.json exports, TypeScript config | | bundle-optimization-and-distribution.md | Bundle size, multi-platform builds, dual packages, monorepo | | publishing-and-registries.md | npm publishing, private registries, versioning, changelogs | | ci-cd-and-documentation.md | GitHub Actions, documentation, pre-publish checklist, deprecation |