Get started
Stability policy
What is frozen at 1.0 and what may grow under semver.
From 1.0.0, sently follows semver for the public channel-delivery surface. Apps should depend on channel senders and contracts — not on vendor SDK shapes.
The one rule
Treat channel factories, transport contracts, hooks, SentlyError codes, and
published subpath entrypoints as stable. New transports and optional fields may
appear in minor releases; renames or narrowed types require a major.
Frozen at 1.x (Tier A)
| Surface | Stable APIs |
|---|---|
| Factories | createMailer, createSMTPMailer, createSmsSender, createWhatsAppSender, createPushSender |
| Contracts | Transport, SmsTransport, WhatsAppTransport, PushTransport option and result shapes |
| Shared | Lifecycle hooks, SentlyError / sentlyCode, ChannelSendResult / toChannelSendResult |
| Decorators | RetryTransport, FallbackTransport on all channels |
| Email-only decorators | IdempotencyTransport, PreviewTransport (documented as email-only; not removed) |
| Entrypoints | Subpaths listed in package.json exports — no silent moves |
Intentional shapes (stable, not transitional)
| Shape | Meaning |
|---|---|
PushOptions | Discriminated union: Web Push subscription or FCM token |
providerIndex | Optional on send results when a fallback decorator handled the send |
| Email-only preview / idempotency | Stay email-scoped; not a signal they will move to other channels soon |
Allowed without a major
- New transport classes and webhook parsers
- New optional fields on options/results
- New subpath exports
- Bug fixes and security patches on the current 1.x line
Security patches
See SECURITY.md for reporting and which versions receive patches.
Troubleshooting
Prefer upgrading to 1.x. Pre-1.0 may still receive best-effort fixes but is not the supported security line.
See Support matrix for Supported vs Available transports.