> ## Documentation Index
> Fetch the complete documentation index at: https://docs.canton.network/llms.txt
> Use this file to discover all available pages before exploring further.

# 0.8.0

> Wallet SDK 0.8.0 release notes.

# 0.8.0

**Release on September 24th, 2025**

* **Important!: The flow has been simplified for prepare and execute of commands, however this means code needs to be converted**

```javascript theme={"theme":{"light":"github-light","dark":"github-dark"}}
// previous prepare and submit flow
const [tapCommand, disclosedContracts] = await sdk.tokenStandard!.createTap(
    sender!.partyId,
    '2000000',
    {
        instrumentId: 'Amulet',
        instrumentAdmin: instrumentAdminPartyId,
    }
)

await sdk.userLedger?.prepareSignAndExecuteTransaction(
    [{ ExerciseCommand: tapCommand }],
    keyPairSender.privateKey,
    v4(),
    disclosedContracts
)
```

in the new flow it is no longer needed to perform the array wrapping `[{ ExerciseCommand: tapCommand }]`
and you can instead pass the `tapCommand` directly

```javascript theme={"theme":{"light":"github-light","dark":"github-dark"}}
// new prepare and submit flow
const [tapCommand, disclosedContracts] = await sdk.tokenStandard!.createTap(
    sender!.partyId,
    '2000000',
    {
        instrumentId: 'Amulet',
        instrumentAdmin: instrumentAdminPartyId,
    }
)

await sdk.userLedger?.prepareSignAndExecuteTransaction(
    tapCommand,
    keyPairSender.privateKey,
    v4(),
    disclosedContracts
)
```

this goes for all transaction!

* Support Withdrawal flow for 2-step transfer

it is now possible for sender to withdraw a 2-step transfer that have previously been send

```javascript theme={"theme":{"light":"github-light","dark":"github-dark"}}
// Alice withdraws the transfer
const [withdrawTransferCommand, disclosedContracts] =
    await sdk.tokenStandard!.exerciseTransferInstructionChoice(
        transferCid!,
        'Withdraw'
    )
```

note: this does not work if the receiver have already perform `Accept` or `Reject`

* Allow validating if receiver have set up transfer pre-approval before performing a transaction

```javascript theme={"theme":{"light":"github-light","dark":"github-dark"}}
//check if bob have set up transfer pre approval before sending
const transferPreApprovalStatus =
        await sdk.tokenStandard?.getTransferPreApprovalByParty(
            receiver!.partyId,
            'Amulet'
        )
    logger.info(transferPreApprovalStatus, '[BOB] transfer preapproval status')
```

* Tested and verified against Splice 0.4.17
* Fix endless loop bug when onboarding a party
