Publishing your adapter
Community adapters are published to npm under your own package name. After publishing, you can list your adapter on the chat-sdk.dev Adapters page.
Package checklist
Before publishing, verify your package.json meets these requirements:
YOUR_PUBLISHED_ADAPTER_PACKAGE is a placeholder for your adapter's npm package name. Replace it with a valid name you own before publishing, and use that exact name in the post-publish verification commands. Do not install the placeholder or an unrelated package with a similar name.
| Field | Why it matters |
|---|---|
"type": "module" | Publishes ESM only, matching the Chat SDK packages |
"files": ["dist"] | Publishes only compiled output, which keeps the package small |
"exports" | Declares explicit entry points for bundlers and Node.js |
"peerDependencies" | Lets consumers provide their own chat instance |
"publishConfig" | Required for scoped packages (@your-scope/chat-adapter-*) |
"keywords" | Include chat-sdk and chat-adapter for npm discoverability |
Naming conventions
| Convention | Pattern | When to use |
|---|---|---|
| Unscoped | chat-adapter-PLATFORM | A unique, available name for your adapter |
| Scoped | @YOUR_SCOPE/chat-adapter-PLATFORM | An adapter published under a scope you control |
Replace PLATFORM and YOUR_SCOPE with your own values. These are naming patterns, not packages to install. New npm package names must be lowercase; see npm's package name rules.
The @chat-adapter/ npm scope is reserved for Vercel-maintained adapters. Do not publish under this scope.
Build and verify
Before publishing, build the package, type-check it, and run the tests.
Inspect the package contents to confirm that only dist/ is included:
You should see output like:
If you see src/, node_modules/, or test files in the output, update your "files" field or add a .npmignore.
Versioning
Follow semver:
| Change | Bump | Example |
|---|---|---|
| Bug fix, internal refactor | patch | 1.0.0 → 1.0.1 |
| New feature, new export, new config option | minor | 1.0.0 → 1.1.0 |
| Breaking change (removed export, changed signature) | major | 1.0.0 → 2.0.0 |
If a new Chat SDK major version changes your adapter's peer dependency range, bump your adapter's major version too.
Publish to npm
For scoped packages published for the first time:
Peer dependency compatibility
Your adapter should declare chat as a peer dependency with a caret range:
This means your adapter works with any 4.x release. When the Chat SDK ships a new major version:
- Test your adapter against the new version
- Update the peer dependency range
- Publish a new major version of your adapter
Post-publish verification
After publishing, verify the package works for consumers:
You should see your exported symbols (createMatrixAdapter, MatrixAdapter, etc.).
Keeping your adapter up to date
- Watch the Chat SDK changelog for new features and breaking changes.
- Run your test suite against new Chat SDK releases before they ship to catch compatibility issues early.
- When the
Adapterinterface adds new optional methods, consider implementing them to keep your adapter feature-complete.
Listing on chat-sdk.dev
Community adapters can be listed on the Adapters page by opening a PR against the Chat SDK repo that adds a docs page under apps/docs/content/adapters/community/ and an entry in @chat-adapter/catalog. Add the entry as packages/catalog/src/adapters/community/my-adapter.ts and register it in COMMUNITY_ADAPTERS in packages/catalog/src/adapters/index.ts. Your adapter's README is fetched from GitHub at build time and rendered on its dedicated page.
Platform vendors should follow the vendor-official guide instead.
Pin your README to a commit or tag
The readme field must reference a specific commit SHA or tag, not a branch name like main.
The docs site re-renders on every deploy, so an unpinned readme would serve whatever is on your default branch at that moment, including edits made after the listing PR was reviewed. Pinning keeps the rendered content at the version we approved. To publish new README content, open a follow-up PR that bumps the ref.
The features keys are listed in PLATFORM_FEATURE_CATEGORIES and STATE_FEATURE_CATEGORIES in packages/catalog/src/features.ts. Omitted keys render as unsupported.
Accepted readme formats:
| Format | Example |
|---|---|
| Repo root at a tag | https://github.com/owner/repo/tree/v1.0.0 |
| Repo root at a commit | https://github.com/owner/repo/tree/abc1234... |
| Subpath in a monorepo | https://github.com/owner/repo/tree/<ref>/packages/adapter |
Unpinned refs, such as tree/main or a URL without /tree/<ref>, emit a build warning and are rejected during PR review.
Read more
Overview
Overview of Chat SDK adapters, adapter tiers, and where to find platform, state, and catalog guides.
List a vendor-official adapter
Qualify for the vendor-official tier and add your adapter to the Chat SDK docs, @chat-adapter/catalog, create-chat-sdk, and eve.dev/integrations.
Building an adapter
Learn how to build your own Chat SDK adapter for any messaging platform.
Testing adapters
Write unit tests, integration tests, and replay tests for community Chat SDK adapters.