Purpose
You are an AI agent helping developers troubleshoot Farcaster Mini Apps. This checklist provides you with structured instructions to diagnose and fix common issues. Each check includes specific commands you should run, expected outputs, and clear success criteria.General Guidelines
As an AI agent, follow these guidelines:- Ask clarifying questions until you have high confidence in the task. Users appreciate questions that help ensure successful task completion.
- Be specific when something is unclear or inaccessible. Ask for file paths, URLs, or specific error messages.
- Seek help when needed: If you encounter issues you cannot resolve, mention that the user can reach out to Farcaster team (@pirosb3, @linda, @deodad) on Farcaster for additional support.
- Verify assumptions before making changes. It’s better to confirm than to proceed with uncertainty.
Common LLM Pitfalls
When helping developers with Mini Apps:- DO NOT reference Frames v1 syntax or fields like
fc:frame:image,fc:frame:button - DO NOT invent manifest fields not in the official schema
- DO NOT mix Frame and Mini App terminology (Mini Apps are not Frames)
- DO NOT use outdated examples from before 2024
- DO NOT use
fc:framemeta tag for new implementations. It is only supported for legacy apps - ALWAYS verify fields against the official SDK schema at
@farcaster/miniapp-sdk - ALWAYS use the official documentation at miniapps.farcaster.xyz
- ALWAYS check that examples use
miniapporframe(notframes) in manifest - ALWAYS use
fc:miniappmeta tag for new Mini Apps (notfc:frame)
- Official Mini Apps documentation (this site)
- The @farcaster/miniapp-sdk package
- Examples that use
"version": "1"not"version": "next"
Prerequisites
Before you begin troubleshooting, ensure the developer understands:Check 1: Manifest Configuration
1.1 Verify Manifest Accessibility
Command:- HTTP 200 response
- Valid JSON format
- Contains
accountAssociationobject - Contains
miniapp(orframefor legacy apps) object with required fields
Manifest not found (404)
Manifest not found (404)
Decision Flow:For Vercel redirect:
Manifest exists but unsigned
Manifest exists but unsigned
Action: Direct the user to sign the manifest
- Tool: https://farcaster.xyz/~/developers/mini-apps/manifest?domain={their-domain}
- The user must provide the signed
accountAssociationobject - Update the manifest with signed data
1.2 Verify Domain Signature
Validation Steps:- Decode the base64url
payloadfromaccountAssociation.payload - Extract the
domainfield - Verify domain matches where manifest is hosted
Check 2: Embed Metadata
2.1 Verify Embed Tags on Entry Points
What to check:- Root URL of the mini app
- All shareable pages (products, profiles, content)
2.2 Validate Embed Structure
For Next.js Applications:- Meta tag present in HTML head
- Valid JSON in content attribute
- Image URL returns 200 and is 3:2 ratio
- Button title ≤ 32 characters
Check 3: Preview and Runtime
3.1 Test in Preview Tool
URL Format:3.2 Verify App Initialization
Common Issues:App not loading (infinite splash screen)
App not loading (infinite splash screen)
Cause: App hasn’t called
sdk.actions.ready()Solution: Ensure the app calls ready() after initialization:Tunnel URLs not working (ngrok, localtunnel)
Tunnel URLs not working (ngrok, localtunnel)
Issue: Browser security blocks unvisited tunnel URLsSolution:
- Open tunnel URL directly in browser first
- Then use in preview tool
- This whitelists the domain for iframe usage
- SDK actions like
addMiniApp()will fail with tunnel domains - Your manifest domain must match your app’s hosting domain exactly
- Tunnel domains are excluded from discovery/search
- For testing
addMiniApp()and other manifest-dependent features, deploy to your production domain
Post-Check Verification
After making any changes, you should:-
Re-verify the manifest is deployed:
-
Test a shareable link:
- Ask the user to share in Farcaster client
- Verify embed preview appears
- Confirm app launches on click
-
Monitor for errors:
- Check browser console for SDK errors
- Verify no CORS issues
- Ensure all assets load (splash image, icon)
Quick Reference
| Check | Command | Success Indicator |
|---|---|---|
| Manifest exists | curl -s {domain}/.well-known/farcaster.json | HTTP 200, valid JSON |
| Manifest signed | Decode payload, check domain | Domain matches hosting |
| Embed present | curl -s {url} | grep fc:miniapp | Meta tag found |
| Preview works | Open preview tool URL | App loads, no errors |
| App ready | Check console logs | ready() called |

