MEE Versions
The Modular Execution Environment (MEE) supports multiple versions of its contract suite. Each version introduces new capabilities around smart accounts, validator configuration, and composability.This guide helps SDK developers understand and select the appropriate version for their use case.
Which version to use
From AbstractJSv2.0.0, getMEEVersion() accepts only versions approved for new accounts, so selecting an earlier one is a compile-time error. Earlier versions remain reachable through getLegacyMEEVersion() so you can still derive, deploy and upgrade accounts you already have. See Accounts created on earlier versions.
Versions Table
The table below outlines all MEE versions and their core capabilities.Accounts created on earlier versions
An account that has been deployed on chain is unaffected by this change and needs no action. It keeps working exactly as before, on whichever version created it. Two cases need attention:You hold balances at account addresses that have not been deployed yet
You hold balances at account addresses that have not been deployed yet
Deploy those accounts. Any operation deploys an account, including one with empty calldata, and you do not need to move the funds. Deploying is permanent for that account.Deploy at the address you already have, using the version that derived it. This does not require upgrading the SDK or switching versions. If you keep precomputed addresses for your users, you can deploy them in bulk by calling the account factory for each address. That needs no user signature and does not change ownership.
You want existing accounts on the current contracts
You want existing accounts on the current contracts
Use the upgrade flow. Upgrading keeps the same account address and the same balances. It is optional, not a prerequisite for anything above.
Selecting
2.2.3 for an account that was created on an earlier version derives a different address, because the account address is computed from the factory of the version that created it. To keep an existing account, pass its accountAddress explicitly, as described in Account Migration.Version Breakdown
- v2.2.3 (Current)
- v2.3.0 (Experimental)
- v2.2.2
- v2.2.1
- v2.1.0
- v2.0.0
- v1.1.0
- v1.0.0
★
Use this for new accounts
Nexus 1.3.3, with the audited ERC-8211 Smart Batching implementation
- Account initialization is single-use per transaction
- Bundles the audited ERC-8211 Smart Batching reference implementation (Ethereum Foundation & Biconomy)
- Same composability feature set as v2.2.2
- Reviewed by Pashov Audit Group (July 2026)
Recommendation
Use2.2.3 for new accounts. It is the SDK and STX API default, and the only version built on Nexus 1.3.3.
Earlier versions remain available so that accounts already created on them stay derivable and upgradeable. They are not a starting point for new integrations.
How to Find Your Current Nexus Version
Not sure which Nexus version your smart account is using? Follow these simple steps to find out:1
Locate your smart account address
Locate your existing Nexus smart account address on the specific blockchain you’re working with.
2
Open the block explorer
Open the block explorer for that chain (e.g., Etherscan, Polygonscan) and paste the smart account address into the search bar.
3
Navigate to the Contracts tab
Navigate to the Contracts tab on the explorer page.
4
Verify the proxy contract if needed
If the contract is a proxy and the proxy contract isn’t verified yet, you’ll need to verify it first. (If “Read as proxy” option isn’t available, this usually means verification is needed.)
5
Call the getImplementation function
Once verified, go to the Read as proxy section and call the
getImplementation function. This will return the address of the actual implementation contract your smart account is using.6
Compare with official addresses
Compare this implementation contract address against the addresses listed on our Contracts and Audits page. This will help you identify exactly which MEE version you are using.