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

Currently Unsupported (examples)

  • Environment detection: sdk.isInMiniApp() (ETA 8/6)
  • Haptic feedback methods: sdk.haptics.* (ETA 8/13)
  • Token actions: sdk.actions.swapToken() (ETA 8/6)
  • Notifications: not yet supported
  • Mini App actions: .addMiniApp(), .requestCameraAndMicrophoneAccess() (ETA 8/13)

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.