@vechain/react-native-wallet-link uses event-driven callbacks to handle communication from the VeWorld wallet back to your application.
Each event is triggered after a wallet action — connection, disconnection, signing, or transaction submission.
These callbacks allow you to decrypt the returned payload, update your app state, and handle any potential errors gracefully.
You define these handlers inside the config prop of the VeWorldProvider.
<VeWorldProvider
appName="My VeChain App"
appUrl="https://myvechainapp.com"
redirectUrl={Linking.createURL('/', { scheme: 'myvechainapp' })}
node={TESTNET_URL}
config={{
onVeWorldConnected,
onVeWorldDisconnected,
onVeWorldSignedCertificate,
onVeWorldSignedTypedData,
onVeWorldSentTransaction,
}}
>
{/* App components */}
</VeWorldProvider>Triggered when the user connects their VeWorld wallet successfully.
onVeWorldConnected: (response) => {
if ('errorCode' in response) {
console.error(response.errorMessage);
return;
}
const payload = decryptPayload<OnVeWorldConnectedData>(
keyPair.secretKey,
response.publicKey,
response.nonce,
response.data
);
setAddress(payload.address);
setSession(payload.session);
setVeWorldPublicKey(response.publicKey);
console.log('Connected to wallet:', payload.address);
};Notes
- Always check for
errorCodebefore decryption. - Save the returned
sessionandpublicKeysecurely. - Once connected, your app can initiate signing and transaction requests.
Triggered when the user disconnects from the wallet or the session is invalidated.
onVeWorldDisconnected: (response) => {
if (response && 'errorCode' in response) {
console.error(response.errorMessage);
return;
}
setAddress(null);
setSession(null);
setVeWorldPublicKey(null);
console.log('Disconnected from VeWorld');
};Notes
- Clear all wallet-related state after disconnection.
- Use this event to reset your app’s UI or session context.
Triggered when the wallet signs a plain-text or certificate message.
onVeWorldSignedCertificate: (response) => {
if ('errorCode' in response) {
console.error(response.errorMessage);
return;
}
const payload = decryptPayload<OnVeWorldSignedData>(
keyPair.secretKey,
response.publicKey,
response.nonce,
response.data
);
console.log('Certificate Signature:', payload.signature);
};Notes
- Use this event for user authentication, message attestation, or identity verification.
Triggered after a successful EIP-712 typed data signing operation.
onVeWorldSignedTypedData: (response) => {
if ('errorCode' in response) {
console.error(response.errorMessage);
return;
}
const payload = decryptPayload<OnVeWorldSignedData>(
keyPair.secretKey,
response.publicKey,
response.nonce,
response.data
);
console.log('Typed Data Signature:', payload.signature);
};Notes
- Useful for DApps using structured data (EIP-712) for verifiable off-chain signatures.
Triggered when a transaction is signed and submitted by the wallet.
onVeWorldSentTransaction: (response) => {
if ('errorCode' in response) {
console.error(response.errorMessage);
return;
}
const payload = decryptPayload<OnVeWorldSignedTransactionData>(
keyPair.secretKey,
response.publicKey,
response.nonce,
response.data
);
console.log('Transaction ID:', payload.transaction.id);
};Notes
- The payload contains the transaction ID and clause details.
- You can track this transaction using a VeChain explorer.