What’s new?
New updates and improvements to Portal.
Feature updates
Aug 19, 2024
August 19 Release
Android v4.1.2 Released with following changes:
- Add default value for RPC Config in Portal constructor
- Add canUsePasskeys() helper method to Portal class.
- Add wallet lifecycle methods (docs)
- Disable logs in production builds with R8/proguard enabled apps.
Android v3.2.9 Released with following changes:
- Disable logs in production builds with R8/proguard enabled apps.
See on twitter
Aug 1, 2024
August 1 Release
Android V3 3.2.8 Release:
GDrive upgrades and bug fixes (same upgrades are already available in v4 4.1.0)
Android 4.1.0 & iOS 3.2.0 Release:
See on twitter
Jul 26, 2024
July 26 Release Updates
iOS SDK Version 3.1.9 Release:
This update resolves issues with feature flags being propagated in PortalConnect instances.
Web SDK version 3.2.0 Release:
Adds support for Portal-managed backups.
iOS SDK Version 3.1.8 Release:
Resolves an issue with signing share lookup when upgrading from 3.0.x to 3.1.x
See on twitter
Jul 18, 2024
React Native Release 4.0.0
React Native Release 4.0.0
Team, we am very excited to announce our react native release!!
New Features:
- Solana Support! (details here)
- Eject for ed25519 (Solana) (details here)
- Raw Signature (details here)
- Chain Agnostic Provider: pass any chain the portal.request method to interact with that chain without worrying about switching the chain on the portal object.
Breaking changes
- generate returns addresses (eip155 and solana)
- portal connect instance manages its own chainId
- gateway config uses new network format of Namespace:reference ie. eip155:1 for mainnet
Note: RN version 4.0.0 currently only supports iOS. Android support will follow along soon!
See on twitter
Jul 8, 2024
Native Android V3 3.2.6 Released
Native Android V3 3.2.6 Released
PortalWebView is now a proper View and can be used and controlled independently without using a fragment. PortalWebViewFragment now uses this new PortalWebView fragment while providing the same old functionality so no changes are needed on consumers' side.
See on twitter
Jun 26, 2024
Native Android 4.0.2 SDK Released to Maven
Native Android 4.0.2 SDK Released to Maven
- Stablize multi-wallet support
- Add send Solana helper function
- SDK API requests now also send the exact SDK version
- SDK now fully supports minification and have all the consumer proguard rules inside it. Consumers of the SDK don't need to worry about Portal SDK proguard/R8 rules.
- Remove Context from the Keychain constructor
- Multiple SDK bug fixes
See on twitter
Jun 14, 2024
iOS 3.0.12 & 3.1.5 Update
Native iOS 3.0.12 & 3.1.5
- Resolves wallet_switchEthereumChain bug in the webview
- Allowing users to switch chains from the dapp
- We are still experiencing issues connecting to uniswap. Removes apiKey from the webview's injected provider
See on twitter
Jun 11, 2024
June 11 Update
Native iOS 3.0.11
- Resolves once listener bug
- Resolves disconnect event emit bug
Native iOS 3.1.5
- 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
See on twitter
Jun 10, 2024
June 10 Release
Native Android 4.0.1
- GDrive share recovery issue due to cached access token
- Fix broken auto-approve feature
Native Android 3.2.1 (without multi-wallet, no Maven)
- GDrive share recovery issue due to cached access token
- Change EvenBus higher order functions input lambdas return type to Unit instead of Void
See on twitter
May 28, 2024
Web SDK 3.0.1 Update
Web SDK version 3.0.1 is released
This update replaces our Google oAuth implementation with the GSI library to address Google Drive permissions issues.
See on twitter
May 17, 2024
May 17 SDK Release
This week’s SDK Release
Swift 3.1.4
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
Android 3.0.9
- Add missing consumer proguard rules
- Update SDK to use latest Android libraries
- Fix a passkey flow crash
See on twitter
May 15, 2024
Web SDK Solana Support
This week's release includes major changes to our Web SDK, and specifically it includes support for Solana!
We also completely rewrote the documentation for the Web SDK, so we recommend reviewing them from the beginning as you upgrade to 3.0.0!
Web 3.0.0
- Added portal.sendSol
- Renames portal.ejectPrivateKey to portal.eject, also fixes eject functionality new Portal(config), config excludes chainId, changes property gatewayConfig to rpcConfig
- Added portal.getEip155Address
- Added portal.getSolanaAddress
- Added portal.checkSharesOnDevice
- Added portal.doesWalletExist
- Added portal.isWalletOnDevice
- portal.ethEstimateGas now has chainId as the first argument, added deprecation warning
- portal.ethGasPrice now has chainId as the first argument, added deprecation warning
- portal.ethGetBalance now has chainId as the first argument, added deprecation warning
- portal.ethSendTransaction now has chainId as the first argument, added deprecation warning
- portal.ethSign now has chainId as the first argument, added deprecation warning
- portal.ethSignTransaction now has chainId as the first argument, added deprecation warning
- portal.ethSignTypedData now has chainId as the first argument, added deprecation warning
- portal.ethSignTypedDataV3 now has chainId as the first argument, added deprecation warning
- portal.ethSignTypedDataV4 now has chainId as the first argument, added deprecation warning
- portal.personalSign now has chainId as the first argument, added deprecation warning
- portal.getBalances now has chainId as the first argument
- Removed portal.getBackupShareMetadata (in favor of portal.getClient)
- Removed portal.getSigningShareMetadata (in favor of portal.getClient)
- portal.getNFTs now has chainId as the first argument
- portal.getTransactions now has chainId as the first argument
- portal.simulateTransaction now has chainId as the first argument
- portal.getQuote now has chainId as required
- portal.getSources now has chainId as required
- portal.getRpcUrl now has chainId as an optional argument
Updated Web SDK Guide: https://docs.portalhq.io/guides/web
See on twitter
Apr 26, 2024
Web version 2.0.0 Update
Web Version 2.0.0:
- Adds multi-wallet support (a prerequisite for Solana support!) portal.backup() is now returning a BackupResponse type, so this release includes a breaking change.
See on twitter
Apr 25, 2024
iOS 3.1.0-beta update
Native iOS 3.1.0-beta:
- Adds multi-wallet support.
- Adds chain agnosticism to Provider.
- Updates Storage adapters to conform to the PortalStorage protocol for more streamlined MPC operation logic.
- Adds support for async/await.
- Updates WebView to manage its own chain.
- Updates PortalConnect to manage its own chain.
- Fixes portal.ethEstimateGas
See on twitter
Apr 21, 2024
Passkeys and Enclave Storage for React Native SDK
React Native 3.0.6:
- Passkeys + Enclave Storage: Check out the docs to learn more.
- Public NPM Package: Developers no longer need NPM Auth token to use the SDK
See on twitter
Apr 12, 2024
Fix WebView Chain Switching Handler
iOS 3.0.7:
- Fixes WebView's wallet_switchEthereumChain handler for Base (and any chainId greater than 255).
See on twitter
Apr 10, 2024
Added Xcode 15.3 development support for iOS SDK
iOS 3.0.6:
- Adds support for development in Xcode 15.3
See on twitter
Mar 22, 2024
Adds optional field to Google Storage Class
Android 3.0.7:
- Adds optional field to Google Storage class: signoutAfterUse. This will sign the user out of their google account that was used to run backup or recover. It requires the user to select the google account each time they run google backup or recover.
See on twitter
Mar 15, 2024
Passkeys Backup Added to Android SDK
Android 3.0.6:
- Adds support for Passkeys backup. You can read more about setting up Passkey backups in the Android Backup Methods guide in our docs
- Updates to README
See on twitter
Mar 8, 2024
Deprecate legacy Portal Recover and WalletConnect v1
iOS 3.0.5:
- Removes portal.legacyRecover (deprecated)
- Removes WalletConnect v1 Implementation (deprecated)
Android 3.0.5:
- Removes portal.legacyRecover (deprecated)
- Removes WalletConnect v1 Implementation (deprecated)
React Native 3.0.4:
- Removes portal.legacyRecover (deprecated)
Web 1.0.4:
- Updated binary
See on twitter
Feb 16, 2024
Web SDK Level Up: Multi-Backup Support and 3X Faster Operations!
iOS 3.0.1, Android 3.0.2, React Native 3.0.1, Web 1.0.1:
- Added .getBackupShareMetadata() to get backup shares' details for a user.
- Added .getSigningShareMetadata() to get signing shares' details for a user.
Web 1.0.1:
- 3X Performance optimizations for all MPC operations!!!
- Adds support for multi-backup. Read more about it here
- Configurable relying party for Passkeys
- Resolves session management for local development
Web 3.0.1:
- Configurable relying party for Passkeys.
- Set your own domain as the relying party for your passkeys! See the docs
See on twitter
Feb 12, 2024
Multi-Backup Support Added for React Native
React Native version 3.0.0:
- Adds support for multi-backup. Read more about it here
- Updated staging domains for example app.
See on twitter
Feb 9, 2024
Multi-Backup Support Added for iOS and Android SDKs
Swift version 3.0.0:
- Adds support for multi-backup. Read more about it here
- Updated staging domains for example app.
Kotlin version 3.0.0:
- Adds support for multi-backup. Read more about it here
- Updated staging domains for example app.
- Fix for Google Drive permission cancellation during backup
See on twitter
Feb 2, 2024
Client Attestation and Changing Chains on dApps in WebView Support
iOS 2.1.2, Android 2.1.2, React Native 2.1.2, and Web 0.1.2:
- Support for client attestation when using the optimized: true feature flag
All Mobile SDKs:
- 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
See on twitter
Jan 31, 2024
Jan 2024: Exciting New Features (Passkeys Storage, Eject Feature), WebView Feature Expansion and Sepolia Testnet Support Added!
Release Highlights
Passkeys Backup & Recovery Release Added to iOS and Web SDK
- iOS 2.0.16: Passkey + Enclave Storage (Alpha). Check out the docs to learn more.
- Web 0.1.1: Passkey + Enclave Storage (Alpha). Check out the docs to learn more.
You can also visit web-demo.portalhq.io to see Passkey Backup and Recovery action.
Eject Feature Launched Across SDKs
Eject enables users to choose to migrate from MPC (with two key shares) to their own non-custodial wallet with a single private key. You can learn more about the Eject Feature on our docs.
React Native 2.1.0, iOS 2.1.0, Android 2.1.0, Web 0.1.0:
- Eject feature available via the portal.mpc.ejectPrivateKey function.
Expanded Portal WebView Auto-connect Feature
iOS 2.1.0: Fixes bug with request approvals and rejections the PortalWebView.
React Native version 2.0.14: Fixes auto-connect to Aave in the PortalWebView.
iOS 2.0.18:
- 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.
React Native 2.0.12:
- Improved auto-connect functionality for Aave in the WebView
- Sunsetting the @portal-hq/components package in favor of @portal-hq/webview: This does not remove our published @portal-hq/components package, but this package will not be maintained in the future, so please update your local package to use @portal-hq/webview if you’re currently using the React Native WebView
Sepolia Testnet Support
React Native 2.0.12:
- Added support for Sepolia testnet, enhancing multi-chain and testing capabilities.
See on twitter
Dec 31, 2023
Dec Updates: WebView & Web3Provider Upgrades!
Release Version Highlights
Android 2.0.13. Web 0.07:
- Added convenience methods for ethGetBalance, ethEstimateGas, and ethGasPrice.
- Updated example apps to use the Sepolia chain instead of Goerli by default.
iOS 2.0.14, Android 2.0.12:
- Support for page loading callbacks in WebView.
React Native 2.0.12:
- Improved WebView dApp support for auto-connect.
See on twitter
Nov 20, 2023
Nov Updates: SPM & Custom Nonce support, and more!
Release Version Highlights
iOS 2.0.11:
- Adds support for SPM directly in the PortalSwift repo
- Makes the PortalSwift repo public to work better with CI tools. Please note that while the PortalSwift repository has tags for older versions of the SDK, only 2.0.11 and greater will actually support SPM, so please keep this in mind when upgrading your project.
Android 2.0.11, iOS 2.0.13, React Native 2.0.11:
- Adds support for setting a custom nonce to iOS and Android.
- Makes the PortalWebView.webView and PortalWebView.webViewContentIsLoaded properties public in iOS and Android.
- Updates dependencies in React Native.
See on twitter
Nov 3, 2023
Cross-device wallet syncing now available!
Release Version Highlights
Native Android 2.0.9, Native iOS 2.0.10, React Native 2.0.10, Web 0.0.5:
- 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.
See on twitter
Oct 30, 2023
Swaps support added for Web!
Common SDK Updates:
- 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.
Web 0.0.4
- New helper methods for getBalances, getTransactions, and getNFTs. Read more here.
- Introduced Swaps support.
See on twitter
Oct 27, 2023
New Modular Backup Methods on React Native and Android: Password and PIN!
Release Version Highlights
Common SDK Updates:
- 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.
Native iOS 2.0.9: No specific updates.
Native Android 2.0.8
- Introduced PortalWebView. Read more here.
- Alpha release of Password/PIN Backups.
React Native 2.0.9
- Alpha release of Password/PIN Backups.
See on twitter
Oct 20, 2023
New Modular Backup Method on iOS & Web: Password and PIN!
Release Version Highlights
All SDK versions: Resolves issues with WalletConnect when dApps exclude requiredNamespaces fields in their session proposal.
iOS 2.0.8
- The alpha release of our Password/PIN Backups is now included.
- Improved memory management for WalletConnect WebSocket connections.
Android 2.0.7: Improved memory management for WalletConnect WebSocket connections.
React Native 2.0.8: Improvements to setup components.
Web 0.0.1:
- Sets max-age on Web SDK cookies.
- Improved logging.
- The alpha release of our Password/PIN Backups is now included.
See on twitter
Oct 14, 2023
Web SDK is now 10x faster!
Release Version Highlights
Web 0.0.1-rc2m: We are so excited to announce significant performance improvements on the Web SDK!
- Sign times should now be roughly 10x faster and Generate and Backup are now 50% faster
- Introduced portal.getTransactions and portal.getClient methods
- Client Management: Added backupStatus and signingStatus to portal.getClient
- Types Update: Revised types for the /clients/me endpoint
iOS2.0.7: No unique updates.
Android2.0.6: No unique updates.
React Native2.0.7: No unique updates.
See on twitter
Oct 7, 2023
October Weekly Highlights
Release Version Highlights
All SDK versions: Added backupStatus and signingStatus in portal.api.getClient & portal.client returned values. Updated types for /clients/me endpoint.
iOS 2.0.6: No unique updates.
Android 2.0.5: No unique updates.
React Native 2.0.6:
- Made portal.updateChain async.
- Typo fix in portal_signature.
- Received event.Coding style unified via linters.
Web 0.0.1: No unique updates.
See on twitter
Sep 30, 2023
10x speed boost for Generate, Backup, and Recover!
Release Version Highlights
All SDK versions: Introduce an optional featureFlag into the Portal instance. Set optimized: true for a 10x speed boost for generate, backup, and recover!
iOS 2.0.5: Correction: Changed eth_sendTransaction to eth_signTypedData.
Android 2.0.3: New: Added UserRecoverableGDriveException in the Gdrive storage class. This exception streamlines the process of catching user permission or authentication issues.
React Native 2.0.3: No unique changes for this release.
Web 0.0.1-rc2l: Security Update: Transitioned from static Paillier key usage to dynamic Paillier key retrieval.
See on twitter
Sep 16, 2023
Added support for new RPC methods!
Release Version Highlights
All SDK versions: Resolves issues with WalletConnect when dApps exclude requiredNamespaces fields in their session proposal and fixed issue passing chainId from Portal Connect Server.
iOS 2.0.3: Added support for the following RPC methods:
- eth_getBlockByNumber
- eth_getBlockTransactionCountByHash
- eth_getBlockTransactionCountByNumber
- eth_getLogseth_getTransactionByBlockHashAndIndex
- eth_getTransactionByBlockNumberAndIndex
- eth_getBlockByHash
- eth_getTransatctionByHash
- eth_getUncleByBlockHashAndIndex
- eth_newBlockFilter
- eth_newFilter
- eth_uninstallFilter
- net_listening
- web3_clientVersion
- web3_sha3
iOS 1.1.10: No unique updates.
Android 1.1.5: No unique updates.
Android 2.0.2: No unique updates.
React Native 2.0.2: Updated Portal UI components.
See on twitter
Sep 2, 2023
September Weekly Highlights
Release Version Highlights
iOS 2.0.0, Android 2.0.0, React Native 2.0.0:
- 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.
See on twitter
Aug 30, 2023
Query on-chain wallet data with a simple API call!
Release Version Highlights
iOS 0.2.4, Android 0.9.2, React Native 0.3.7: The following three additions to portal.api will enable you to query the blockchain for user wallet data with these simple API calls:
- getNFT: You can retrieve a list of NFTs owned by the wallet.
- getBalance: Retrieves the balance of all ERC20 tokens the wallet owns.
- getTransactions: Returns a list of transactions of the wallet.
You can find these API methods in documentation for React Native, iOS and Android.
React Native 0.3.7: Progress callbacks for MPC operations added to enable developers to check in on the status of each MPC operation.
See on twitter
Aug 26, 2023
Introducing Transaction Simulation!
We are excited to introduce Transaction Simulation on Portal so you can protect your users from accidental or malicious transactions on the blockchain! Support for api.simulateTransaction() function is now available starting iOS 1.1.8, Android 1.1.4 and React Native 1.1.3.
Other August highlights include:
React Native 1.1.3: Adds support for backupMethod when calling storedClientBackupShare().
iOS 1.1.6, Android 1.1.3, React Native 1.1.2:
- Tracking backup storage method used by a client.
- Refreshed MPC binary.
React Native 1.1.1: Adds setChainId function to the PortalConnect class.This enables switching the active chain on a dApp from the wallet.
See on twitter
Jul 22, 2023
July Highlights
Release Version Highlights
iOS 1.1.0, Android 1.1.0, React Native 1.1.0:
- PortalConnect now manages its own Provider instance to prepare for wallet_switchEthereumChain support.
- PortalConnect is no longer initialized via PortalConnect(portal) class. Instead use Portal.createPortalConnectInstance(). This is a breaking change required to support the Provider update listed above.
- PortalConnect now manages session state internally. All calls to PortalConnect.connect(uri) that already have an active session will be ignored to prevent errors with existing WebSocket connections.
- Enabled disconnect from PortalConnect.
- Helper methods have been added to the Portal class for the following:
- MPC: createWallet, backupWallet, recoverWallet
- Provider: emit, ethSendTransaction, ethSign, ethSignTransaction, ethSignTypedData, on, personalSign, request
- Keychain: deleteAddress, deleteSigningShare
- PortalConnect: createPortalConnectInstance
React Native 1.0.5: Keys values stored in KeyChain with clientId to support multiple clients on one device.
See on twitter
Jun 12, 2023
Wallet Safeguarding Support Published!
Release Version Highlights
iOS 1.0.0, Android 1.0.0, React Native 1.0.0:
Updates: Support for Wallet Safeguarding
- Manages the state of the wallet during state-changing MPC Operations to track the wallet lifecycle
- Requires use of portal.api.storedClientBackupShare after backup or recover
- Adds client side check if already running a state-changing MPC Operations and prevents concurrent calls
- Adds additional verification to ensure cloud storage is available before running backup
Breaking Changes
- After running portal.mpc.backup or portal.mpc.recover and successfully saving the returned backup cipher text to your backend, you must call portal.api.storedClientBackupShare in order to correctly update the state of the wallet.
You can find more details in our iOS, Android or React Native backup and recover docs, but a summarized version of the new flow and the required change below:
Backup
1. Generate an encrypted client backup share using portal.mpc.backup.
2. Send the resulting backup share to your API and store it.
3. (NEW REQUIREMENT) Call portal.api.storedClientBackupShare to notify Portal that the encrypted client backup share was saved successfully.
Recover
1. Retrieve the encrypted client backup share from your API.
2. Get a new encrypted client backup share from running portal.mpc.recover.
3. Send the new backup share to your API and store it.
4. (NEW REQUIREMENT) Call portal.api.storedClientBackupShare to notify Portal that the client backup share was saved successfully.
For more details on the lifecycle of a Portal Wallet Lifecycle docs.
See on twitter
May 30, 2023
Introducing Swaps powered by 0x!
We're excited to announce our native swaps integration with 0x protocol. With this integration you can enable swaps through the Portal SDK and access these features:
- Enable swaps for your users across thousands of tokens on all ETH and EVM-compatible blockchains;
- Tap into aggregated liquidity across DEXs with one simple integration;
- Set and take fees onchain by charging a spread on each transaction, instantly generating revenue;
- Build your own user interface on top of Swaps into your app;
- Curate the types of tokens you choose to make available to your users
Available across React Native, iOS and Android SDKs.
See on twitter
May 6, 2023
Wallet Connect support for iOS and Android SDKs!
Wallet Connect v1 and v2 support is added for iOS 0.2.0 and Android 0.9.0! You can find documentation on Wallet Connect support here for iOS, Android and React Native.
Portal's Wallet Connect support benefits developers in a few key ways:
Automatic patches and upgrades
Portal's implementation pushes all third-party integrations such as WalletConnect to the server. This design ensures Portal can patch breaking changes and upgrades from the third party provider before they become issues for developers.
No dependencies
Because WalletConnect is integrated directly into the Portal SDK, a developer only needs to implement the functionality as per Portal documentation. In addition, if an organization determines they want to use WalletConnect later in their development cycle, the integration is just as simple and doesn’t require any reworking of the code.
See on twitter