About phantom-connect
phantom-connect is an integration guide for the Phantom Connect SDK ecosystem. It helps developers build Solana wallet-connected apps across React, React Native, and browser environments, with guidance on social login and extension wallets.
Key features
- 01React, React Native, and browser SDKs
- 02Google, Apple, and Phantom extension providers
- 03Wallet connection and transaction signing
- 04References for payments, token gating, and NFT minting
Use cases
- 01Add Phantom wallet access to a React app
- 02Integrate embedded wallets in an Expo app
- 03Build SOL or USDC payment flows
- 04Create token-gated pages or NFT mint pages
MCP support
The README mentions an MCP Server for AI documentation access but does not describe its specific functions.
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ sendaifun/ skills --skill phantom-connectAfter installing, type/phantom-connectin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
references/browser-sdk.mdnft-minting.mdpayments.mdreact-native-sdk.mdreact-sdk.mdtoken-gating.mdtransactions.mdDetails
From the project READMEPhantom Connect SDK
Build wallet-connected Solana applications with the Phantom Connect SDK ecosystem.
SDK Selection
| Platform | SDK | Package |
|---|---|---|
| React web apps | React SDK | @phantom/react-sdk |
| React Native / Expo | React Native SDK | @phantom/react-native-sdk |
| Vanilla JS / Vue / Angular | Browser SDK | @phantom/browser-sdk |
Prerequisites
- Phantom Portal Account — Register at phantom.com/portal
- App ID — Get from Portal → App → Set Up
- Allowlisted URLs — Add domains and redirect URLs in Portal
Auth Providers
| Provider | Description | Requires appId |
|---|---|---|
"injected" | Phantom browser extension | No |
"google" | Google OAuth (embedded wallet) | Yes |
"apple" | Apple ID (embedded wallet) | Yes |
Critical Rules
- Always use
signAndSendTransaction—signTransactionandsignAllTransactionsare NOT supported for embedded wallets - Always use
LAMPORTS_PER_SOLfrom@solana/web3.jsfor amount conversion — never hardcode1000000000 - Wrap all async SDK calls in try-catch — users can reject prompts at any time
- Check
isConnectedbefore signing — verify wallet connection before any operation - React Native:
react-native-get-random-valuesmust be the FIRST import — before any other imports - BrowserSDK must be a singleton — create one instance per app, never multiple
- Import
AddressTypefrom@phantom/browser-sdkonly - Use devnet for testing, mainnet-beta for production — never test against mainnet with real funds
- Never expose private keys — Phantom handles all signing internally
- Embedded wallet spending limit: $1,000 USD per day per app per user
- Social login sessions persist 7 days from last auth event — handle expiration gracefully
Quick Start
React SDK
import { PhantomProvider, useModal, usePhantom, darkTheme } from "@phantom/react-sdk";
import { AddressType } from "@phantom/browser-sdk";
function App() {
return (
<PhantomProvider
config={{
providers: ["google", "apple", "injected"],
appId: "your-app-id",
addressTypes: [AddressType.solana],
authOptions: { redirectUrl: "https://yourapp.com/callback" },
}}
theme={darkTheme}
>
<YourApp />
</PhantomProvider>
);
}
React Native SDK
// CRITICAL: Must be first import
import "react-native-get-random-values";
import { PhantomProvider, AddressType, darkTheme } from "@phantom/react-native-sdk";
// Requires app.json: { "expo": { "scheme": "myapp", "plugins": [...] } }
Browser SDK
import { BrowserSDK, AddressType } from "@phantom/browser-sdk";
const sdk = new BrowserSDK({
providers: ["google", "apple", "injected"],
appId: "your-app-id",
addressTypes: [AddressType.solana],
autoConnect: true,
});
Reference Docs
For detailed implementation patterns, read these files:
- references/react-sdk.md — Complete React SDK reference (hooks, components, theming)
- references/react-native-sdk.md — Mobile setup, Expo config, deep links
- references/browser-sdk.md — Vanilla JS patterns, events, wallet discovery
- references/transactions.md — Solana transaction patterns (SOL, SPL tokens)
- references/payments.md — Crypto payment flows (SOL, USDC, backend verification)
- references/token-gating.md — Token-gated access (client-side, server-side, NFT)
- references/nft-minting.md — NFT mint pages, Metaplex Core, compressed NFTs
Common Issues
| Issue | Solution |
|---|---|
| "appId required" | Add appId from Phantom Portal when using google/apple providers |
| Redirect not working | Allowlist redirectUrl in Phantom Portal |
| React Native crashes | Import react-native-get-random-values as FIRST import |
| Extension not detected | Use waitForPhantomExtension() with timeout |
signTransaction error | Use signAndSendTransaction instead — embedded wallets don't support signTransaction |
Resources
- Phantom Portal — App registration
- Phantom Docs — Full documentation
- SDK Examples — Working demos
- MCP Server — AI docs access
Comments
Markdown supported