Setting the file. One moment.
Subchapter 4.23
references/migrations/minikit-to-farcaster/overview.mdMarkdown3 KBView on GitHub
Converts Mini Apps from MiniKit (OnchainKit) to native Farcaster SDK.
sdk.context is a Promise — must awaitsdk.isInMiniApp() accepts no parameterssdk.actions.setPrimaryButton() has no onClick callbackCheck version: npm list @farcaster/miniapp-sdk
| MiniKit | Farcaster SDK | Notes |
|---|---|---|
useMiniKit().setFrameReady() | await sdk.actions.ready() | |
useMiniKit().context | await sdk.context | Async |
useMiniKit().isSDKLoaded | await sdk.isInMiniApp() | No params |
useClose() | await sdk.actions.close() | |
useOpenUrl(url) | await sdk.actions.openUrl(url) | |
useViewProfile(fid) | await sdk.actions.viewProfile({ fid }) | |
useViewCast(hash) | await sdk.actions.viewCast({ hash }) | |
useComposeCast() | await sdk.actions.composeCast({ text, embeds }) | |
useAddFrame() | await sdk.actions.addMiniApp() | |
usePrimaryButton(opts, cb) | await sdk.actions.setPrimaryButton(opts) | No callback |
useAuthenticate() | sdk.quickAuth.getToken() | See auth.md |
// WRONG
const fid = sdk.context?.user?.fid;
// CORRECT
const context = await sdk.context;
const fid = context?.user?.fid;In React components, use state:
const [context, setContext] = useState(null);
useEffect(() => {
const load = async () => {
const ctx = await sdk.context;
setContext(ctx);
};
load();
}, []);@coinbase/onchainkit/minikit → @farcaster/miniapp-sdkframe → miniapp — see manifest.md“Property ‘user’ does not exist on type ‘Promise‘”
→ Await sdk.context before accessing properties
“Expected 0 arguments, but got 1”
→ Remove parameters from sdk.isInMiniApp()
Context is null in components → Ensure FrameProvider is in your provider chain
Two Python scripts are bundled at scripts/ (skill root) to automate analysis and validation:
scripts/analyze_project.py <project_dir> — Scans all source files and reports every MiniKit import, hook usage, and provider location. Run before starting conversion to understand blast radius.scripts/validate_conversion.py <project_dir> — Validates the converted project: no remaining MiniKit imports/hooks/providers, Farcaster SDK wired correctly, package.json updated, manifest uses miniapp key. Exit code 0 = pass, 1 = errors found.