When your Mini App runs inside the Startale App, the host populatesDocumentation Index
Fetch the complete documentation index at: https://docs.startale.com/llms.txt
Use this file to discover all available pages before exploring further.
sdk.context with three layers: Farcaster-standard fields, client/device metadata, and a startale extension object with Startale-specific user data.
Full context shape
| Field | Type | Description |
|---|---|---|
user.fid | number | Internal Startale identifier. Present for protocol compatibility, not a Farcaster account ID. Do not use this to identify users; use the smart account address from eth_requestAccounts instead. |
user.username | string | The user’s Startale display username. |
user.displayName | string | Display name. |
user.pfpUrl | string | Profile photo URL. |
location.type | string | Launch context. Always 'launcher' when opened from the Mini App grid. |
client.platformType | string | Host platform identifier. |
client.clientFid | number | Internal Startale client identifier. Present for protocol compatibility, not a Farcaster account ID. |
client.safeAreaInsets | object | { top, bottom, left, right } in px; use for notch-safe layout. |
features.haptics | boolean | Whether the host supports haptic feedback. Use before calling haptic actions. |
features.cameraAndMicrophoneAccess | boolean | Whether the host permits camera/mic access. |
startale.starPoints | number | The user’s current STAR Points balance. |
startale.eoaWallets | string[] | Addresses verified as linked to the user’s smart account. |
Identifying users. Use the smart account address (retrieved via
eth_requestAccounts) as the primary user identifier in your backend. user.fid and client.clientFid are internal protocol placeholders and are not stable user identifiers.Reading context
sdk.context is a Promise. The bridge between your Mini App and the host is asynchronous, so you must await it before reading any field.
The startale object is a Startale extension not included in the official @farcaster/miniapp-sdk TypeScript types. Cast the result to access it with full type safety:
useEffect:
The
startale type cast is necessary today because the Startale context extensions are not yet part of the upstream @farcaster/miniapp-sdk type definitions. The cast is safe; the host always populates these fields when your Mini App runs inside the Startale App.STAR Points
STAR Points are the Startale App’s user-engagement currency. Users earn them through daily activities in the Mission Center and through USDSC usage inside the app, and the balance is treated as a proof of contribution toward future token rewards. Mini Apps see the balance throughsdk.context.startale.starPoints and can use it as an eligibility signal, for example, gating bonus content or rewarding power users.
For the full earning rules and the latest mission catalog, link users to the Startale App page.
Reading user STAR Points
Discovering linked EOAs
eoaWallets is the canonical way to discover personal wallets the user has linked to their Startale account. Each address has been verified server-side via SIWE.
Common use cases:
- Restoring user progress from an existing user base.
- Granting NFT utility based on assets held in a personal wallet.
- Co-marketing eligibility checks (“are you an existing player of project X?”).
EOAs are read-only
You can read balances and onchain state for any address ineoaWallets. You cannot sign or send transactions from a linked EOA inside a Mini App, the active signer is always the user’s smart account.
If a user holds assets in a linked EOA that they want to use inside your Mini App:
- Detect the asset using
eoaWalletsand a read-only contract call. - Inform the user that they need to transfer the asset to their smart account.
- The transfer must happen outside the Mini App, on your project’s standalone website where MetaMask connects directly.
Sandbox simulation gap
The Mini App sandbox simulatessdk.context.startale.starPoints as 100 and populates location, client.platformType, and client.safeAreaInsets with default values. sdk.context.startale.eoaWallets, user, and features are not populated.
Test EOA-discovery features, identity-dependent logic, and capability checks against a staging or production Startale App, not the local sandbox.