Only Alchemy (EIP-4337) is wired through the native bridge today. ZeroDev, Pimlico, and the other providers already available on web and React Native are on the roadmap for Flutter.
Setup
- Create an Alchemy account, grab your API key, and create a Gas Manager policy for the chain you’re targeting. The policy ID is what tells the paymaster to sponsor gas.
-
Drop the values into your
.envfile.flutter_dotenvis already wired into the Flutter example:
.env
@getpara/aa-alchemy through the bridge on the web side.
Usage
Create the smart account, then send a gasless transaction with it:ParaConfig.requestTimeout defaults to 120s for this reason. Override it when you build your ParaConfig if you’d rather bail earlier.
Batched transactions
One UserOp, multiple calls, one receipt. Use it for approve + swap, approve + transfer, or anything that should succeed or fail together:Error handling
Provider failures come back with aSmartAccountErrorCode from @getpara/core-sdk. The ones you’re most likely to see:
PROVIDER_RATE_LIMITED: back off and retry.SPONSORSHIP_DENIED: the gas policy rejected this UserOp. Check the Alchemy dashboard.TRANSACTION_REVERTED: the target contract reverted at execution time.MISSING_ACCOUNT_ADDRESS: you calledsendSmartAccountTransactionbeforecreateSmartAccountfor this chain + address.
ParaBridgeException and keep the provider’s original message.
What gets returned
createSmartAccount returns a SmartAccountInfo:
sendSmartAccountTransaction and sendSmartAccountBatchTransaction return an AATransactionReceipt:
uint256 precision across the bridge.
Reference
Full working implementation:examples-hub/mobile/with-flutter/lib/features/smart_account/smart_account_screen.dart.