converting-minikit-to-farcaster
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseMiniKit to Farcaster SDK
将MiniKit迁移至Farcaster SDK
Breaking Changes (SDK v0.2.0+)
重大变更(SDK v0.2.0+)
- is a Promise — must await
sdk.context - accepts no parameters
sdk.isInMiniApp() - has no onClick callback
sdk.actions.setPrimaryButton()
Check version:
npm list @farcaster/miniapp-sdk- 是一个Promise——必须使用await
sdk.context - 不接受任何参数
sdk.isInMiniApp() - 没有onClick回调
sdk.actions.setPrimaryButton()
查看版本:
npm list @farcaster/miniapp-sdkQuick Reference
快速参考
| MiniKit | Farcaster SDK | Notes |
|---|---|---|
| | |
| | Async |
| | No params |
| | |
| | |
| | |
| | |
| | |
| | |
| | No callback |
| | See AUTH.md |
| MiniKit | Farcaster SDK | 说明 |
|---|---|---|
| | |
| | 异步 |
| | 无参数 |
| | |
| | |
| | |
| | |
| | |
| | |
| | 无回调 |
| | 查看 AUTH.md |
Context Access Pattern
上下文访问模式
typescript
// WRONG
const fid = sdk.context?.user?.fid;
// CORRECT
const context = await sdk.context;
const fid = context?.user?.fid;In React components, use state:
typescript
const [context, setContext] = useState(null);
useEffect(() => {
const load = async () => {
const ctx = await sdk.context;
setContext(ctx);
};
load();
}, []);typescript
// 错误写法
const fid = sdk.context?.user?.fid;
// 正确写法
const context = await sdk.context;
const fid = context?.user?.fid;在React组件中,使用状态:
typescript
const [context, setContext] = useState(null);
useEffect(() => {
const load = async () => {
const ctx = await sdk.context;
setContext(ctx);
};
load();
}, []);Conversion Workflow
转换流程
- Verify Node.js >= 22.11.0
- Update dependencies — see DEPENDENCIES.md
- Replace imports: →
@coinbase/onchainkit/minikit@farcaster/miniapp-sdk - Convert hooks using reference above
- Add FrameProvider — see PROVIDER.md
- Update manifest: →
frame— see MANIFEST.mdminiapp
- 验证Node.js版本 >= 22.11.0
- 更新依赖——查看 DEPENDENCIES.md
- 替换导入:→
@coinbase/onchainkit/minikit@farcaster/miniapp-sdk - 参考上方内容转换钩子
- 添加FrameProvider——查看 PROVIDER.md
- 更新清单:→
frame——查看 MANIFEST.mdminiapp
Common Errors
常见错误
"Property 'user' does not exist on type 'Promise<MiniAppContext>'"
→ Await before accessing properties
sdk.context"Expected 0 arguments, but got 1"
→ Remove parameters from
sdk.isInMiniApp()Context is null in components
→ Ensure FrameProvider is in your provider chain
"Property 'user' does not exist on type 'Promise<MiniAppContext>'"
→ 在访问属性前需await
sdk.context"Expected 0 arguments, but got 1"
→ 移除的参数
sdk.isInMiniApp()组件中上下文为null
→ 确保FrameProvider在你的提供者链中
References
参考链接
- MAPPING.md — Complete hook-by-hook conversion reference
- EXAMPLES.md — Before/after code examples
- PROVIDER.md — Provider setup with FrameProvider
- PITFALLS.md — Common errors and solutions
- DEPENDENCIES.md — Package updates
- AUTH.md — Quick Auth migration
- MANIFEST.md — farcaster.json changes
- MAPPING.md — 完整的逐钩子转换参考
- EXAMPLES.md — 代码示例(转换前后)
- PROVIDER.md — 使用FrameProvider配置提供者
- PITFALLS.md — 常见错误与解决方案
- DEPENDENCIES.md — 包更新指南
- AUTH.md — Quick Auth迁移指南
- MANIFEST.md — farcaster.json变更说明