NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #5123 most downloaded on pub.dev
Pure-Dart wallet primitives for the Crossmint Flutter SDK — wallet models, signer abstractions, and API contracts.
Last release today
07 Oct 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 8 of 8 stable releases
Nothing withdrawn
no release was ever pulled
5 months old
8 releases · first in 2026
One column per month.
The single recovery argument is deprecated. Pass one of them, not both. When the request is read, both throw CrossmintWalletException with walletInval…
CrossmintWalletCreateRequest and CrossmintCreateOnLoginConfig take
recoveryMethods on their default constructor. The single recovery
argument is deprecated. Pass one of them, not both. When the request is
read, both throw CrossmintWalletException with
walletInvalidRecoveryConfig, and neither throws it with
walletMissingRecoveryMethod..withRecoveryMethods constructors. Use the default
constructor with recoveryMethods.crossmint_core ^0.1.8.…recovery method that authorizes the operation. Breaking change for anyone implementing `CrossmintWalletsClient` directly — add the parameter to your i…
CrossmintWalletsClient.addSigner and .removeSigner gained an optional
approver parameter, naming the recovery method that authorizes the
operation. Breaking change for anyone implementing CrossmintWalletsClient
directly — add the parameter to your implementation. Threaded through
DefaultCrossmintWalletsClient, WalletsApiService.unregisterSigner, and
the signer registration/removal serialization.CrossmintWalletCreateRequest gained a second constructor,
.withRecoveryMethods, taking the full recoveryMethods list. The two
constructors are mutually exclusive: the default one takes a single
recovery, the new one takes the list. recoveryMethods and recovery
(the first entry) are readable off either. Mirrors the paired
createWallet overloads in the Swift and Kotlin SDKs.config.adminSigner and works on every chain;
.withRecoveryMethods sends config.recoveryMethods on Solana and
Stellar. On another chain a one-entry list goes out as config.adminSigner,
and a longer list throws CrossmintWalletException(walletInvalidChain)
client-side instead of reaching the backend's HTTP 501. This matches
RecoveryInput in the Swift SDK and RecoveryConfig in Kotlin.CrossmintWalletCreateRequest.withResolvedSigners rebuilds a request with
resolved signers through the same constructor, so the wire form survives
the controller's email and device-signer resolution. usesRecoveryMethodList
reports which form a request holds.CrossmintWallets.createWalletWithRecoveryMethods is the facade entry point
for the list form; createWallet keeps its single-recovery signature.CrossmintErrorCode.walletMissingRecoveryMethod, thrown as a
CrossmintWalletException when a request carries no recovery method at all.
It is an Exception rather than the StateError an empty list would
otherwise raise, so caller on Exception handlers catch it instead of
leaving the operation stranded in progress.approver is trimmed before it is sent. The registration body
and the unregisterSigner query string used to carry the raw string, and a
whitespace-only approver is now dropped instead of sent as " ".crossmint_core ^0.1.7.Added CrossmintOtpDeliveryChannel (sms, whatsapp) and CrossmintPhoneSignerConfig.channel to request the OTP delivery channel for phone signers. Null m
CrossmintOtpDeliveryChannel (sms, whatsapp) and
CrossmintPhoneSignerConfig.channel to request the OTP delivery channel for
phone signers. Null means the service default, SMS. The channel is
client-only: it is not serialized into wallet API requests and is not parsed
back from a fetched wallet's recovery config.onSignWithPasskey dartdoc now states that assertions must be requested
with userVerification: "required".Added deployImmediately to addSigner, defaulting to true. On EVM wallets it controls how the backend registers the signer: true returns an on-chain re
deployImmediately to addSigner, defaulting to true. On EVM
wallets it controls how the backend registers the signer: true returns an
on-chain registration transaction installed immediately, false keeps the
lazy signature-request flow. The flag is never sent for Solana or Stellar
wallets.deployImmediately on EVM, where the key was previously
absent, so existing callers that pass nothing now send true explicitly.
Pass deployImmediately: false to keep the lazy signature-request flow.onChain block, and a registration carrying onChain no
longer yields a pending signature id. Solana and Stellar keep the previous
pending-transaction path. Callers that read the returned signature id on EVM
should read the transaction id instead.Device signers are not supported for this wallet. instead of ... for this wallet's provider., and the matching dartdoc was reworded. The error code
(CrossmintErrorCode.walletDeviceSignerNotSupported) is unchanged; only the
default message text differs.Solana device signers are no longer rejected client-side. Device signer registration is serialized and sent for all chains; support is provider-depend
registerSigner now maps the backend DEVICE_SIGNER_NOT_SUPPORTED code to a
typed CrossmintWalletException(walletDeviceSignerNotSupported), recognized
from the response body regardless of HTTP status.crossmint_core ^0.1.4 for the new
CrossmintErrorCode.walletDeviceSignerNotSupported.permissionless_passkeys dependency (passkey factory moved to a
host-supplied/callback path in the umbrella SDK).Docs: expanded dartdoc coverage on the public surface for the pub.dev landing page, plus a follow-up pass that fixed broken [reference] link targets a
[reference] link
targets and dartdoc format regressions surfaced by the docs build.Aligned WalletSerializationCodec.serializeDelegatedSigner with the EVM OpenAPI schema for email and phone signers — it now emits the full {type, email
WalletSerializationCodec.serializeDelegatedSigner with the EVM
OpenAPI schema for email and phone signers — it now emits the full
{type, email|phone} object instead of a bare email: / phone: locator
string, matching serializeSignerRegistrationInput and the RN SDK.
Forward-compat only — no end-user behavior change in this release: the
Crossmint backend does not currently accept email or phone as delegated
signer types on EVM, so wallet creation with
signers: [CrossmintEmailSignerConfig(...)] /
CrossmintPhoneSignerConfig(...) continues to fail with HTTP 400.
Tracking the backend-side addition separately. See #21 / #24.First public release on pub.dev
Your coding agent can read these notes before it upgrades. Set up the MCP server →