Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
4af9c67
wallets: Add onCreateConfig support for delegated signer workflows (#…
guilleasz-crossmint Oct 20, 2025
5d0d649
Merge branch 'main' of github.com:Crossmint/crossmint-sdk into wallet…
guilleasz-crossmint Oct 20, 2025
dd98a74
fix merge conflict change
guilleasz-crossmint Oct 23, 2025
67920a5
add change set
guilleasz-crossmint Oct 28, 2025
6b8783e
Merge branch 'main' of github.com:Crossmint/crossmint-sdk into wallet…
guilleasz-crossmint Oct 28, 2025
d4fc844
feat(wallets): add shadow signer support for automatic delegated sign…
guilleasz-crossmint Oct 28, 2025
78fd23f
shadow-signers: Support for React Native (#1465)
guilleasz-crossmint Oct 30, 2025
f357f45
device-signers: handle shadow signers as a separate signer type (#1483)
guilleasz-crossmint Nov 11, 2025
5ed73b5
Merge remote-tracking branch 'origin' into wallets-v1
guilleasz-crossmint Nov 12, 2025
762f1ee
fix passkey creation
guilleasz-crossmint Nov 17, 2025
a7de911
improve founding signer logic
guilleasz-crossmint Nov 17, 2025
6f473b5
improve browser storage
guilleasz-crossmint Nov 17, 2025
52156d8
Merge remote-tracking branch 'origin' into wallets-v1-merge-to-main
guilleasz-crossmint Jan 26, 2026
1b4e187
disable shadow signer
guilleasz-crossmint Jan 26, 2026
da38813
fix build issues
guilleasz-crossmint Jan 26, 2026
ede1aac
feat(wallets): remove owner parameter from client-side getOrCreateWal…
albertoelias-crossmint Jan 28, 2026
796e9bf
device-signers: remove device signers code (#1590)
guilleasz-crossmint Feb 20, 2026
a966106
Merge branch 'main' of github.com:Crossmint/crossmint-sdk into wallet…
guilleasz-crossmint Feb 24, 2026
930693d
fix import
guilleasz-crossmint Feb 24, 2026
17e4448
fix method name
guilleasz-crossmint Feb 24, 2026
439cf5b
fix unit tests
guilleasz-crossmint Feb 24, 2026
2445716
device-signer: added support for device signer (#1602)
guilleasz-crossmint Feb 25, 2026
eb975c9
device-signer: create browser device signer storage communication lay…
guilleasz-crossmint Feb 26, 2026
1cd9b39
device-signers: Apply biometric policies in sdk (#1607)
guilleasz-crossmint Mar 2, 2026
8c079bd
device-signer Add device signer when not available in the device (#1609)
guilleasz-crossmint Mar 4, 2026
d5283ab
device-signer: Fix Solana Message for Device Signer (#1611)
guilleasz-crossmint Mar 5, 2026
5b77229
feat: add SDK logger decorator to device signer flows (#1612)
guilleasz-crossmint Mar 6, 2026
939674c
udpate iframe urls
guilleasz-crossmint Mar 6, 2026
522b486
feat: handle device signer IDB fatal errors with iframe reload and re…
guilleasz-crossmint Mar 10, 2026
bf792d2
auth: remove farcaster login (#1629)
albertoelias-crossmint Mar 11, 2026
db51635
Remove Dynamic crypto wallet authentication from Crossmint Auth (#1626)
albertoelias-crossmint Mar 12, 2026
5e1e86e
feat: split getOrCreateWallet into separate get/create methods with d…
guilleasz-crossmint Mar 12, 2026
8caccf2
Merge branch 'main' of github.com:Crossmint/crossmint-sdk into wallet…
guilleasz-crossmint Mar 12, 2026
6e3fa39
refactor: rename adminSigner to recovery and delegatedSigners to sign…
guilleasz-crossmint Mar 12, 2026
d29b7d3
refactor: remove biometric policy from device signers (#1638)
guilleasz-crossmint Mar 12, 2026
e2b13fc
readd owner error
guilleasz-crossmint Mar 13, 2026
cf0f294
remove unused improts
guilleasz-crossmint Mar 13, 2026
06fe9e2
fix hasKey
guilleasz-crossmint Mar 13, 2026
18f3cc0
Merge branch 'main' of github.com:Crossmint/crossmint-sdk into wallet…
guilleasz-crossmint Mar 13, 2026
9b9f9db
feat: remove customAuth (experimental_customAuth, experimental_setCus…
albertoelias-crossmint Mar 14, 2026
c51a407
wallets: make device signer the default operational signer (#1646)
guilleasz-crossmint Mar 15, 2026
d0670f4
wallets-v1: added useSigner (#1650)
guilleasz-crossmint Mar 17, 2026
74a05a1
feat: unify OTP signer API with useWalletOtpSigner hook (#1648)
albertoelias-crossmint Mar 17, 2026
820c2ec
feat: remove experimental_ prefixes from wallets SDK (#1649)
albertoelias-crossmint Mar 17, 2026
34a052b
feat!: remove useAuth alias in favor of useCrossmintAuth (#1656)
albertoelias-crossmint Mar 18, 2026
e092cb6
updates openapi json (#1664)
albertoelias-crossmint Mar 19, 2026
07e01ff
release: enter beta prerelease mode (#1666)
albertoelias-crossmint Mar 19, 2026
00c3dba
Merge server signers into wallets-v1 branch (#1660)
jmderby Mar 19, 2026
e60df98
fix: prevent duplicate TEE initialization race condition in NonCustod…
albertoelias-crossmint Mar 19, 2026
4bf51f3
Release beta packages (beta) (#1668)
github-actions[bot] Mar 19, 2026
534e27d
wallets: homogenize signer management with full objects and status (#…
albertoelias-crossmint Mar 19, 2026
81985e2
Add NativeDeviceSignerKeyStorage with iOS/Android native bridge (#1653)
tomas-martins-crossmint Mar 19, 2026
c79cf72
Device Signers: Skipping solana on initial wallet creation (#1667)
panosinthezone Mar 19, 2026
6060196
ci: publish wallets-v1 from trusted workflow (#1669)
albertoelias-crossmint Mar 19, 2026
d09537e
fix: check device signer approval instead of needsRecovery flag in re…
albertoelias-crossmint Mar 19, 2026
bbca660
feat!: unified onSign callback for external wallets + prepareOnly pat…
albertoelias-crossmint Mar 19, 2026
6c14636
WAL-9427: Fix useSigner carry over and chain status checks (#1674)
maxsch-xmint Mar 19, 2026
63b00fe
Rename: callbacks (#1673)
panosinthezone Mar 19, 2026
1ae602c
Release beta packages (beta) (#1670)
github-actions[bot] Mar 19, 2026
09e9ce2
fix: simplify null check in recover() and make apiClient public (#1676)
albertoelias-crossmint Mar 19, 2026
3a4175c
ci: prevent duplicate CI runs on wallets-v1 (#1678)
albertoelias-crossmint Mar 19, 2026
d0c8820
Signer: Defaulting signer (#1675)
panosinthezone Mar 19, 2026
116111d
fix: make tokens and status optional in wallet.transfers() (#1681)
albertoelias-crossmint Mar 19, 2026
d66aacc
fix: normalize hex publicKey values to decimal for device signer comp…
albertoelias-crossmint Mar 19, 2026
d5c0df7
device-signer: add device name to device signer (#1655)
guilleasz-crossmint Mar 19, 2026
5ae2806
fix: validate transfer amount to reject zero/negative values (WAL-945…
albertoelias-crossmint Mar 19, 2026
6eb5217
fix: reject unknown chain names in createWallet and getWallet [WAL-94…
albertoelias-crossmint Mar 19, 2026
4e5bc75
fix: add client-side validation for recipient addresses in wallet.sen…
albertoelias-crossmint Mar 19, 2026
6038b09
feat!: useSigner accepts only signer config objects + recovery signer…
albertoelias-crossmint Mar 19, 2026
cbef04b
Release beta packages (beta) (#1677)
github-actions[bot] Mar 19, 2026
72a6c13
fix: enable server recovery wallets to auto-approve addSigner (#1686)
albertoelias-crossmint Mar 19, 2026
b8a9b90
Podfile and smart-wallet app.json fixes (#1691)
tomas-martins-crossmint Mar 20, 2026
778dfe3
Update headless-signing demo to use useWalletOtpSigner (#1694)
tomas-martins-crossmint Mar 20, 2026
7f45e33
wallets: remove @stellar/stellar-sdk dependency (#1690)
albertoelias-crossmint Mar 20, 2026
19faf09
Release beta packages (beta) (#1689)
github-actions[bot] Mar 20, 2026
24ea012
fix: redact sensitive fields in logs and remove auto-logging of args/…
albertoelias-crossmint Mar 20, 2026
78813a7
expo-device-signer: Making it a required dep (#1697)
panosinthezone Mar 20, 2026
884952e
Changeset: Expo device signers (#1701)
panosinthezone Mar 20, 2026
855a34c
refactor: use logger instead of console.error in CrossmintWalletBaseP…
albertoelias-crossmint Mar 20, 2026
2d92c5a
fix: preserve external-wallet recovery signer config during wallet in…
albertoelias-crossmint Mar 20, 2026
258779d
feat!: rename DelegatedSigner to Signer and AdminSignerConfig to Reco…
albertoelias-crossmint Mar 20, 2026
512015a
WAL-9464: default for recovery or one server signer (#1707)
maxsch-xmint Mar 20, 2026
05f3feb
fix: reuse existing device key instead of generating a new one (#1708)
tomas-martins-crossmint Mar 20, 2026
321fc7e
fix: replace stale DelegatedSignerResponse with SignerResponse in wal…
albertoelias-crossmint Mar 20, 2026
a24f783
Release beta packages (beta) (#1702)
github-actions[bot] Mar 20, 2026
003e632
fix: remove incorrect signer mention from getWallet JSDoc (#1710)
albertoelias-crossmint Mar 20, 2026
6fbf135
fix: disallow passkey signers in React Native (#1709)
albertoelias-crossmint Mar 20, 2026
d8fe0eb
feat: unify OTP signer API with showOtpSignerPrompt and otpSignerStat…
albertoelias-crossmint Mar 20, 2026
e38e91b
fix: improve error messages when server wallet signer is missing (WAL…
albertoelias-crossmint Mar 20, 2026
8c02d3d
Albertoe/fixes rn stuff (#1716)
albertoelias-crossmint Mar 20, 2026
f5517fc
fix: pass full passkey signer config in addSigner to preserve publicK…
maxsch-xmint Mar 20, 2026
bac3bd4
If a signer is in a pending state, approve it and then use it (#1715)
albertoelias-crossmint Mar 20, 2026
fda3708
fixes changeset
AlbertoElias Mar 21, 2026
1f83996
Release beta packages (beta) (#1713)
github-actions[bot] Mar 21, 2026
c2a0fb6
Bundle installation of device signers with RN UI Package (#1718)
tomas-martins-crossmint Mar 21, 2026
0929b5f
Merge origin/main into wallets-v1 - resolve all conflicts
devin-ai-integration[bot] Mar 21, 2026
6f69251
fix: resolve remaining conflict markers in wallet-factory.ts
devin-ai-integration[bot] Mar 21, 2026
1289efb
chore: remove pre.json from changeset
devin-ai-integration[bot] Mar 21, 2026
272e6a9
Docs: Update readme's and doc generation scripts (#1722)
jmderby Mar 21, 2026
9ede300
Merge latest wallets-v1 (docs/readme updates)
devin-ai-integration[bot] Mar 21, 2026
068915e
fix: remove duplicate case 'server' merge artifact in assembleSigner
devin-ai-integration[bot] Mar 21, 2026
d470bd3
fix: memoize renderUI in CrossmintWalletProvider to prevent unnecessa…
devin-ai-integration[bot] Mar 21, 2026
7212419
fix: update README to use showOtpSignerPrompt instead of headlessSign…
devin-ai-integration[bot] Mar 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .changeset/add-sdk-logger-device-signer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@crossmint/wallets-sdk': patch
---

Add SDK logger decorator to device signer key storage methods for improved observability
6 changes: 6 additions & 0 deletions .changeset/chatty-frogs-change.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@crossmint/client-sdk-react-base": minor
"@crossmint/wallets-sdk": minor
---

Device signer can be used in new devices. During the first transaction it will automatically create a device signer before running the transaction
6 changes: 6 additions & 0 deletions .changeset/client-side-address-validation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@crossmint/wallets-sdk": patch
"@crossmint/common-sdk-base": patch
---

Add client-side validation for recipient addresses in wallet.send(). Invalid addresses now throw an `InvalidAddressError` immediately instead of making a round-trip to the server.
10 changes: 10 additions & 0 deletions .changeset/device-signer-approval-check.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"@crossmint/wallets-sdk": patch
---

fix: check device signer approval instead of needsRecovery flag in recover()

Replaces the needsRecovery() flag check with an actual signerIsRegistered() call to verify
whether the device signer is approved on the wallet. This fixes the case where the recovery
signer does not require auth and there is no device signer, causing recover() to skip
registration.
15 changes: 15 additions & 0 deletions .changeset/device-signer-default.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
"@crossmint/wallets-sdk": major
"@crossmint/client-sdk-react-base": major
---

Make device signer the default operational signer (WAL-9287).

BREAKING CHANGES:
- Removed `signer` property from `WalletArgsFor` and `WalletCreateArgs`
- `recovery` is now required on `WalletCreateArgs`
- Removed `assembleSigner` public method from `CrossmintWallets`
- Removed `onChangeSigner` callback
- Removed `getOrCreateWallet` from React provider public API; use `getWallet` and `createWallet` separately
- `getWallet` now accepts `alias` instead of `signer`

5 changes: 5 additions & 0 deletions .changeset/device-signer-idb-fatal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@crossmint/wallets-sdk': patch
---

Handle device signer IDB fatal errors with iframe reload and retry
12 changes: 12 additions & 0 deletions .changeset/device-signer-name.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@crossmint/wallets-sdk": minor
"@crossmint/expo-device-signer": minor
---

Add human-readable device name to device signers.

- Added `name` field to `DeviceSignerConfig` and `DeviceSignerDescriptor`
- Added abstract `getDeviceName()` method to `DeviceSignerKeyStorage`
- `IframeDeviceSignerKeyStorage` derives the name from `navigator.userAgent` (e.g. "Chrome on Mac")
- `NativeDeviceSignerKeyStorage` uses `expo-device` APIs for real native device names (e.g. "iPhone 15 (iOS)")
- Both `registerSigners` (wallet creation) and `addSigner` (recovery) now send the device name to the API
5 changes: 5 additions & 0 deletions .changeset/disallow-passkeys-react-native.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@crossmint/client-sdk-react-native-ui": patch
---

Disallow passkey signers in React Native. Passkeys are not supported in React Native and will now throw a clear error when used as recovery signers, delegated signers, or via createPasskeySigner.
6 changes: 6 additions & 0 deletions .changeset/fix-device-signer-hex-comparison.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@crossmint/wallets-sdk": patch
---

Fix createWallet failing when a device signer descriptor from createDeviceSigner() is passed in signers[]. The publicKey.x/y hex values are now normalized to decimal before comparison during idempotency validation.

5 changes: 5 additions & 0 deletions .changeset/fix-external-wallet-recovery-config.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@crossmint/wallets-sdk": patch
---

fix: preserve external-wallet recovery signer config (onSign callback) during wallet instantiation
5 changes: 5 additions & 0 deletions .changeset/fix-getwallet-description.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@crossmint/wallets-sdk": patch
---

Remove incorrect signer mention from getWallet JSDoc description.
5 changes: 5 additions & 0 deletions .changeset/fix-passkey-signer-publickey.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@crossmint/wallets-sdk': patch
---

fix: pass full passkey signer config in addSigner to preserve publicKey
9 changes: 9 additions & 0 deletions .changeset/fix-server-recovery-addsigner.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@crossmint/wallets-sdk": patch
---

Fix server recovery wallets auto-approve for addSigner

- Preserve user-provided recovery config (with secret) during wallet creation so server recovery signers can properly auto-approve addSigner operations
- Use buildInternalSignerConfig for recovery signer assembly in addSigner, which correctly derives server signer keys

9 changes: 9 additions & 0 deletions .changeset/fix-tee-double-init.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@crossmint/wallets-sdk": patch
---

fix: prevent duplicate TEE initialization race condition in NonCustodialSigner

Stores the constructor's initialize() promise in _initializationPromise so that
getTEEConnection() can detect an in-flight initialization and await it instead
of starting a parallel one, preventing duplicate iframe/TEE attestation.
6 changes: 6 additions & 0 deletions .changeset/fix-transfers-optional-params.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@crossmint/wallets-sdk": patch
---

fix: make tokens and status optional in wallet.transfers()

5 changes: 5 additions & 0 deletions .changeset/fix-zero-value-transfers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@crossmint/wallets-sdk": patch
---

Validate transfer amount in wallet.send() to reject zero, negative, and non-numeric values before sending on-chain. Throws InvalidTransferAmountError for invalid amounts.
11 changes: 11 additions & 0 deletions .changeset/homogenize-signer-management.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"@crossmint/wallets-sdk": minor
---

Homogenize signer management to always use full objects with approval status

- `addSigner()` now accepts full signer config objects (`SignerConfigForChain<C>`) instead of locator strings
- `addSigner()` returns a `DelegatedSigner` with approval status
- `signers()` returns full `DelegatedSigner` objects, filtered to only include signers that exist for the instantiated chain
- New `SignerStatus` and `DelegatedSigner` types are exported

5 changes: 5 additions & 0 deletions .changeset/improve-signer-missing-error.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@crossmint/wallets-sdk": patch
---

Improve error messages when server wallet signer is missing. Instead of a generic "read-only" error, the SDK now provides context-specific guidance for server signers, external-wallet signers, and wallets with multiple signers. Also adds a warning log when auto-assembly of the default signer fails.
6 changes: 6 additions & 0 deletions .changeset/itchy-ducks-collect.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@crossmint/client-sdk-react-ui": minor
"@crossmint/wallets-sdk": minor
---

Browser Device Key support with Iframe Key Storage
5 changes: 5 additions & 0 deletions .changeset/loud-timers-melt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@crossmint/client-sdk-react-native-ui": patch
---

Fixes modal icons for otp flow
7 changes: 7 additions & 0 deletions .changeset/mighty-coins-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@crossmint/client-sdk-react-ui": major
"@crossmint/client-sdk-react-base": major
"@crossmint/wallets-sdk": major
---

Add support for Delegated Signers.
5 changes: 5 additions & 0 deletions .changeset/new-dots-bow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@crossmint/wallets-sdk": patch
---

Default for recovery or one server signer
5 changes: 5 additions & 0 deletions .changeset/reject-unknown-chains.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@crossmint/wallets-sdk": patch
---

Reject unknown chain names in createWallet and getWallet with an InvalidChainError before any wallet resource is created
6 changes: 6 additions & 0 deletions .changeset/remove-biometric-policy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@crossmint/wallets-sdk': minor
'@crossmint/client-sdk-react-ui': minor
---

Remove biometric policy from device signers. Only "none" policies are now created, which is the default for the iframe.
9 changes: 9 additions & 0 deletions .changeset/remove-customauth.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@crossmint/common-sdk-base": minor
"@crossmint/client-sdk-react-base": minor
"@crossmint/client-sdk-react-ui": minor
"@crossmint/client-sdk-react-native-ui": minor
"@crossmint/wallets-sdk": minor
---

Remove deprecated customAuth (experimental_customAuth, experimental_setCustomAuth, CustomAuth type) from the SDK. All authentication now uses the setJwt/crossmint.jwt pattern instead.
12 changes: 12 additions & 0 deletions .changeset/remove-dynamic-wallet-auth.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@crossmint/client-sdk-react-ui": major
"@crossmint/client-sdk-react-base": major
---

Remove Dynamic crypto wallet authentication from Crossmint Auth.

This is a breaking change that removes the ability to authenticate with crypto wallets via Dynamic (dynamic-xyz) in the React UI SDK. The following are removed:

- `web3`, `web3:evm-only`, and `web3:solana-only` login methods
- `experimental_externalWalletSigner` from the auth context
- All `@dynamic-labs/*` dependencies from the auth flow
19 changes: 19 additions & 0 deletions .changeset/remove-experimental-prefixes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
"@crossmint/wallets-sdk": major
"@crossmint/client-sdk-react-base": major
"@crossmint/client-sdk-react-ui": major
---

Remove experimental_ prefixes from wallets SDK public API

BREAKING CHANGE: All experimental_ prefixed APIs have been graduated to stable with new names:

- `experimental_prepareOnly` -> `prepareOnly`
- `experimental_callbacks` -> `_callbacks`
- `experimental_loginWithOAuth` -> `loginWithOAuth`
- `experimental_getNfts` -> `getNfts` / `nfts`
- `experimental_activity` -> `getTransfers` / `transfers`
- `experimental_signer` -> `signer`
- `experimental_approval` -> `approval`
- `experimental_transaction` -> `transaction`
- `experimental_transactions` -> `transactions`
8 changes: 8 additions & 0 deletions .changeset/remove-farcaster-auth.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@crossmint/client-sdk-auth": minor
"@crossmint/client-sdk-react-ui": minor
"@crossmint/common-sdk-auth": minor
"@crossmint/client-sdk-react-base": minor
---

Remove Farcaster authentication. All Farcaster-related types, components, methods, and dependencies have been removed. The `signInWithFarcaster` method, `FarcasterSignIn` component, `FarcasterProvider`, `FarcasterMetadata` type, and `"farcaster"` login method are no longer available.
12 changes: 12 additions & 0 deletions .changeset/remove-owner-client-side.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@crossmint/wallets-sdk": major
"@crossmint/client-sdk-react-base": major
"@crossmint/client-sdk-react-ui": major
"@crossmint/client-sdk-react-native-ui": major
---

BREAKING CHANGE: Remove owner parameter from client-side getOrCreateWallet calls

The `owner` field can no longer be specified in client-side `getOrCreateWallet` calls. Owner is now determined from JWT authentication.

Migration: Remove the `owner` parameter from any client-side wallet creation calls. The owner is automatically determined from the authenticated user's JWT token.
5 changes: 5 additions & 0 deletions .changeset/remove-stellar-sdk-v1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@crossmint/wallets-sdk": patch
---

Remove @stellar/stellar-sdk dependency by replacing it with tweetnacl (already a dependency) for ed25519 operations and a local Stellar StrKey encoder ported from open-signer.
11 changes: 11 additions & 0 deletions .changeset/remove-useauth-alias.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"@crossmint/client-sdk-react-base": major
"@crossmint/client-sdk-react-ui": major
"@crossmint/client-sdk-react-native-ui": major
---

Remove `useAuth` hook alias in favor of `useCrossmintAuth`

BREAKING CHANGE: The `useAuth` export has been removed from all packages. Use `useCrossmintAuth` instead, which provides the same functionality.

- `useAuth()` -> `useCrossmintAuth()`
10 changes: 10 additions & 0 deletions .changeset/rename-delegated-signers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"@crossmint/wallets-sdk": minor
"@crossmint/client-sdk-react-ui": minor
"@crossmint/client-sdk-react-base": minor
---

Rename DelegatedSigner to Signer and AdminSignerConfig to RecoverySignerConfig.

The exported type `DelegatedSigner` has been renamed to `Signer`. `DelegatedSignerInput` → `SignerInput`, `AdminSignerConfig` → `RecoverySignerConfig`. The internal `Signer` interface (signing mechanism adapter) has been renamed to `SignerAdapter` and is now publicly exported for consumers using `additionalSigners`.

5 changes: 5 additions & 0 deletions .changeset/shaggy-onions-swim.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@crossmint/wallets-sdk": patch
---

If a signer is in a pending state, approve it and then use it'
8 changes: 8 additions & 0 deletions .changeset/split-get-create-wallet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@crossmint/wallets-sdk": major
"@crossmint/client-sdk-react-base": patch
"@crossmint/client-sdk-react-ui": patch
"@crossmint/client-sdk-react-native-ui": patch
---

Split getOrCreateWallet into separate getWallet and createWallet methods, both working client and server side. Make signer optional for read-only wallets. Add device signer resolution logic in getWallet. Add createDeviceSigner helper function. Support device signers with pre-existing locators.
5 changes: 5 additions & 0 deletions .changeset/tall-papayas-glow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@crossmint/wallets-sdk": patch
---

Support Solana Device Signer
6 changes: 6 additions & 0 deletions .changeset/ten-mails-scream.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@crossmint/client-sdk-react-base": minor
"@crossmint/wallets-sdk": minor
---

Add device signer support
5 changes: 5 additions & 0 deletions .changeset/tough-mice-poke.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@crossmint/client-sdk-react-native-ui": patch
---

Statically loading @crossmint/expo-device-signer
5 changes: 5 additions & 0 deletions .changeset/tricky-planes-rest.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@crossmint/wallets-sdk": patch
---

Defaulting signer
5 changes: 5 additions & 0 deletions .changeset/use-logger-wallet-base-provider.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@crossmint/client-sdk-react-base': patch
---

Replace console.error with structured logger.error in CrossmintWalletBaseProvider for improved observability
11 changes: 11 additions & 0 deletions .changeset/use-signer-recovery-support.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"@crossmint/wallets-sdk": minor
---

Breaking: `useSigner()` now only accepts signer config objects + recovery signer support

- **Breaking:** `useSigner()` no longer accepts locator strings — only signer config objects (`SignerConfigForChain<C>`)
- `useSigner()` now accepts the wallet's recovery (admin) signer in addition to delegated signers
- Recovery signers skip the delegated signer registration check
- External-wallet signers (both recovery and delegated) require the full config object with an `onSign` callback
- All signer types must be passed as config objects (e.g. `{ type: "email", email: "..." }`)
14 changes: 14 additions & 0 deletions .changeset/use-wallet-otp-signer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
"@crossmint/wallets-sdk": minor
"@crossmint/client-sdk-react-ui": minor
"@crossmint/client-sdk-react-native-ui": minor
"@crossmint/client-sdk-react-base": minor
---

feat: unify OTP signer API with useWalletOtpSigner hook and showOtpSignerPrompt prop

- Replace `headlessSigningFlow` with `showOtpSignerPrompt` (defaults to `true`) for consistent opt-in/opt-out of built-in OTP UI across both react-ui and react-native
- Rename `emailSignerState` to `otpSignerState` in the wallet context to reflect support for both email and phone OTP signers
- Rename `sendEmailWithOtp` to `sendOtp` across the SDK to unify email and phone OTP signer APIs
- Add new `useWalletOtpSigner` hook in react-base, exported from both react-ui and react-native-ui
- Deprecate `useWalletEmailSigner` in react-native in favor of `useWalletOtpSigner`
7 changes: 7 additions & 0 deletions .changeset/wal-9286-rename-signer-terminology.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@crossmint/wallets-sdk": major
"@crossmint/client-sdk-react-base": major
---

BREAKING: Rename SDK-facing terminology: adminSigner to recovery, delegatedSigners to signers, addDelegatedSigner() to addSigner(), delegatedSigners() to signers(). API layer unchanged.

5 changes: 5 additions & 0 deletions .changeset/wallet-fixes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@crossmint/wallets-sdk": patch
---

Simplify null check in recover() and make apiClient publicly accessible
5 changes: 5 additions & 0 deletions .changeset/wet-cheetahs-agree.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@crossmint/wallets-sdk": patch
---

Fix createDeviceSigner always generating a new key instead of reusing an existing one for the same address on the same device
13 changes: 13 additions & 0 deletions .expo/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
> Why do I have a folder named ".expo" in my project?
The ".expo" folder is created when an Expo project is started using "expo start" command.

> What do the files contain?
- "devices.json": contains information about devices that have recently opened this project. This is used to populate the "Development sessions" list in your development builds.
- "settings.json": contains the server configuration that is used to serve the application manifest.

> Should I commit the ".expo" folder?
No, you should not share the ".expo" folder. It does not contain any information that is relevant for other developers working on the project, it is specific to your machine.
Upon project creation, the ".expo" folder is already added to your ".gitignore" file.
3 changes: 3 additions & 0 deletions .expo/devices.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"devices": []
}
4 changes: 4 additions & 0 deletions .expo/prebuild/cached-packages.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"dependencies": "e79f4d365c0b15b4332b91e402595ea8d8d7ced4",
"devDependencies": "ac5a6021029887fec32e4f4d95a48ec3634e2628"
}
Loading
Loading