Guide for migrating from Para version 1.x to Para’s version 2.0 alpha release
Use this guide for assistance migrating from Para version 1.x to Para’s version 2.0 alpha release. Para 2.0 is in active development, and feature changes are expected while we work toward the final stable version. Developers wanting the latest changes should use the alpha version.
The setup-para
CLI tool needs to run before running your app to ensure all @getpara
libraries are properly polyfilled. It is recommended to do this in your postinstall
step of your package.json
, something like:
The ParaProvider
is now required to be used when using the @getpara/react-sdk
A queryClient
from @tanstack/react-query
must be provided.
See the @tanstack/react-query
docs for more information on setting up a QueryClient
The appName
prop has moved from a modal prop to a required config prop on the ParaProvider
. This name will be used throughout the modal and in any external wallet providers that may be used.
The ParaModal
no longer needs to be provided separately, it is automatically included with the ParaProvider
and all modal props can be passed to the ParaProvider
.
The ParaModal
can still be provided separately if that is preferred. In this case the disableEmbeddedModal: true
value should be passed to the ParaProvider
config.
The ParaModal
props, isOpen
and onClose
, are no longer required (though they can be provided if desired). These values are now handled by the ParaProvider
and developers can use the useModal
hook to control the modal state.
When using external wallets the Para connector libraries no longer need to be provided, just installed. All config values for these connectors can be passed to the ParaProvider
.
Migration to V2 can be done one of two ways:
ParaModal
component you are providing and use the modal that the updated ParaProvider
provides. This option offers the most code reduction and overall simpler developer experience.ParaModal
component you are providing in your app. This option is a bit quicker than the first but will lead to a poorer developer experience.Remove your <ParaModal>
and use the one built into <ParaProvider>
.
Starting Code:
After Migration:
If you’re using external wallets with Para currently, those configs can now be passed to the ParaProvider
and the connectors will be instantiated for you. Assuming you already followed the migration steps above, a successful migration would look like:
Notes on the external wallet migration:
wallets
value in the externalWalletConfig
evmConnector
config needs to be passed, the other connectors will be skipped in that case.Methods dealing with pregen wallets now use a simpler object-based notation to specify the type and identifier the wallet belongs to.
Enum types used in certain methods, while still available, are now replaced with string union types. You will not be required to import these enums for methods that accept them.
User identity attestations are now represented as auth objects with a single key and value, representing both the type of attestation and the relevant identifier. These objects are used for methods that require an attestation of this type, primarily those for authentication and pre-generated wallet management.
Phone number auth objects expect a string in international format, beginning with a +
and containing only numbers without spaces or extra characters, i.e.: +${number}
. If your UI deals in separated country codes and national phone numbers, you may use the exported formatPhoneNumber
function to combine them into a correctly formatted string.
This feature is available in the following SDKs:
@getpara/web-sdk
@alpha@getpara/react-sdk
@alpha@getpara/react-native-sdk
@alphaFor methods that wait for user action, such as waitForLogin
, you may now pass a callback that is invoked on each polling interval, as well as a callback to indicate whether the method should be canceled and another invoked upon cancelation.
The primary methods for authenticating via phone, email address, or third-party services have been overhauled and greatly simplified. If you are using a custom authentication UI, refer to the Custom Authentication UI page for detailed instructions and code samples. For new developers, the Para Modal is the preferred option to handle user authentication in your app.
We’ve streamlined and improved several core methods in version 2.0.0. The following sections outline what’s changed and what actions you need to take.
These changes are required when upgrading to version 2.0.0. Make sure to update your code accordingly to avoid breaking your application.
Authentication Methods
checkIfUserExists
initiateUserLogin
createUser
checkIfUserExistsByPhone
initiateUserLoginForPhone
createUserByPhone
signUpOrLogIn
Modify your current authentication flow to use the new simplified signUpOrLogIn
method as detailed on our Custom Authentication UI page.
This change simplifies the authentication process by consolidating multiple methods into a single, more intuitive function.
Authentication Polling
waitForLoginAndSetup
waitForAccountCreation
waitForPasskeyAndCreateWallet
waitForLogin
waitForSignup
waitForWalletCreation
Modify your current authentication flow to use the new simplified methods as detailed on our Custom Authentication UI page.
Pregen Wallet Methods
Farcaster Methods
initiateFarcasterLogin
waitForFarcasterStatus
verifyFarcaster
Use the simplified verifyFarcaster
method as detailed on our Custom Authentication UI page.
OAuth Methods
getOAuthUrl
waitForOAuth
verifyOAuth
Use the simplified verifyOAuth
method as detailed on our Custom Authentication UI page.
Session Methods
2FA Methods
check2FAStatus
(Deprecated)enable2FA
verify2FA
setup2FA
setup2fa
(Replaces check2FAStatus
)enable2fa
verify2fa
check2FAStatus
with setup2fa
, which will now either return { isSetup: true }
or { isSetup: false, uri: string }
depending on the current user’s settings