useSyncEmbeddedWalletFlow) ran after login and, when the project had automatic creation enabled, provisioned a wallet without any code on your side. The JavaScript SDK removes that implicit step — you call createWaasWalletAccounts yourself, after checking whether the user still needs a wallet.
What maps to what
What’s missing for this user?
Before creating anything, confirm WaaS is enabled and find the chains the user doesn’t have a wallet for yet.getChainsMissingWaasWalletAccounts() returns exactly the chains you should create — an empty array means the user is already set up.
Reproducing the auto-create behavior
The one thing that changes for migrating apps is that nothing creates the wallet for you anymore. To keep the React SDK’s “create on login automatically” behavior, run the check-and-create step yourself once the user is authenticated.shouldAutoCreateWalletForChain({ chain }) mirrors the project setting the widget used to read.
- TypeScript
- React
When your project protects WaaS wallets with a password, collect it first (
isPasswordRequiredForWaasWallets()) and pass it to createWaasWalletAccounts({ chains, password }) — the same password protects every WaaS wallet the user has. See Embedded wallets: password & security.Building it
Wallet creation is one step of the wider post-login setup, so the full build — the on-demand “Create wallet” button, password handling, and error cases — lives in the Building UI guide: Post-login user setup → Embedded wallet step (Building UI).See also
- Embedded wallets: password & security — collecting and managing the WaaS password
- Post-login user setup — where wallet creation fits in the post-login sequence
- Upgrading embedded wallets — migrating older embedded wallets to Dynamic WaaS