Pera Connect

JavaScript SDK for integrating Pera Wallet to web applications.

View at GitHub - View at NPM - View at Yarn

What is @perawallet/connect?

@perawallet/connect is a JavaScript SDK for integrating Pera Wallet to web applications. You can use this SDK to connect to a dApp, sign transactions, etc. using Pera Wallet.

@perawallet/connect is maintained by the Pera Team. For more detailed information you can read this document or the GitHub readme.

Check the Migrating to @perawallet/[email protected] guide before migrating to V1 or higher.

Quick Start

Let's look at how we can connect Pera Wallet to our dApp using **@perawallet/connect**. We will use React for these examples, but you can also use **@perawallet/connect** with other frameworks. For this, you can take a look at the example applications section. Let’s start!

  1. First, install @perawallet/connect

After that you can import the SDK into your React app like this using:

2. Create the PeraWalletConnect instance:

When creating a new instance, you can use different options:

  • chainId

    Determines which Algorand network your dApp uses.

    MainNet: 416001

    TestNet: 416002

    BetaNet: 416003

    All Networks: 4160

  • shouldShowSignTxnToast

It's enabled by default but in some cases, you may not need the toast message (e.g. you already have signing guidance for users). To disable it, use the shouldShowSignTxnToast option:

3. Create connect example button for wallet connection:

4. Create handler methods for Pera Wallet connection:

handleWalletConnectClick()

handleDisconnectWalletClick()

We use them in the onClick event of the button that we created in the previous step. If there is an account connected to the dApp, we use the handleDisconnectWalletClick() function, if there is no account connected, we use the handleWalletConnectClick() function.

5. If you don't want the user's account information to be lost by the dApp when the user closes the browser with with the wallet connection to the dApp, you need to handle the reconnect session status. You can do this in the following way:

After these 5 steps, you can use your dApp making new transactions with Pera Wallet 🎊. Your App.tsx file will look like this.

Using with React@18

When you want to use @perawallet/connect library with React 18, you need to make some changes. react-scripts stopped polyfilling some of the packages with the [email protected] version. After creating a new app with npx create-react-app my-app or in your react application, the following changes should be made.

  1. Firstly, install the following packages

2. After that you need to override some webpack features. Create the following file in the root directory of the project and copy the following code block into it.

config-overrides.js

3. You need to update react-scripts version to 5.0.1 or higher.

4. Finally, you need to update the npm scripts.

After that, you are good to go! 🎊

Methods

  • Starts the initial connection flow and returns the array of account addresses.

  • Reconnects to the wallet if there is any active connection and returns the array of account addresses.

  • Disconnects from the wallet and resets the related storage items.

  • Returns the platform of the active session. Possible responses: mobile | web | null

  • Checks if there's any active session regardless of platform. Possible responses: true | false

  • Starts the sign process and returns the signed transaction in Uint8Array

Signing Transactions

@perawallet/connect also allows signing transactions using the Pera Wallet application. Once the signTransaction method is triggered, if the user is on a mobile browser, the Pera Wallet app will be launched automatically. If the browser blocks the redirection there's also a popup that links to the Pera Wallet app. There's an option called shouldShowSignTxnToast to disable it, see the example below:

You can also call the closePeraWalletSignTxnToast function to hide the toast.

signTransaction accepts SignerTransaction[][] the type can be find below:

You have to follow these steps to a sign transaction.

  1. Set up algosdk client

2. Set up Transactions

3. Map Transaction to SignerTransaction[]

4. (Optional step) Create some utility functions to create the transaction before the sign transaction function

generateOptIntoAssetTxns({assetID, initiatorAddr})

generateAssetTransferTxns({to, assetID, initiatorAddr})

5. After this, you can sign a single transaction or group transaction using promises

Single Transaction

Group Transaction

Payment Transactions

Asset Transfer Transactions

Opt-In Asset Transactions

Multiple Transactions

Customization

@perawallet/connect lets you UI change a few things based on your dApp's needs.

  1. Change Pera Wallet Connect Modal z-index to avoid conflicts

2. Remove Sign Guidance Toast

3. Close Sign Guidance Toast

4. Your app name on Pera Wallet

By default, the connect wallet drawer on Pera Wallet gets the app name from document.title

In some cases, you may want to customize it. You can achieve this by adding a meta tag to your HTML between the head tag.

Example Applications

Brand Guidelines

Please follow our brand guidelines when using @perawallet/connect in your dApp. To download our Media Kit that includes useful assets such as the official Pera logo, App images, roadmap, and official links, please visit our website.

Last updated