iOS

You can find the latest updates for the Portal iOS SDK below.

https://github.com/portal-hq/PortalSwift/blob/main/CHANGELOG.md
# Changelog

All notable changes to this project will be documented in this file.
Possible Types of changes include:

- Added
- Changed
- Deprecated
- Removed
- Fixed
- Security
- Improved
- Upgraded

## 6.1.0 - 2025-06-05
- Added default web auth host to the function `setPasskeyConfiguration`.
- Added `PortalRequests.execute()` that receives a request object and decoding type, returning a concrete type.
- Deprecated `PortalSwaps.getQuote` with completion handler in favor of the async/await version `PortalSwaps.getQuote`.
- Deprecated `PortalSwaps.getSources` with completion handler in favor of the async/await version `PortalSwaps.getSources`.
- Fixed an issue in `Portal.isWalletOnDevice()` so it no longer throws an exception when there is no share stored in the keychain.

## 6.0.0 - 2025-04-25

- Fixed the build issue using Xcode 16.3
- Upgraded `googlesignin-ios` from version `7.1.0` to `8.0.0`
- Fixed `eject` solana wallet for portal managed backups.
- Deprecated `Portal.request(_:_:completion)` to use the `async/await` `Portal.request()` instead.
- Added `Portal.updateChainId()` that updates the currently active chain ID used by the provider.
- Deprecated ETH helper functions `ethEstimateGas`, `ethGasPrice`, `ethGetBalance`, `ethSendTransaction`, `ethSign`, `ethSignTransaction`, `ethSignTypedDataV3`, `ethSignTypedData`, and `personalSign` to use `Portal.request(_:withMethod:andParams:)` instead.

## 5.0.1 - 2025-03-19

- Added Raw Sign function `Portal.rawSign()`
- Deprecated `Portal.sendSol()` to use `Portal.sendAsset()` instead.
- Changed the `AssetsResponse` properties to be public.
- Improved the custom signature hook threading performance.
- Fixed Swift 6 threading warning.

## 5.0.0 - 2025-02-25

- Added MPC Enclave Sign Support.
- Added ReceiveTestnetAsset and sentAsset helper functions to `Portal` class.
- Added `PortalProtocol` to enable clients to mock our SDK for unit-testing.
- Changed `PortalWebView.WebViewControllerErrors` to `PortalWebView.PortalWebViewErrors` for a better naming convention.

## 4.2.1 - 2025-01-16

- Improved error codes throughout the sdk
- Deprecated `Portal.request()` with optional parameters and string method in favor of implementation with default parameters
- Added public properties to `BuildSolanaTransactionResponse` & `BuildEip115TransactionResponse` type
- Added Xcode documentation for Portal's public API functions

## 4.2.0 - 2024-12-05

- Add support for AppData folder backups with GDrive

## 4.1.0 - 2024-11-20

- Change `createWallet` to return non-optional eth and Solana addresses & recover wallet non-optional ETH address
- EIP-6963 Support in the Dapp Browser
- Add `wallet_getCapabilities` method to the provider
- Throw errors for `isWalletOnDevice` instead of returning false for errors

## 4.0.3 - 2024-11-1

- Add `portal.getRpcUrl(forChainId)`

## 4.0.2 - 2024-10-31

- Add `buildTransaction` methods for ETH & SOL
- Add `getNFTAssets` method to get NFT assets by `chainId`
- Add `getAssets` method to get assets by `chainId`
- Enhance the `errors` to have a proper `localizedDescription`
- Fix for the `GETTransactions` API response.

## 4.0.1 - 2024-10-16

- Fixes cross-SDK recovery

## 4.0.0 - 2024-09-16

- Breaking change to `PortalKeychain.metadata` to be instance member & thread-safe.
- Fixes the `Portal.isWalletBackedUp()` bug.
- Breaking change to handle the unauthorized session to throw `PortalRequestsError.unauthorized` instead of a generic error

## 3.2.3 - 2024-08-30

- PortalConnect Update
  - Adds `emitGetSessionRequest()` to Connect class.
  - Allows customers to retrieve previous session requests from dApps.
  - This is primarily meant to be used in conjunction with mobile deeplinking to properly respond to a session request.
  - Read more on [Swift](https://docs.portalhq.io/guides/native-ios/connect-with-walletconnect#retrieve-session-request) and [Kotlin](https://docs.portalhq.io/guides/native-android/connect-with-walletconnect#retrieve-session-request).
- Adds thread safe access to client
- Adds evaluate transaction function using evaluate endpoint
- Refer to the Portal API Documentation for more details
- Adds sol_getTransaction RPC request

## 3.2.2 - 2024-08-15

- Fix eject error handling
- Default rpc urls
- Webview made public

## 3.2.1 - 2024-08-05

- Hot-Fix: recovering bug after solana generate with no backup.

## 3.2.0 - 2024-07-31

- Solana migration support for pre-multi wallet sdk versions. (Android v3 and iOS v3.0.x) [docs](https://docs.portalhq.io/resources/multi-wallet-migration-guides)
- Solana Eject ([iOS docs](https://docs.portalhq.io/guides/ios/eject-a-wallet), [android docs](https://docs.portalhq.io/guides/android/eject-a-wallet))

## 3.1.12 - 2024-07-30

- Includes `chainId` on the payload provided to all `Provider.request()` approval hooks

## 3.1.11 - 2024-07-29

- Resolves issues with `featureFlag` propagation during backup and recovery

## 3.1.10 - 2024-07-26

- Resolves issues with `continuation.resume()` falling throught.

## 3.1.9 - 2024-07-26

- Resolves issues with feature flags being propagated in `PortalConnect` instances.

## 3.1.8 - 2024-07-22

- Resolves an issue with signing share lookup when upgrading from 3.0.x to 3.1.x

## 3.1.7 & 3.0.13 - 2024-07-11

- PortalConnect Update
  - Adds `emitGetSessionRequest()` to Connect class.
  - Allows customers to retrieve previous session requests from dApps.
  - This is primarily meant to be used in conjunction with mobile deeplinking to properly respond to a session request.
  - Read more on [Swift](https://docs.portalhq.io/guides/native-ios/connect-with-walletconnect#retrieve-session-request) and [Kotlin](https://docs.portalhq.io/guides/native-android/connect-with-walletconnect#retrieve-session-request).
- Tracking SDK version on requests to Portal

## 3.1.6 - 2024-06-18

- updated swiftformat rules
- Fixed crash while setting `self.events[event] = event`
- Added test case for PortalConnect.swift
- Created new class for EventBus unit test
- Removed apiKey constraint
- Added support for updating RPC URL on chain changed

## 3.1.5 & 3.0.12 - 2024-06-12 & 2024-06-18

- Resolves once listener bug
- Resolves disconnect event emit bug
- Adds check to params for requests
- apiKey is now a private variable
- Adds count check to params for requests

## 3.0.11 - 2024-06-12

- Resolves once listener bug
- Resolves disconnect event emit bug

## 3.1.4 - 2024-05-18

- Solana Support
  - Adds a helper sendSol function
  - Adds a createSolanaRequest function
  - Adds all of the Solana RPC methods to our Provider
  - Adds the following Solana signing methods
    - sol_signAndConfirmTransaction
    - sol_signAndSendTransaction
    - sol_signMessage
    - sol_signTransaction
  - Increase the min deployment version to iOS 15
  - Adds the solanaSwift library as a dependency

## 3.0.6 - 2024-04-11

- Adds support for development in Xcode 15.3

## 3.0.5 - 2024-03-08

- Removes portal.legacyRecover (deprecated).
- Removes WalletConnect v1 implementation (deprecated).

## 3.0.4 - 2024-03-07

- Fixes a bug that prompted users for permission to access the local network.

## 3.0.1 - 2024-02-17

- Added .getBackupShareMetadata() to get backup shares' details for a user.
- Added .getSigningShareMetadata() to get signing shares' details for a user.
- Configurable relying party for Passkeys
  - Set your own domain as the relying party for your passkeys!

## 3.0.0 - 2024-02-10

- Adds support for multi-backup.
- Updated staging domains for example app.

## 2.1.2 - 2024-02-02

- Support for client attestation when using the optimized: true feature flag
- Support for changing chains on a dApp in the WebView from the app Provider
  - This allows for the setChainId or updateChain functions in your app to also control the chain of a PortalWebView
- Addition of eject support to eject an MPC wallet's private key

## 2.1.1 - 2024-01-27

- Adds support for switching chains in the PortalWebView.
- Fixes a bug with transaction rejection.

## 2.1.0 - 2024-01-20

- Eject feature available via the portal.mpc.ejectPrivateKey function.
- Fixes bug with request approvals and rejections the PortalWebView .

## 2.0.18 - 2024-01-13

- Fixes auto-connect to Aave in the PortalWebView.
- Adds other PortalWebView improvements:
  - Adds support for opening new tabs in the same view.
  - Fixes a force unwrap bug.
  - Improves script inject point for more reliable auto-connect.
  - Removes session persistence between sessions by default, but can be configured to be enabled.

## 2.0.16 - 2024-01-04

- Passkey + Enclave Storage (Alpha)

## 2.0.15 - 2023-12-09

- Added convenience methods for ethGetBalance, ethEstimateGas, and ethGasPrice.
- Updated example apps to use the Sepolia chain instead of Goerli by default.

## 2.0.14 - 2023-12-01

- Support for page loading callbacks in WebView.

## 2.0.13 - 2023-11-18

- Adds support for setting a custom nonce to iOS.
- Makes the PortalWebView.webView and PortalWebView.webViewContentIsLoaded properties public in iOS.

## 2.0.12 - 2023-11-10

- Added auto-connect functionality for the following dApps in the mobile WebViews:
  - Aave (https://app.aave.com/)
  - Arbitrum Bridge (https://bridge.arbitrum.io/)
  - Compound Finance (https://app.compound.finance/?market=usdc-mainnet)
  - Convex Finance (https://www.convexfinance.com/stake)
  - MakerDAO (https://app.spark.fi/)
  - Optimism Gateway (https://app.optimism.io/bridge/deposit)
  - Rarible (https://rarible.com/)
  - RocketPool (https://stake.rocketpool.net/)
  - Uniswap (https://app.uniswap.org/#/swap)
  - summer.fi (https://summer.fi/)

## 2.0.11 - 2023-11-07

- Adds support for SPM directly in the PortalSwift repo
- Makes the PortalSwift repo public to work better with CI tools

## 2.0.10 - 2024-11-04

- Users can now create multiple signing shares across all of the Portal SDKs. For example, a user can create a wallet on an iOS device and continue using that wallet on your web app!
- Use portal.provisionWallet (or portal.recoverWallet) to enable your users to create multiple signing shares across all of the Portal SDKs. Read more here.
- Improved auto-connection for Native iOS WebView.

## 2.0.9 - 2023-10-27

- Enhanced portal.getTransactions to support optional arguments: limit, offset, order, and chainId.
  - Transactions from portal.getTransactions now include metadata.blockTimestamp and chainId. Read more here.
- Added support for allowanceTarget in Swap quotes.

## 2.0.8 - 2023-10-21

- Resolves issues with WalletConnect when dApps exclude requiredNamespaces fields in their session proposal.
- The alpha release of our Password/PIN Backups is now included.
- Improved memory management for WalletConnect WebSocket connections.

## 2.0.5 - 2023-09-30

- Optimization: Introduce an optional featureFlag into the Portal instance. Set optimized: true for a 10x speed boost for generate, backup, and recover!
- Correction: Changed eth_sendTransaction to eth_signTypedData.

## 2.0.4 - 2023-09-22

- Enhanced MPC & API call tracking.
- Refreshed binary.
- Created SPM package.

## 2.0.3 - 2023-09-15

- Added support for the following RPC methods:
  - eth_getBlockByNumber
  - eth_getBlockTransactionCountByHash
  - eth_getBlockTransactionCountByNumber
  - eth_getLogs
  - eth_getTransactionByBlockHashAndIndex
  - eth_getTransactionByBlockNumberAndIndex
  - eth_getBlockByHash
  - eth_getTransatctionByHash
  - eth_getUncleByBlockHashAndIndex
  - eth_newBlockFilter
  - eth_newFilter
  - eth_uninstallFilter
  - net_listening
  - web3_clientVersion
  - web3_sha3
- Fixed issue passing chainId from Portal Connect Server

## 1.1.10 - 2023-09-15

- Fixed issue passing chainId from Portal Connect Server.

## 2.0.2 - 2023-09-09

- Portal Connect
  - Adds a addChainsToProposal method. This will allow you to add all the chains in your gateway config to the proposal that you get from a dapp when you approve the connection. Docs for iOS and Android
  - Adds error codes. Docs

## 2.0.0 - 2023-09-02

- Recovery Update:
  - Breaking Change: The recover function now solely updates signing shares, returning the wallet address similar to generate.
  - Earlier versions updated both signing and backup shares, with potentially confusing error handling.
  - For those wanting the older method, use the new legacyRecover function.
- PortalConnect Enhancements:
  - Boosted reliability with a new ping interval and advanced reconnection logic.

## 1.1.8 - 2023-08-25

- Adds support for transaction simulation

## 1.1.7 - 2023-08-18

### Fixed

- Portal Connect typing issue for some dapps sending no optional namespaces.
- More errors delivered through the `portal_connectError` event.

### Changed

- Updated MPC binary.

## 1.1.6 - 2023-08-11

### Added

- Request using `portal.api.storedClientBackupShareKey` on `backup` and `recover` following successfully saving the client backup share encryption key to the user's backup method.
- Added unit tests for wallet safeguarding.
- Added e2e tests for the provider.

### Changed

- Updated MPC binary.

## 1.1.2 - 2023-06-11

### Fixed

- Multiple event listeners firing for a single `signingRequest`
  - Only firing event handlers for that specific request and removing handlers for events that have already been fired

## 1.0.1 - 2023-06-11

### Added

- Adds support for `connect.on('portal_dappSessionRequested', eventHandler)` event handlers to manage approval flows for Portal Connect sessions
- Adds support for `connect.on('portal_dappSessionRequestedV1', eventHandler)` event handlers to manage approval flows for Portal Connect sessions
- Adds support for `connect.emit('portal_dappSessionApproved', data)` event emitting to approve Portal Connect sessions
- Adds support for `connect.emit('portal_dappSessionRejected', data)` event emitting to reject Portal Connect sessions

### Fixed

- Improves support for delivery of signatures to dApps through Portal Connect
- Improves support for delivery of signing rejections to dApps through Portal Connect
- Improved stability support for WebSocket connections in Portal Connect, including automatic reconnection on timeouts and WebSocket failures

## 1.0.0 - 2023-06-09

### Added

- `portal.keychain.validateOperations`: Checks if you can write, read, and delete from keychain.
- validation checks for Keychain before running generate and recover.
- validation checks for the selected backup method before running backup and recover.
- `portal.api.storedClientBackupShare`.
- `portal.api.storedClientSigningShare`.
- wallet modification in-progress checks before running generate, backup, and recover.

### Changed

- Bump from v3 to v4 for default MPC version in classes.
- `portal.mpc.generate` & `portal.mpc.recover` use `portal.api.storedClientSigningShare` when keychain completes storage

### Removed

- `getAvailability` from icloud storage

## 0.2.4 - 2023-06-02

### Added

- Improved error messaging

### Security

- Internal mpc binary improvement

## 0.2.3 - 2023-05-26

### Added

- Extension to `portal.api`: `getNFT`, `getTransactions`, `getBalances`
- 0x Swap integration

### Fixed

- Missing error check

## 0.1.9 - 2023-04-21

### Added

- Progress callbacks for MPC operations
- Completion handler for keychain operations
- Webview signing on background thread
- Support for `signTypedData_v3` and `signTypedData_v4`

### Changed

- v3 of MPC server

### Fixed

- signing share being nil on backup MPC operation
- Blocking the webview UI when signing

Last updated

Was this helpful?