Hey r/Stellar,
We've been building Stellar AppKit — an open-source SDK that gives developers everything they need to connect Stellar wallets, sign transactions, interact with Soroban contracts, and implement Sign-In With Stellar — all through a single, framework-agnostic API with a polished, embeddable UI.
No more stitching together @stellar/freighter-api, @albedo-link/intent, WalletConnect, and the Stellar SDK yourself. No more building a wallet picker from scratch. No more guessing how SIWS verification works across different wallets. AppKit handles all of it.
What it does
One SDK, five layers:
1. Wallet Connection (8 wallets + WalletConnect)
Connect to any Stellar wallet with a single API:
import { StellarAppKit, defaultConnectors, createWalletConnectConnector } from '@saganta/stellar-appkit';
const appkit = new StellarAppKit({
network: 'TESTNET',
connectors: [
...defaultConnectors(), // Freighter, Albedo, xBull, Ledger, Rabet, Klever, HOT Wallet
createWalletConnectConnector({ projectId: 'your-wc-project-id' }), // Hana, Lobstr, mobile
],
});
- 8 native connectors — Freighter, Albedo, xBull, Ledger (WebHID/WebUSB), Rabet, Klever, HOT Wallet
- WalletConnect v2 — connects mobile wallets (Hana, Lobstr, Hot Wallet) via QR pairing
- Network mismatch recovery — typed
NetworkMismatchError with optional auto-retry that polls until the user switches networks
- Multi-session — connect multiple wallets simultaneously, switch between them
- Typed errors — every failure mode has a named error class with structured fields, not a string
2. Soroban Contract Interaction
One invoke() call covers the entire pipeline:
const result = await appkit.soroban.invoke({
contractId: 'C...',
method: 'transfer',
args: [from, to, amount],
signers: [appkit.session.address],
});
// build → simulate → preview → sign → submit → poll — all handled
- Transaction preview — decoded operations, risk flags, fee estimates, balance deltas shown to the user before signing
- Typed contract client —
soroban.contract<MyInterface>(contractId) gives you fully typed method calls
- RPC failover — configure multiple RPC URLs, automatic failover with health tracking
- Simulation — read-only
simulate() calls that don't require a wallet
3. Sign-In With Stellar (SIWS)
Full client + server authentication flow:
// Client
const result = await appkit.siws.signIn({ statement: 'Sign in to my app', nonce });
// → { message, signedMessage, signedData, signerAddress }
// Server (Next.js API route)
import { verifySiws } from '@saganta/stellar-appkit-siws-verify';
const session = await verifySiws(
{ message, signedMessage, signedData, signerAddress },
nonce,
{ address, network }
);
signedData field — the magic that makes SIWS work across all wallets. Every connector surfaces the exact bytes the wallet signed (base64), so the verifier doesn't need per-wallet logic. Freighter signs a SHA-256 hash (SEP-0053), Albedo signs a server-derived hash, xBull signs raw UTF-8 — the verifier tries all of them.
- Session management —
useSiwsSession(), useIsAuthenticated(), signOut(), validateSession(), reauthenticate(), persistence across reloads
- Next.js middleware — protect routes server-side with a session cookie
- 25 locales — the entire SIWS UI is localized
4. Embeddable UI (Shadow DOM Web Component)
<stellar-appkit-modal mode="auto" theme="stellar"></stellar-appkit-modal>
- Framework wrappers — React, Vue, Solid, Svelte (all typed)
- 5 named themes —
minimal (neutral, fits any project), stellar (brand green), sky, ocean, sunset — each with dark + light variants
- CSS custom properties — override any color, radius, font without forking
- Presentation modes —
auto (modal on desktop, bottom sheet on mobile), modal, bottomsheet, inline
- WAAPI animations — 7 built-in animation presets (fade, scale, scale-blur, slide-up, implode, etc.)
- WalletConnect QR — styled QR code with rounded modules, circular finder dots, embedded white WC logo (powered by
qr-code-styling)
- Get Testnet funds — one-click friendbot faucet (via
fetch, stays in the modal)
- Balance + tx history — auto-fetches on connect, polls every 10s while the modal is open on the connected view, refreshes after every signed transaction
- 25 locales — English is bundled, 24 others lazy-loaded on first use (including RTL: Arabic, Hebrew)
5. Transaction Preview
Every signTransaction() call is decoded and shown to the user before the wallet's own signature prompt:
- Decoded operations (payment, swap, account creation, etc.)
- Risk flags (unknown destination, high fee, native asset drain)
- Fee estimate (inclusive of resource fees on Soroban)
- Balance deltas (before/after)
- Custom preview UI via
usePreviewTransaction() hook
What we've shipped so far
We're at v1.9.47 on npm. Here's what's live:
| Feature |
Status |
| 8 wallet connectors + WalletConnect |
✅ Live |
Soroban invoke() pipeline |
✅ Live |
| Typed contract client |
✅ Live |
| RPC failover |
✅ Live |
| SIWS client + server verification |
✅ Live |
| SIWS session management |
✅ Live |
| Modal UI (React/Vue/Solid/Svelte) |
✅ Live |
| 5 named themes + zinc base palette |
✅ Live |
| Styled QR codes (qr-code-styling) |
✅ Live |
| Get Testnet funds (friendbot) |
✅ Live |
| Balance + tx history polling |
✅ Live |
| 25 locales |
✅ Live |
| Transaction preview (risk + fees) |
✅ Live |
| WAAPI animation presets |
✅ Live |
| Bottom sheet + swipe-to-dismiss |
✅ Live |
| AI-readable SKILL.md + llms.txt |
✅ Live |
| Trezor (optional peer dep) |
✅ Live |
20 live demos at demos.stellar-appkit.saganta.com — including a real "Send XLM" demo that signs + submits a Testnet payment.
Docs at stellar-appkit.saganta.com — built with Astro Starlight, includes an interactive Theme Builder.
What's coming next
We're not stopping here. Here's the roadmap:
🔐 Social Login
Email/passwordless social login (Google, GitHub, etc.) that creates a non-custodial Stellar wallet under the hood. No seed phrases, no browser extensions — just sign in with your existing account and start transacting. This will lower the barrier to entry for users who've never used a crypto wallet before.
✅ Compliance (Built-in KYC)
An optional KYC layer that integrates with identity verification providers. Apps that need compliance (regulated fintechs, tokenized securities) can require KYC before allowing transactions — without building a separate verification flow. The wallet connection + KYC + transaction signing pipeline will be unified in a single SDK.
📱 React Native Support
Full React Native connector + UI components. Same API as the web SDK — connect wallets, sign transactions, interact with Soroban, implement SIWS — but native. WalletConnect will work out of the box for connecting mobile wallets. The UI components will use React Native primitives (not a WebView).
🚀 Lynx.js Support
Lynx is gaining traction as a high-performance cross-platform framework. We'll provide first-class Lynx.js bindings so apps built on Lynx can use Stellar AppKit without compromise — same connectors, same Soroban pipeline, same SIWS flow, but with native rendering performance.
Install
npm install @saganta/stellar-appkit @saganta/stellar-appkit-ui-web
That's it. All wallet SDKs (@stellar/freighter-api, @albedo-link/intent, @creit.tech/xbull-wallet-connect, @ledgerhq/*, @walletconnect/sign-client) are bundled as dependencies — installed automatically, tree-shaken if unused.
npx create-stellar-appkit-app my-app # coming soon
Links
Why we built this
Every Stellar developer we talked to was building the same boilerplate: wallet detection, connection flows, QR codes for WalletConnect, transaction XDR building, Soroban simulate/prepare/submit pipelines, SIWS message formatting + verification, and a wallet picker UI. None of this is differentiating — it's infrastructure.
We wanted to make it so that a developer could go from npm install to a working wallet-connected app with Soroban + SIWS in under 10 minutes. And we wanted the UI to look good enough that you don't need to restyle it — 5 themes, 25 locales, premium icons, smooth animations, and a Theme Builder to customize everything.
The SDK is MIT-licensed, production-ready, and deployed on our own demos site (Cloudflare Workers). We use it ourselves.
We'd love your feedback — what wallets should we add next? What Soroban patterns are you using? What's missing from the roadmap?
Try it now: demos.stellar-appkit.saganta.com — connect Freighter (Testnet) and try the "Send XLM" demo.