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)

SurfaceStable APIs
FactoriescreateMailer, createSMTPMailer, createSmsSender, createWhatsAppSender, createPushSender
ContractsTransport, SmsTransport, WhatsAppTransport, PushTransport option and result shapes
SharedLifecycle hooks, SentlyError / sentlyCode, ChannelSendResult / toChannelSendResult
DecoratorsRetryTransport, FallbackTransport on all channels
Email-only decoratorsIdempotencyTransport, PreviewTransport (documented as email-only; not removed)
EntrypointsSubpaths listed in package.json exports — no silent moves

Intentional shapes (stable, not transitional)

ShapeMeaning
PushOptionsDiscriminated union: Web Push subscription or FCM token
providerIndexOptional on send results when a fallback decorator handled the send
Email-only preview / idempotencyStay 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

Learn more

Next

On this page