OpenApps frontend
O lado cliente de um aplicativo OpenApps: o SDK que seu aplicativo web ou móvel chama, como os usuários finais se autenticam e como o frontend hospedado é servido. A política ainda governa cada escrita do cliente, então combine esta com a skill openapps-backend quando uma ação do cliente precisar de uma regra ou invariante, e openapps-deploy para hospedagem e domínios. Para rotear entre a família, veja a skill raiz openapps.
Roteador de Referência
Leia apenas a linha que corresponde à tarefa ou termo atual.
| Tarefa ou termo | Leia |
|---|---|
Leituras do SDK, escritas, assinaturas, paginação, queryAggregate, count, filtros, ordenação, cursor, setMany, set(path, null) | Referência do SDK |
| Construir um frontend web | Guia de aplicativo web |
Servidor de desenvolvimento local (npm run dev, Vite, localhost), falha no popup de login, redirect_uri origin is not a registered origin, CORS durante desenvolvimento local | Desenvolver em localhost |
Timer de atualização, setInterval, polling, "manter atualizado", contagem regressiva, interface obsoleta | Referência do SDK |
| Construir para React Native / móvel | Guia React Native |
OTP por e-mail do usuário do aplicativo, OAuth, openBoundedWidget, widget de login unificado, autenticação Turnkey padrão | Autenticação do aplicativo |
Login com carteira própria; walletLogin, authMethod:'phantom', supportsWalletSignIn, carteira não suportada / Wallet Standard | Login com carteira |
Login com carteira perdido ao recarregar, getCurrentUser() nulo após recarregar, bounded_last_auth_method, método de restauração de sessão | Login com carteira - "Sessões de carteira sobrevivem a recarregamentos" |
| Convidados, usuários anônimos, links de convite, upgrade de conta | Contas anônimas |
Vincular conta X de um usuário, connect('x'), completeConnection, getConnections, handle X verificado, __connections__ | Contas conectadas |
| Frontend hospedado e URLs de aplicativo | Hospedagem de frontend |
Login de desenvolvedor via CLI ou openapps login | Contas de desenvolvedor |
Carteira incorporada, auth.wallets, @user.address após login por e-mail/social | Carteiras incorporadas |
onramp(), comprar SOL/USDC com cartão, Coinbase Onramp, recarga de carteira | Onramp |
Regras Práticas
- Toda escrita do cliente é governada por política; um
403em uma escrita é uma negação de regra, não um bug do cliente. Veja a skill openapps-backend para a regra. - Leituras negadas retornam respostas
200vazias, nunca403. - Ao vivo por padrão; nunca faça polling. Toda coleção é baseada em push, então um
setIntervalque relê um caminho é um bug, não uma escolha de ajuste - useuseQuery(React) ousubscribe. Contagens regressivas marcam no estado do relógio local, não em uma releitura. Para as poucas superfícies que não são ao vivo (runQuery,functions.invoke, terceiros), faça polling deliberadamente: pause em uma aba oculta, escopo o timer para o estado que precisa dele, recue e limite. Veja sdk-reference.md. - Agrupe leituras para listas de valores computados com
runQueryMany; nunca mapeierunQuerysobre uma lista. Veja sdk-reference.md. - Coloque chaves de API de provedores nos segredos do OpenApps (backend), nunca no código do frontend.
- Se
npm auditrelatar o avisouuidGHSA-w5hq-g745-h8pq através de@solana/web3.js -> jayson, use a receita de substituição com escopo. Ela aborda esse aviso; executenpm audit --omit=devno lockfile instalado e investigue quaisquer outras descobertas separadamente. - Mantenha os padrões de autenticação para a maioria dos aplicativos. Não adicione
authModeouauth.walletspara "habilitar carteiras": o login padrão Turnkey por e-mail/social já carrega@user.address. Implemente"auth": { "wallets": true }apenas para uma sessão de PAR DE CHAVES EXTERNA (login com carteira própria, cliente SDK com par de chaves do servidor, via de dados do par de chaves da CLI). Regra completa e as exceções: embedded-wallets.md. @user.id(o id da conta) é identidade/propriedade;@user.addressé a carteira. Chave de propriedade, associação e proteções de autenticação em@user.id(sempre presente). Alcance@user.addressapenas para semântica de carteira/onchain - nunca como a chave de identidade.- Login com carteira em um telefone precisa do adaptador Solana Mobile. Um navegador de telefone nunca injeta aplicativos de carteira; mantenha
@solana-mobile/wallet-standard-mobileinstalado (legacy-peer-deps=trueno.npmrc) e nunca verifiquewindow.solanaantes de abrir o widget. Veja Solana Mobile.