Social / Messaging·Solana
Dialect
Smart messaging stack on Solana (and Aptos): dapp notifications (Alerts), shareable Solana Actions / Blinks that embed transactions in any feed, and a Markets product. Powers notifications for 30+ Solana wallets and dapps.
- 01Solana dapp notifications (Alerts)
- 02Blinks / Solana Actions embedded in social feeds
- 03wallet-to-wallet messaging on Solana
- 04transactional CTAs in tweets / Discord
- 05monitoring + alerting on onchain events
- pnpm add @dialectlabs/blinks @dialectlabs/blinks-react
- pnpm add @dialectlabs/react-sdk @dialectlabs/react-ui # for Alerts inbox UI
- pnpm add @dialectlabs/sdk # framework-agnostic core
| Variable | Scope | Description |
|---|---|---|
| DIALECT_API_KEY | Server | Dialect Alerts API key from the Dialect dashboard. Server-only — used to trigger notification sends. |
| NEXT_PUBLIC_DIALECT_APP_ID | Client | Public Dialect app id used by the Alerts inbox component to scope notifications. |
Use Dialect for Solana notifications and Blinks. For Alerts, POST to the REST API with `Authorization: Bearer ${DIALECT_API_KEY}` and a payload of `{ topicId, message: { title, body, actions } }` to broadcast to opted-in wallets, or trigger from your monitor with `@dialectlabs/monitor`. Render the inbox via `<DialectThemeProvider><Inbox dialectId='...' /></DialectThemeProvider>` from `@dialectlabs/react-ui`. For Blinks, build a Solana Action endpoint that returns `{ icon, title, label, links: { actions: [{ label, href }] } }` and serve `actions.json`; consumers render it with `<Blink action={action} />` from `@dialectlabs/blinks-react` after fetching via `Action.fetch(url)`.
- ⚑Dialect is Solana-first (with limited Aptos support) — EVM chains are not covered, so pair it with XMTP / Push Protocol / Notifi if you need Ethereum users.
- ⚑Onchain vs offchain content: Alerts are an offchain push pipeline, not stored on Solana — losing your Dialect API key or topic config means historical alerts are unrecoverable.
- ⚑Blinks rely on consumer clients (X, Phantom, etc.) opting in to render `actions.json`; an unsupported client just shows the raw URL, so always provide a sane HTML fallback.
- ⚑Blinks must serve correct CORS headers (`Access-Control-Allow-Origin: *`) on `/actions.json` and the action endpoint, or rendering silently fails.
- ⚑Alert delivery semantics are best-effort and require user opt-in via a Dialect-aware wallet; do not treat Alerts as a transactional system of record.
- ⚑Standard Blinks must follow the SIP/spec exactly (icon size, button labels, transaction format) — wallets reject malformed responses without telling the user why.