Base App is working towards full compatibility with the Farcaster Mini App SDK. During beta, some features are not yet supported.

Supported SDK Actions

The Base app supports the following SDK actions for mini apps:

Core Actions

  • addMiniApp - Add a mini app to the user’s collection
  • close - Close the current mini app
  • ready - Signal that the mini app is ready
  • openUrl - Open external URLs
  • openMiniApp - Navigate to another mini app

Social Actions

  • composeCast - Open the cast composer
  • signIn - Authenticate the user
  • viewProfile - View user profiles
  • viewCast - View specific casts

Financial Actions

  • swap - Open the swap form with pre-filled tokens (user can modify before executing)
  • Tokensend - Send tokens
  • Tokenview - View token details
  • Tokenrequest - Request tokens from users

Device Features

  • CameraAndMicrophoneAccess - Access device camera and microphone
  • Haptics - Trigger haptic feedback

Currently Unsupported Actions

  • Notifications: not yet supported
  • Mini App actions: .addMiniApp(), “ (ETA 9/26)
  • signManifest

Base App Client Detection

App.tsx
import { useMiniKit } from '@coinbase/onchainkit/minikit';

function MyComponent() {
  const { context } = useMiniKit();
  const isBaseApp = context.client.clientFid === 309857;

  if (isBaseApp) {
    // Use Base App-specific features
    console.log('Running in Base App');
  }
  
  return <div>{/* Your component */}</div>;
}

Wallet Interactions

Base App provides multiple wallet integration methods:
App.tsx
import { ConnectWallet } from '@coinbase/onchainkit/wallet';

// Base App provides EIP-1193 provider automatically
function WalletConnection() {
  return <ConnectWallet />;
}

Method 2: Wagmi Hooks

App.tsx
import { useConnect } from 'wagmi';

// Works with Base App's injected provider
function WalletConnect() {
  const { connect, connectors } = useConnect();
  // Base App connector available automatically
}

Method 3: Browser Window Access

App.tsx
// Direct access to Base App's provider
async function connectWallet() {
  if (window.ethereum) {
    await window.ethereum.request({
      method: 'eth_requestAccounts'
    });
  }
}
Use MiniKit hooks instead of manual Farcaster deeplinks:
  • useOpenUrl() instead of farcaster://open-url
  • useComposeCast() instead of manual cast composition
  • useViewProfile() instead of profile deeplinks
App.tsx
import { useOpenUrl, useComposeCast } from '@coinbase/onchainkit/minikit';

function Navigation() {
  const openUrl = useOpenUrl();
  const composeCast = useComposeCast();
  
  const handleExternalLink = () => {
    openUrl('https://example.com');
  };
  
  const handleShare = () => {
    composeCast({
      text: "Check this out!",
      embeds: [window.location.href]
    });
  };
}

## Supported Chains

Base, Mainnet, Optimism, Arbitrum, Polygon, Zora, BNB, Avalanche CChain

## Development Notes

- Use `openUrl()` for external navigation
- Use `composeCast()` instead of composer URLs
- Provide alternatives for haptic feedback
- Avoid relying on location context for core flows
- To detect Base App, check `context.client.clientFid` (Base App: `309857`)

We are actively expanding compatibility and will update this page as support increases.