Skip to content


The release notes for the @privy-io/react-auth SDK.


  • Add cross-app account linking and wallet requests via useCrossAppAccounts hook
  • add iconUrl option to signMessage and signTypedMessage
  • Improve OTP code resend experience
  • Improve loading and success state for signature screen
  • Improve error state for social login
  • Improve login error callbacks
  • Upgrade Coinbase Wallet SDK to 4.0.3


  • Add support for Telegram seamless authentication
  • Pre-emptively block Google login in more in-app browsers where it is expected to fail (LinkedIn, Coinbase Wallet, MetaMask, etc.)


  • Add useSetWalletRecovery hook to set user-controlled recovery methods for embedded wallets
  • Add getEmbeddedConnectedWallet helper to parse useWallets array for the embedded wallet
  • Fix issue with Twitter login on Android due to deeplinks not working
  • Fix issue with recalculating nonce when retrying a failed transaction
  • Fix typo in passkey enrollment screen


  • Upgrade @walletconnect/ethereum-provider to 2.13.1, fixes Error: description is required value in metadata error introduced by WalletConnect
  • Add config.appearance.loginMessage interface for setting a custom subtitle below logo
  • Deprecate goerli and polygon mumbai chains
  • Add blast to OP-Stack gas estimation
  • Improve error handling around wallet connector initialization


  • Add support for Coinbase's Smart Wallet


  • Fix issue with signatures not working when wallet address is not checksummed


  • Add support for resetting password via setPassword
  • Fire connectWallet's onSuccess/onError callbacks whenever a wallet is connected, including during login with SIWE
  • Add mfaMethods to useMfa hook
  • Retry JSON-RPC requests used to load connected wallets to handle flaky injected providers on page load
  • Reduce noisy console warnings


  • Improved errors for embedded wallet gas estimation
  • Minor improvements to refresh token storage


  • Telegram link/unlink
  • Add embedded wallet recovery via iCloud
  • Make Farcaster QR code more scannable
  • Throw more accurate error when gas estimation fails


  • Improve error UI for SMS login
  • Add console warning for gas estimation failure
  • Add console warning for message signing failures


New features

  • Add rabby_wallet as a walletList option

Visual improvements

  • Improve error UI for embedded wallet transactions
  • Fix Twitter and Github logos on dark mode


  • Use Privy RPC endpoints for mainnet
  • Remove dynamic import of CB wallet SDK, fixes issues around connection persisting across refresh and tabs
  • Add scroll to login overflow screen when there are greater than 5 options
  • Update ready from useWallets to respect external wallet loading state


New features

  • Add instagram to supported loginMethods
  • Add new Farcaster write interfaces to useExperimentalFarcasterSigner


New features

  • Add passkeys as an option for transaction MFA
  • Improve customization of transaction modal via successHeader and successDescription

Bug fixes

  • Update ready from useWallets hook to only correspond to embedded wallet loading state

Visual improvements

  • Update transaction error UIs


  • Add Google Drive as an embedded wallet recovery option


  • Add linked account to callback of useLinkAccount and useLogin hooks
  • Update copy on set password screen to emphasize that loss of password and device will mean loss of the wallet
  • Improve MFA enrollment loading state for TOTP
  • Use Privy RPC endpoints for Berachain Artio
  • Add firstVerifiedAt and latestVerifiedAt, deprecate verifiedAt field on account objects
  • Add config.appearance.landingHeader prop to allow customization of login modal header text
  • Deprecate Redstone Holesky and add Redstone Mainnet + Garnet Holesky


  • Read server config flags on createWallet
  • Improve OAuth provider errors
  • Bump mipd dependency from 0.0.5 to 0.0.7


  • Avoid auto-closing login modal when access token is deleted from storage
  • Update gas estimation to prioritize including the from address


  • Fix SDK authenticated and user state when access token is cleared


  • Minor internal improvements


  • Add Polygon Amoy Privy RPC endpoints
  • Improve request retry logic


  • Fix edge case when signing in with multiple Coinbase wallets
  • Fix bug preventing Passkey retries due to browser user intent requirements
  • Visual adjustments for Passkey login and link


  • Expose status of login flow from useLoginWithSms hook
  • Fix issue with headless login where link was called when login should be


New features

  • Add login with passkey (configurable via Dashboard)

Bug fixes

  • Disable wallet link in CBW
  • Don't show login modal when awaiting ready and already authenticated
  • Remove extra redirect prompt during sign in with external wallets
  • Add support for BSC and Sapphire transactions when using wagmi

Visual improvements

  • Improve user limit reached sign-in error
  • Fix focus outline on phone number and email inputs


  • Add support for Berachain Artio


  • Add IDs to modal content and backdrop
  • Update gas estimation to support ERC20 contracts that require a .from parameter
  • Pin Coinbase Wallet SDK to 3.9.3


  • Update storage location for OAuth and PKCE


  • Ensure transaction type gets defaulted even if gas fees are manually set by developer
  • Disable switchChain prompt on wallet login if supportedChains are set without a defaultChain
  • Extend Polygon gas estimation logic to Amoy testnet
  • Change copy on transaction status screen
  • Show app name instead of "Privy" in Coinbase Wallet during connect flow
  • [experimental] Support writes to farcaster via useExperimentalFarcasterSigner hook
    • Note this interface is experimental and may change in a future update


  • Improve sign in with Farcaster redirect on iOS
  • Fix "cannot dequeue event" console errors


  • Improve consistency of 'Take me to Warpcast' button
  • Fix bug where users are prompted to SIWE repeatedly after selecting a wallet login
  • Fix bugs related to repeated clicks on OAuth login buttons
  • Update OAuth query param removal to use replace instead of push
  • Add support for Polygon Amoy testnet out of the box
  • Dependencies: update jose from 4.14.6 to 4.15.5


  • Fix cookie-based session restoration on new subdomain
  • Update signTypedData handler to only default EIP712Domain type if not specified by caller
  • Improve handling around embedded wallet creation errors
  • Update RPC endpoints for some testnets


  • Fix phantom installation screen: reload after confirming installation
  • Fix ready from useWallets when phantom is in walletList


  • Improve text padding on password inputs
  • Improve gas limit estimation with retries
  • Add useLinkAccount callback method
  • Fix bug where MFA methods are stale


New features

  • Add new options to appearance.walletList: cryptocom, uniswap, and okx_wallet
  • Expose useFundWallet to fund external wallets
  • Update gas estimation logic

Bug fixes

  • Fix ready from useWallets not getting set to true
  • Fix wallets array not updating after disconnecting Coinbase Wallet
  • Update config to override appearance.walletList with loginMethodsAndOrder if defined
  • Improve consistency of placeholder phone numbers

Build improvements

  • Mark library as side effect free
  • Update coinbase wallet SDK
  • Reduce and improve console warnings on app startup


  • Reduce and improve console warnings on app startup
  • Fix ready from useWallets not getting set to true
  • Expose useFundWallet to fund external wallets


  • Add Spotify OAuth Integration
  • Add connectOrCreateWallet
  • Add update email flow
  • Error state styling improvements
  • Improve session refresh logic


  • Fix an issue causing OAuth logins to fail


  • Minor improvements to SDK initialization
  • Minor copy updates
  • Improve dialog accessibility


  • Add signTypedData and associated UIs
  • Add name to TikTok account interface
  • Add documentation about Twitter Profile Picture image size
  • Add useSetWalletPassword callback function
  • Improve error handling on createWallet
  • Handle Twitter account suspended errors


  • Ensure Twitter login is disabled by mobile on default due to issues with Twitter OAuth on mobile. You can override this setting in the Dashboard.
  • Tree-shake friendly icon imports
  • Deprecate noPromptOnSignature. You should now set this configuration in the Dashboard.


  • Fix bug with password-based recovery in exportWallet method
  • Fix spacing on OAuth status screen
  • Update check for whether a wallet is linked or not to handle exported embedded wallets
  • Update WalletConnect to not specify required chains namespaces unless a defaultChain is explicitly set
  • Update ConnectedWallet object with more WalletWithMetadata


New Features

  • Add Twitter profilePictureUrl to user object. Existing users must login with Twitter again to have their profile picture fetched.
  • With Google OAuth, pre-emptively direct users out of in-app browsers as Google OAuth is blocked in in-app browsers. Read more.


  • Fix "Try again?" CTA on Farcaster error screen to take user back to QR code
  • Check that wallet has sufficient funds to cover gas in addition to value for transactions


  • Dramatically improve initial modal load by optimizing wallet connector initializations
  • Update docstring for config.loginMethods
  • Rename developer "console" to "dashboard"


  • Remove copy link on farcaster loading screen
  • Disable captcha challenge if the user is already authenticated
  • Enable automatic wallet creation for Farcaster login
  • Disable clicking outside to close Privy modal on unrecoverable screens
  • Update captcha view styles
  • Improve Sign in with Farcaster link opening
  • Rename profile_picture to profile_picture_url


  • Rename farcaster_id to fid for consistency
  • Export Farcaster account on User object (user.farcaster)
  • Improve captcha challenge timing


  • Add sign-in with Farcaster. Please use version 1.55.1 to consume the most updated interfaces.
  • Add privyWalletOverride to Chain type for overriding RPC urls
  • Update useWallets to throw when used outside of PrivyProvider
  • Style updates to various SVG elements


  • Add intermediary screen for CAPTCHA
  • Improve wallet timeout error handling


  • Fix issue with crypto utils compatibility
  • Fix outline bug for status icons on dark mode
  • Disable retries on 429s


  • Use browser friendly crypto utils
  • Improve error handling for social login buttons


  • Fix issue with dialog z-index
  • Fix OAuth connecting screen delay after redirect
  • Fix issue with Coinbase Wallet not showing as a "detected wallet" when omitted from the walletList
  • OAuth authentication protocol upgrade


  • Improve accessibility and compatibility of the Privy modal
  • Update defaultChain and supportedChains types to handle viem's updated Chain type
  • Fix issue where Phantom wallet button would not always show


  • Add captcha support for SIWE and OAuth logins
  • Add default support for Base Sepolia, Optimism Sepolia, and Zora Sepolia and handle them as OP Stack chains
  • Fix wallet images on mobile
  • Improved handling when dialog is not supported (more coming in subsequent release)
  • Set privy-session client cookie when not using server cookies


  • Ensure MFA only happens once for key export
  • Fix visual bug with key export triggered with MFA


  • Add ready interface to useWallets
  • Add onAccessTokenGranted and onAccessTokenRemoved callbacks for access tokens


  • Minor bugfixes


  • Fixes issue where Safari autofill would sometimes appear over invisible inputs
  • Add helper function errorIndicatesMfaCanceled to determine if a wallet error was due to MFA cancellation


  • Ensure BSC transactions are marked as type: 0 since BSC is not EIP-1159-compatible
  • Fix handling of unsupported region errors for SMS login and MFA
  • Add a console.warn message when opening MFA modal in headless mode
  • Fix visual issue with scrollbars on export wallet button


  • Ensure connections stored in memory are synchronized with local storage
  • Error immediately if an unauthenticated user calls a link- method, instead of after the linking user flow
  • When connecting to MetaMask mobile via WalletConnect, remove request to switch chain to the app's defaultChain due to MetaMask's flaky handling of wallet_switchEthereumChain RPC
  • Improve default estimation of maxPriorityFeePerGas for OP Stack chains


New Features

  • Add support for MFA on Embedded Wallet transactions
  • Add walletList configuration to PrivyProvider


  • Fix typo on Moonpay on-ramp screen
  • Fix disabled state for insufficient funds on send transaction screen
  • Improve image loading on send transaction screen

UI Changes

  • Update embedded wallet export screen UI


  • Fix MetaMask in cases where it is not EIP-6963 injected
  • Improve WalletConnect integration
  • Expose modal visibility state via useModalStatus


New Features

  • Add support for wallets injected via EIP-6963
  • Add support for wallets injected via legacy window.etherum as "Browser Extension"
  • Add rainbow as a default supported wallet


  • Fix broken scroll within WalletConnect modal
  • Improve Arbitrum gas estimation.
  • Better focus state for email and phone number inputs
  • Social login buttons no longer disabled after going back on browser
  • Modal interactions no longer blocked when opening on top of Radix UI modal

UI Changes

  • Update SMS country code selector for better consistency
  • Update icons for continue with email/sms on landing screen


  • Fix issue where transaction prompt can unexpectedly load twice
  • Handle WalletConnect re-pairing attempts better


  • Login onComplete callback includes login method
  • Fix Zerion wallet
  • Fix OAuth linking init URL when cookies are enabled
  • Remove default border from login modal
  • Fix infinite loader on login screen bug
  • Update copy for email and sms login
  • Remove letter support in PIN screens
  • Country code selector for phone numbers


  • Add explicit support for Rainbow browser extension wallet
  • Add out-of-the-box support for Holesky (L1) and Holesky Redstone (L2)
  • Add warnings for unsupported/not recommended login configurations in loginMethods
  • Improve deeplinking with MetaMask app on mobile web
  • Fix console.warnings related to WalletConnect
  • Fix issue around displayed gas estimates for OP Stack chains
  • Bump @coinbase/wallet-sdk dependency

UI Changes

  • Fix issue with showWalletLoginFirst login configuration being ignored
  • Fix icons and fonts on mobile login screen
  • Display email/social buttons on landing screen if only one email/social option
  • Underline "Follow this guide" link on the exportWallet screen


  • Design improvements on login modal
  • Enable additional configurations for loginMethods:
    • Email and SMS at the same time
    • Social only
    • Greater than 5 social login options
  • Update OP stack gas estimates and fix gas used calculation
  • Fix error message on signMessage screen

UI Changes


  • Add support for unenrolling MFA methods
  • Support Arbitrum Sepolia testnet out of the box
  • Upgrade from the legacy UIs to use @walletconnect/modal
  • Fix infinite polling on key export
  • Fix issue where ready was not properly set on return from OAuth redirects


  • Add cancel helper to the useMfa hook


  • Extend captcha timeout


  • Add TOTP support for MFA
  • Ensure developer-set gasLimit is always respected

UI Changes

  • Remove create external wallet prompt from home screen
  • Pull WalletConnect image from peer
  • Changed twitter logo to X logo


  • Ensure correct RPC URLs are used
  • Fix bug with logout retries
  • Fix bug around unrecognized parameters in transactions populated by third-party SDKs


  • Add support for Base and BNB with fiat onramp


  • Fix email and phone input placeholder color
  • Remove email and phone connect input tip
  • Add MFA retry logic
  • Fix transaction receipt button margin
  • Add out-of-the-box support for Zora and Zora Goerli Testnet
  • Fix modal close firing multiple times
  • Add config to enable/disable whether USD prices are shown in the embedded wallet transaction modal


  • Add password masking controls to embedded wallet password flows


  • Show error message for automatic wallet creation
  • Embedded wallet password confirmation type to "password"


  • Add config for resolving tx after submission
  • Ensure wallet proxy is explicitly loaded in signature request modal


  • Enable SMS-based transaction MFA enrollment and verification
  • Fix bug around prompting external wallets to switch chain on connection
  • Ensure correct chain ID is used during SIWE


  • Enable configuration of RPC timeout duration for specific wallets


  • Allow SDK to send transactions even if USD prices cannot be fetched
  • Handle Rainbow Wallet browser extension's hijacking of the MetaMask injected provider
  • Handle numeric eth_chainId responses from WalletConnect wallets
  • Fix precision of Polygon and Polygon Mumbai gas fees to avoid underflow errors
  • Fix bug around casting chainId from ethers to number
  • Fix embedded wallet creation after OAuth by waiting for iframe to load
  • Deprecate WalletWithMetadata.chainId in favor of BaseConnectedWallet.chainId


  • Use new set password flow when setting a password during wallet creation
  • Improve error message when wallet attempts to take action on an unsupported chain


  • Update contents of "Download Password" file
  • Improve UX of set password flow


  • Improve user flow for setting a password on the embedded wallet
  • Add network configuration via supportedChains and defaultChain


  • Extend support for social logins


  • Add LinkedIn OAuth to Social Logins
  • Fix chain-specific block explorer links for the embedded wallet transaction details screen


  • Fix signMessage to support multiple calls in sequence


  • Add button roles to login sections for screen reader visibility


  • Fix password strength value not updating on generate


  • Small design adjustments


  • Copy changes in wallet password and recovery flows
  • Do not generate inital value for wallet password form


  • Upgrade wallet recovery from short passcodes to support full passwords
  • Prevent closing embedded wallet password flow until password has been saved and confirmed
  • Bump @walletconnect/ethereum-provider version to 2.10.1


  • Support setting a password on an existing wallet using setWalletPassword


  • Add callbacks for createWallet
  • Allow Twitter login on mobile, despite unresolved Twitter OAuth bug
  • Ensure signMessage and sendTransaction throw appropriate errors when user declines request
  • Ensure Coinbase Wallet receives wallet_addEthereumChain RPC when necessary
  • Fix status of ready upon returning from OAuth redirect
  • Fix recovery for cookie-only sessions
  • Tweak documentation exports


  • Update handling of fundWalletConfig parameter in sendTransaction


  • Add support for configuring the SDK with additional chains from @wagmi/chains


  • Improve wallet address formatting on key export screen
  • Improve logo spacing on connectWallet modal
  • Update fiat on-ramp copy
  • When using Coinbase Wallet on mobile, pass user back and forth between browser and wallet apps instead of using the wallet's in-app browser


  • Add support for MoonPay Fiat On-Ramp plugin
  • Move towards using static JSON-RPC providers


  • Fix behavior of onClose callback for transaction screen if user clicks outside the modal
  • Fix issue with switchChain caching the wallet's original chain on page load
  • Handle Zerion Wallet's hijacking of the MetaMask injected provider


  • Add support for using embedded wallets with a custom auth provider
  • Add a shim for eth_requestAccounts RPC for the embedded wallet


  • Fix broken link on "What is a wallet?"
  • Add optional support for turnstile CAPTCHA
  • Make all fields in ContractUIOptions config optional
  • Persist the embedded wallet's chain ID across browser sessions


  • Add support for Linea
  • Improve styling for Safari PWAs
  • Improve messaging for embedded wallet insufficient funds
  • Improve styling on when loading on mobile
  • Fix issue with gas estimation


  • Improve price display for transactions
  • Improve handling of zero-value transactions


  • Add wallet.switchChain, which works across external and embedded wallets
  • Update Phantom logo
  • Improve error handling when attempting to login when already authenticated
  • Add support for Celo and Avalanche


  • Further improvements to sendTransaction UI customization


  • Add Base support


  • Update OAuth allowlist rejection handling
  • Improved handshake between Privy SDK and iframe
  • Removed iframe message target specification
  • Improved interfaces for transaction UI Customizations
  • Tightened login modal design


  • Fix sizing of connect wallet modal when no logo is set
  • Update "Learn more about wallets" hyperlink


  • Fix issue with app logo vertical spacing
  • Add Sepolia support


  • Resolve issue connecting to the embedded wallet when using cookies
  • Launch the wallet recovery flow when requesting actions through the embedded EIP-1193 provider


  • Add loading state during embedded wallet creation
  • Narrow iframe messaging target
  • Fix race condition when fetching the nonce for SIWE
  • Fix issue where an embedded wallet would be created on login but the UI would hang
  • Fix an issue where walletProvider was sometimes undefined when checking if connected


  • Add a short delay before signing with MetaMask with WalletConnect to bypass issues with chain switching (awaiting upstream resolution)
  • Support signing UInt8Array messages
  • Fix inconsistent modal sizing bugs
  • Fix issue with wallet recovery flow for non-pinless wallets during headless message signing
  • Add headless sendTransaction
  • Remove AbortSignal.timeout (not supported in iOS < 16)
  • Add embedded wallet support for eth_signTypedData_v4


  • Reduce SDK log chattiness
  • Fix authenticated connect-only screen
  • Resolve issues with duplicate create embedded wallet calls
  • Fail fast when trying to link accounts for which there can only be one (sms, email, socials)
  • Fix issue with MetaMask wallet address not matching
  • Increase default request timeout
  • Increase default request retries
  • Fix an issue with wallet loginOrLink
  • Fix sendTransaction modal issue with non-Ethereum chains


  • Update WalletConnect dependencies to fix reliability issues


  • Fix bug where signature requests would hang indefinitely on React 17
  • Updates WalletConnect providers to support more JSON RPC methods
  • Remove dependency on crypto.randomUUID()


  • Fix useWallets hook to properly listen to user-triggered disconnects from MetaMask
  • Updates WalletConnect to support Privy's supported networks
  • Updates WalletConnect to clear sessions faster on logout calls
  • Updates the z-index of Privy modals to be arbitrarily high so that it is not hidden by any app UIs


  • Fix an issue where not depending on @walletconnect/modal would require build failures in certain build environments
  • Load only WalletConnect v2-compatible wallets in the mobile modal. This also resolves paging overflow on mobile


  • Migrate WalletConnect from v1.0 to v2.0. Learn more
  • Add support for Celo (mainnet and Alfajores testnet), FVM (mainnet and Calibration testnet), and Base (Goerli testnet)
  • Fix local development issue where React strict-mode duplicates calls to create embedded wallets
  • Fix UI issues related to embedded wallet gas estimation
  • Store wallet client information (MetaMask, Coinbase Wallet, Rainbow, etc.) used when connecting Ethereum accounts


  • Add support for embedded wallet creation without requiring the user to set a PIN/passcode
  • Set client-side cookies alongside our localStorage tokens for local development/testing purposes
  • Update wallet_switchEthereumChain to match standardized params
  • Fix issue with linking/login from the wallets array
  • Fix issue where cookies weren't being properly set


  • Switch from axios to ofetch
  • Fix some issues with gas estimation
  • Fix issue where the wallets array wasn't getting properly updated


  • Fixes related to connect-only support
  • wallets interface improvements
  • Resolved an issue causing performance problems for pages with the PrivyProvider loaded


  • Connect-only support
  • New wallets array interface
  • Deprecate setActiveWallet, getEthereumProvider, getEthersProvider, getWeb3jsProvider in favor of wallets array methods
  • Fix WalletConnect chain switching


  • Decrease package size
  • Fix issue where signMessage contents did not respect newlines
  • Help circumvent issue with Phantom not supporting certain chains
  • Fix an issue with internal modal rendering


  • Improved recovery when sending a transaction to the EIP1193 provider
  • Improved visuals on low dollar amounts in embedded wallet transactions
  • Internal rendering mechanism improvements


  • EIP-1193 provider for embedded wallets
  • Preliminary cookie support


  • Fix ethereum object checking
  • Properly clear query params during session transfer to in-app browsers (resolves an issue where a refresh of the page would show the signing modal again)
  • Fix an issue with client-side config checking for apps with only wallet login


  • Fix an issue where attempting to sign in with smart contract wallets would show an incorrect error
  • Improve error handling related to Phantom extension window.ethereum hijacking
  • Improved client-side login config error handling and warnings


  • Add support for client-side configuration of modal ordering, ToS & Privacy Policy, supported login methods
  • Support setting logo using img and svg elements
  • Fix an issue where no logo caused an odd visual layout
  • Rename PIN to passcode for embedded wallets
  • Add support for submitting transactions using embedded wallets


  • Enable support for Phantom wallet
  • Add sign-in with Apple
  • Allow override of API URL


  • Update styling of app logo
  • Improve MetaMask UX around setting active wallet when all wallets are disconnected
  • Include ToS & Privacy Policy on modal in mobile


  • Remove layout shifts from embedded wallet iframe
  • Allow user to escape modal on clicking out or hitting ESC


  • Improve embedded wallet recovery UIs


  • Improve embedded wallet UIs


  • Enable embedded wallet private key export
  • Fix Metamask getting stuck in app store during deep linking


  • Add support for dark mode, client-side logo config, and advanced theming configuration
  • Improved mobile Coinbase Wallet experience. If already logged in to the mobile browser, this session will be transferred to the Coinbase Wallet in-app browser
  • Fix issues with blank tabs appearing on some browsers (ie Firefox)


  • Improved mobile wallet connection flow
    • Switch to using WalletConnect for MetaMask on mobile
    • Better WalletConnect connection management
    • Split wallet connection and sign on mobile to reduce issues getting stuck in App Store
  • Embedded wallet recovery
  • Fix issues when unlinking with multiple wallets
  • Improve active wallet management
  • Add hover states to all buttons and clean up app color usage


  • Add option for automatic embedded wallet create flow after login
  • Fix issue with signing using WalletConnect after page is refreshed


  • Disable background scrolling when the modal is open
  • Fix user.wallet not getting set for embedded wallets if there is external wallet data in localStorage
  • Improve PIN entry for embedded wallets on mobile
  • Fix excessive WalletConnect loading that was hitting Infura a ton


  • Release embedded wallets!
  • Fix issue with long emails overflowing the modal
  • Fix height on wallet connection status screen to avoid reflows


  • Improved multi-wallet linking
  • Disable passwordless code autofill on non-mobile
  • Improved home screen when there's only one authentication option