From community-skills
Integrates SmoothSend SDK to sponsor gas fees for Aptos dApp users via wallet adapter transactionSubmitter, enabling gasless transactions in React apps.
npx claudepluginhub aptos-labs/aptos-agent-skills --plugin community-skillsThis skill uses the workspace's default tool permissions.
Guide **gasless transaction sponsorship** on Aptos using [SmoothSend](https://smoothsend.xyz). Users sign transactions
Builds, signs, submits, and simulates transactions using @aptos-labs/ts-sdk for Aptos blockchain. Covers build.simple(), sponsored transactions, multi-agent, simulation, and waitForTransaction.
Integrates Alchemy into app code without API keys via x402/MPP gateways using SIWE/SIWS wallet auth and per-request USDC/credit-card payments. For keyless app integration or self-paying agents.
Guides Starkzap SDK integration and maintenance: StarkSDK setup, onboarding, wallet lifecycle, sponsored transactions, ERC20 flows, staking, transaction builder usage.
Share bugs, ideas, or general feedback.
Guide gasless transaction sponsorship on Aptos using SmoothSend. Users sign transactions
via their wallet but never pay gas — you pay per transaction from pre-loaded credits. Works as a drop-in
transactionSubmitter for AptosWalletAdapterProvider.
Paid commercial service: Free on testnet; mainnet uses credit-based billing. See Pricing for current rates.
@smoothsend/sdk — official npm package for SmoothSend integration.SmoothSendTransactionSubmitter as transactionSubmitter in AptosWalletAdapterProvider — this enables
gasless for all signAndSubmitTransaction calls.NEXT_PUBLIC_SMOOTHSEND_API_KEY or VITE_SMOOTHSEND_API_KEY (never hardcode).NEXT_PUBLIC_ or VITE_ prefixed
env vars.transactionSubmitter — without it, users pay gas themselves; the provider falls back to normal
submission.Use for swaps, NFT mints, contract calls — any transaction type.
npm install @smoothsend/sdk @aptos-labs/wallet-adapter-react
import { SmoothSendTransactionSubmitter } from "@smoothsend/sdk";
import { AptosWalletAdapterProvider } from "@aptos-labs/wallet-adapter-react";
import { Network } from "@aptos-labs/ts-sdk";
const smoothSend = new SmoothSendTransactionSubmitter({
apiKey: process.env.NEXT_PUBLIC_SMOOTHSEND_API_KEY!,
network: "mainnet" // or 'testnet' (always free)
});
export function Providers({ children }: { children: React.ReactNode }) {
return (
<AptosWalletAdapterProvider
autoConnect={true}
dappConfig={{
network: Network.MAINNET,
transactionSubmitter: smoothSend
}}
onError={(error) => console.error("Wallet error:", error)}
>
{children}
</AptosWalletAdapterProvider>
);
}
After this, every signAndSubmitTransaction call is gasless. No other code changes needed.
Use for USDC, USDT, WBTC, USDe, USD1 transfers. Fee (~$0.01) is deducted from the token being sent — no APT or SmoothSend credits required.
import { ScriptComposerClient } from "@smoothsend/sdk";
const client = new ScriptComposerClient({
apiKey: process.env.NEXT_PUBLIC_SMOOTHSEND_API_KEY!,
network: "mainnet"
});
// USDC Mainnet asset address
const USDC_ASSET = "0xbae207659db88bea0cbead6da0ed00aac12edcdda169e591cd41c94180b46f3b";
const build = await client.buildTransfer({
sender: walletAddress,
recipient: "0xRecipient...",
amount: "1000000", // 1 USDC (6 decimals)
assetType: USDC_ASSET,
decimals: 6,
symbol: "USDC"
});
// Sign with wallet, then submit build.signedTransaction
try {
const response = await signAndSubmitTransaction(payload);
await aptos.waitForTransaction({ transactionHash: response.hash });
} catch (error: any) {
if (error?.status === 402 || error?.message?.includes("Insufficient credits")) {
// Credits exhausted — show upgrade CTA
toast.error("Service temporarily unavailable. Please try again later.");
window.open("https://dashboard.smoothsend.xyz/billing", "_blank");
} else {
throw error;
}
}
See SmoothSend Pricing for current rates. Testnet is free; mainnet uses credit packs.
| Mistake | Correct approach |
|---|---|
Forgetting transactionSubmitter | Pass smoothSend in dappConfig |
| Hardcoding API key | Use env var with NEXT_PUBLIC_ or VITE_ prefix |
| Using Script Composer for non-transfer tx | Use Wallet Adapter for swaps, mints, contract calls |
| Not handling 402 | Catch and show user-friendly message + billing link |
| Wrong network | Match network in SmoothSend config to dappConfig.network |
npx @smoothsend/mcp — tools for get_docs, estimate_credits, get_code_snippet