converting-minikit-to-farcaster について
MiniKit から Farcaster SDK へアプリを移行する開発者向けのリファレンスです。フックと SDK 操作の対応、バージョン変更、非同期コンテキストの扱い、よくあるエラーを説明します。
主な機能
- 01MiniKit フックと SDK 操作の対応表
- 02SDK v0.2.0 以降の変更点
- 03非同期コンテキストのアクセス例
- 04移行と依存関係更新の手順
- 05よくあるエラーの調査
活用シーン
- 01MiniKit アプリを Farcaster SDK に移行
- 02SDK 更新後のコンテキストアクセスを調整
- 03移行時の型やコンポーネントの問題を調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ base/ skills --skill converting-minikit-to-farcasterインストール後、Claude Code で/converting-minikit-to-farcasterを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AUTH.mdDEPENDENCIES.mdEXAMPLES.mdLICENSEMANIFEST.mdMAPPING.mdPITFALLS.mdPROVIDER.mdREADME.mdanalyze_project.pyvalidate_conversion.py詳細
MiniKit から Farcaster SDK への移行
破壊的変更(SDK v0.2.0 以降)
sdk.contextは Promise です。await が必要ですsdk.isInMiniApp()はパラメーターを受け取りませんsdk.actions.setPrimaryButton()には onClick コールバックがありません
バージョンを確認:npm list @farcaster/miniapp-sdk
クイックリファレンス
| MiniKit | Farcaster SDK | 備考 |
|---|---|---|
useMiniKit().setFrameReady() | await sdk.actions.ready() | |
useMiniKit().context | await sdk.context | 非同期 |
useMiniKit().isSDKLoaded | await sdk.isInMiniApp() | パラメーターなし |
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) | コールバックなし |
useAuthenticate() | sdk.quickAuth.getToken() | AUTH.md を参照 |
コンテキストへのアクセスパターン
// WRONG
const fid = sdk.context?.user?.fid;
// CORRECT
const context = await sdk.context;
const fid = context?.user?.fid;
React コンポーネントでは、状態を使用します:
const [context, setContext] = useState(null);
useEffect(() => {
const load = async () => {
const ctx = await sdk.context;
setContext(ctx);
};
load();
}, []);
移行ワークフロー
- Node.js >= 22.11.0 を確認します
- 依存関係を更新します。DEPENDENCIES.md を参照
- インポートを置き換えます:
@coinbase/onchainkit/minikit→@farcaster/miniapp-sdk - 上記のリファレンスを使ってフックを変換します
- FrameProvider を追加します。PROVIDER.md を参照
- マニフェストを更新します:
frame→miniapp。MANIFEST.md を参照
よくあるエラー
「型 'Promise' にプロパティ 'user' は存在しません」
→ プロパティにアクセスする前に sdk.context を await します
「引数は 0 個必要ですが、1 個渡されています」
→ sdk.isInMiniApp() からパラメーターを削除します
コンポーネント内の Context が null になる → FrameProvider がプロバイダーチェーンに含まれていることを確認します
参考資料
- MAPPING.md — フックごとの完全な移行リファレンス
- EXAMPLES.md — 変換前後のコード例
- PROVIDER.md — FrameProvider を使ったプロバイダーの設定
- PITFALLS.md — よくあるエラーと解決方法
- DEPENDENCIES.md — パッケージの更新
- AUTH.md — Quick Auth の移行
- MANIFEST.md — farcaster.json の変更
コメント
Markdown 対応