Skip to main content
All notable changes to the Amplify SDK are documented here. This project adheres to Semantic Versioning.

Latest Release

2026-03-23

New Features

  • Base mainnet — Base (chainId 8453) is included in the SDK’s built-in chain map, so getVaultsByConfig(), deposit and withdrawal preparation, and on-chain reads resolve a proper viem Chain for Base without extra configuration. Pass chainId: 8453 anywhere you already pass Ethereum or HyperEVM IDs.
  • Cross-chain chain resolution — When the wallet’s chain differs from the vault’s chain (for example, multi-chain or bridged-asset flows), chain utilities can resolve the correct built-in chain config for the user’s chainId as well as the vault’s.
Upgrade from v0.5.0 is non-breaking for application code; install @paxoslabs/amplify-sdk@0.5.1 (or latest patch) to pick up Base support.
2026-03-18

Breaking Changes

This release contains breaking changes. All transaction and display helper functions now identify vaults by vaultName instead of yieldType. Review the migration steps below before upgrading.
Affected functions — the yieldType parameter has been replaced by vaultName in all of the following:

New Features

  • getVaults() — Renamed from fetchVaults(). Same cache-first behavior, new name for consistency.
  • getSupportedAssets() — Renamed from fetchSupportedAssets(). Same cache-first behavior, new name for consistency.
  • getVaultsByConfig() — Multi-filter vault discovery. Filter by yieldType, chainId, depositAssetAddress, withdrawAssetAddress, and settlementAssetAddress.
  • getWithdrawSupportedAssets() — Fetch all supported withdrawal assets grouped by token with their available vaults.
  • vaultName parameter on display helpersgetVaultAPY, getVaultTVL, and getWithdrawalRequests now accept vaultName as an alternative to vaultAddress.
  • Cache management — Fully documented: initializeCache(), getCache(), refreshVaultCache(), isCacheReady(), waitForCacheReady().

Migration Guide

Why this change?

In v0.4.2, yieldType served as the vault identifier. This worked when each yield type mapped to a single vault per chain, but broke down as multiple vaults with the same yield type launched on the same chain. The vaultName identifier is unique per vault and future-proof.The new pattern is: discover → then transact.
Add a call to getVaultsByConfig() wherever you previously passed yieldType directly to a transaction function. Cache the result for the session.
Replace yieldType with vaultName in every deposit function call.
The same change applies to:
  • prepareDepositAuthorization()
  • prepareDeposit()
  • prepareDepositPermitSignature()
  • prepareDepositWithPermitTxData()
  • prepareApproveDepositTokenTxData()
The same change applies to:
  • prepareWithdrawal()
  • prepareWithdrawOrderTxData()
  • prepareApproveWithdrawOrderTxData()
  • prepareCancelWithdrawOrderTxData()
Display helpers that previously used yieldType to locate a vault now use vaultName.
The same change applies to:
  • getWithdrawalFee()
  • getMinimumWithdrawalOrderSize()
Additionally, getVaultAPY(), getVaultTVL(), and getWithdrawalRequests() now accept vaultName as an alternative to vaultAddress:
If you wrapped SDK calls in React hooks, update the interface and params:
Use getVaultsByConfig() in a useQuery or useEffect to discover the vault name at component mount time, then pass it to your deposit/withdrawal hooks.
Use these patterns to locate all call sites in your codebase:

2026-02-13

Breaking Changes

  • Withdrawal flow migrated from AtomicQueue to WithdrawQueue.
  • Renamed withdrawal APIs:
    • prepareWithdrawTransactionData() -> prepareWithdrawOrderTxData()
    • prepareApproveWithdrawToken() -> prepareApproveWithdrawOrderTxData()
  • Added prepareCancelWithdrawOrderTxData() for order cancellation.
  • Withdrawal slippage parameters removed from the new flow.

Highlights

  • Added unified prepareWithdrawal() wrapper for withdrawal execution.
  • Added unified prepareWithdrawalAuthorization() wrapper.
  • Added smart-wallet detection for deposit/withdraw authorization routing.
  • Added forceMethod parameter for explicit authorization routing.

2025-01-30

Breaking Changes

This release contains breaking changes. Review the migration steps below before upgrading.

Features

  • Improved TypeScript inference for deposit functions
  • Added eth_signTypedData_v4 helper for better wallet compatibility

Bug Fixes

  • Fixed instanceof checks for APIError and WithdrawError in transpiled code

Refactoring

  • Standardized parameter naming across deposit APIs to match contract terminology
  • Removed deprecated display module and bridge functionality
  • Added explicit exports for tree-shaking optimization

Previous Releases

Bug Fixes

  • Fixed spender address and decimals for permit flow
  • Improved cache-based lookup for token address resolution
  • Aligned EIP712Domain with viem’s TypedDataDomain

Bug Fixes

  • Use non-interactive test command in release hooks
  • Resolved preact JSON VNode Injection vulnerability
  • Use DistributorCodeDepositor as approval spender
  • Aligned slippage defaults to DEFAULT_SLIPPAGE_BPS (50 bps)

Documentation

  • Completed Quick Start deposit example in README

Refactoring

  • Converted LogLevel enum to as const pattern for better tree-shaking

Features

  • Unified Deposit API: Added prepareDeposit and prepareDepositAuthorization wrapper functions
  • Observability: Added logging and telemetry infrastructure
  • ERC-20 Enhancements: Added getTokenPermitInfoWithAllowance with unified multicall

Bug Fixes

  • Updated Sei chain ID from 713715 to 1329
  • Fixed missing multicall mock in deposit-with-permit tests
  • Prevented duplicate buffer-full warning messages in telemetry

Refactoring

  • Converted DepositAuthMethod enum to as const pattern
  • Centralized API_BASE_URL constant
  • Use unified multicall for isDepositSpendApproved

Bug Fixes

  • Corrected DepositTxData args tuple
  • Fixed withdraw documentation
  • Resolved whatBump is not a function release error

Refactoring

  • Use DistributorCodeDepositor for all deposits and permit spender

Features

  • Export CommunityCodeDepositTxData type
  • Fixed cache check for vault data

Bug Fixes

  • Updated DistributorCodeDepositor support for partner code deposits
  • Improved type safety and chain cache initialization

Refactoring

  • Updated branding from Earn SDK to Amplify SDK

Features

  • Initial SDK Release
    • Comprehensive AmplifyVault support
    • Multi-chain support for yield vaults
    • Complete deposit functionality with approval management
    • Slippage protection for all operations
  • Withdraw Flow
    • prepareWithdrawTransactionData() for transaction preparation
    • Automatic vault data fetching via fetchSupportedAssets()
    • Three-field vault resolution (yieldType + wantToken + chainId)
    • Configurable slippage protection (default 0.5%)
  • Developer Experience
    • Full TypeScript support with type safety
    • Comprehensive error handling with specific error codes
    • Exchange rate calculations

Build System

  • Automated release workflow with conventional commits
  • Semantic versioning with alpha/beta/rc support
  • CI/CD pipeline with quality gates
  • Security auditing and dependency scanning
  • Automated NPM publishing with provenance

SDK Rename Migration

The SDK was renamed from Earn SDK to Amplify SDK in version 0.1.0. Follow the migration steps below if upgrading from @paxoslabs/earn-sdk.
1

Update package

npm uninstall @paxoslabs/earn-sdk npm install @paxoslabs/amplify-sdk
2

Update imports

3

Update function calls

4

Update type references

API endpoints continue to use /v1/earn-sdk/* for backwards compatibility. No backend changes required.