@dynamic-labs/waas-evm 4.66.0 → 4.67.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,37 @@
1
1
 
2
+ ### [4.67.1](https://github.com/dynamic-labs/dynamic-auth/compare/v4.67.0...v4.67.1) (2026-03-10)
3
+
4
+
5
+ ### Features
6
+
7
+ * add nonce manager and improve transaction handling ([#10612](https://github.com/dynamic-labs/dynamic-auth/issues/10612)) ([e373f12](https://github.com/dynamic-labs/dynamic-auth/commit/e373f1248beee2f12e7b4aec5a72d55b9555ad00))
8
+ * **sdk-react-core:** commonize step-up auth around useStepUpAuthentication ([#10586](https://github.com/dynamic-labs/dynamic-auth/issues/10586)) ([6e31e66](https://github.com/dynamic-labs/dynamic-auth/commit/6e31e6673d8861bc54677ea79da31872d7ad4c4e))
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **sdk-react-core:** hide AA warning for EIP-7702 smart wallets, show for ERC-4337 ([#10614](https://github.com/dynamic-labs/dynamic-auth/issues/10614)) ([5c46d42](https://github.com/dynamic-labs/dynamic-auth/commit/5c46d4277472cb31ddde7809d27ef7920964d548))
14
+ * use 2-column grid layout for backup codes to prevent overflow in minimal theme ([#10607](https://github.com/dynamic-labs/dynamic-auth/issues/10607)) ([84adf87](https://github.com/dynamic-labs/dynamic-auth/commit/84adf872aae0a7fedf961b76f5004535e657b415))
15
+
16
+ ## [4.67.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.66.0...v4.67.0) (2026-03-09)
17
+
18
+
19
+ ### Features
20
+
21
+ * add MFA methods to useStepUpAuthentication hook ([#10581](https://github.com/dynamic-labs/dynamic-auth/issues/10581)) ([7903290](https://github.com/dynamic-labs/dynamic-auth/commit/79032906d548ba2d4bcdf69cd9e6eb820064e408)), closes [dynamic-labs/dynamic-js-sdk#1061](https://github.com/dynamic-labs/dynamic-js-sdk/issues/1061) [dynamic-labs/dynamic-js-sdk#1062](https://github.com/dynamic-labs/dynamic-js-sdk/issues/1062)
22
+ * **demo:** add Passkey MFA and TOTP MFA step-up auth demos ([#10582](https://github.com/dynamic-labs/dynamic-auth/issues/10582)) ([92b9e28](https://github.com/dynamic-labs/dynamic-auth/commit/92b9e28e62084031a8bca11216aab39198948e82)), closes [#10581](https://github.com/dynamic-labs/dynamic-auth/issues/10581)
23
+ * **demo:** add Step-up Auth section ([#10483](https://github.com/dynamic-labs/dynamic-auth/issues/10483)) ([4bfff9a](https://github.com/dynamic-labs/dynamic-auth/commit/4bfff9a0fe475b4d8dbb6b8c4fccebb6550aa06f))
24
+ * **react-native:** add minifiedToken support to authModule ([#10595](https://github.com/dynamic-labs/dynamic-auth/issues/10595)) ([6b6e067](https://github.com/dynamic-labs/dynamic-auth/commit/6b6e067e62b97f573a31140967f3a07064e9f3fd))
25
+ * **stellar:** add account activation handling for unfunded recipients ([#10578](https://github.com/dynamic-labs/dynamic-auth/issues/10578)) ([ea5ef7b](https://github.com/dynamic-labs/dynamic-auth/commit/ea5ef7bfce7cf984ff091ea7d6321814dc3eea81))
26
+ * update demo CTA buttons - 'Book a call' and 'Get a free account' ([#10589](https://github.com/dynamic-labs/dynamic-auth/issues/10589)) ([e7d967c](https://github.com/dynamic-labs/dynamic-auth/commit/e7d967c59c5ad616348d9a51ea4bd314ec1ddd9f))
27
+ * **waas:** add password support to upgradeToDynamicWaas ([#10606](https://github.com/dynamic-labs/dynamic-auth/issues/10606)) ([d998a3e](https://github.com/dynamic-labs/dynamic-auth/commit/d998a3e955110f419dc40c4aeaddd93834957eb7))
28
+
29
+
30
+ ### Bug Fixes
31
+
32
+ * add overflow-y auto to backup codes view to prevent Complete button cutoff ([#10513](https://github.com/dynamic-labs/dynamic-auth/issues/10513)) ([5dfa94e](https://github.com/dynamic-labs/dynamic-auth/commit/5dfa94eaa232535f2e8c6905370dd8d8546485e3))
33
+ * prevent infinite re-render loop in UserPhoneField due to rapid t… ([#10475](https://github.com/dynamic-labs/dynamic-auth/issues/10475)) ([0d79b07](https://github.com/dynamic-labs/dynamic-auth/commit/0d79b0782606c9fa926ed4697a17381211ad2f4a))
34
+
2
35
  ## [4.66.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.65.0...v4.66.0) (2026-03-02)
3
36
 
4
37
 
package/package.cjs CHANGED
@@ -3,6 +3,6 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "4.66.0";
6
+ var version = "4.67.1";
7
7
 
8
8
  exports.version = version;
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  'use client'
2
- var version = "4.66.0";
2
+ var version = "4.67.1";
3
3
 
4
4
  export { version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/waas-evm",
3
- "version": "4.66.0",
3
+ "version": "4.67.1",
4
4
  "description": "A React SDK for implementing wallet web3 authentication and authorization to your website.",
5
5
  "author": "Dynamic Labs, Inc.",
6
6
  "license": "MIT",
@@ -18,15 +18,15 @@
18
18
  },
19
19
  "homepage": "https://www.dynamic.xyz/",
20
20
  "dependencies": {
21
- "@dynamic-labs/sdk-api-core": "0.0.875",
21
+ "@dynamic-labs/sdk-api-core": "0.0.881",
22
22
  "viem": "^2.28.4",
23
- "@dynamic-labs/assert-package-version": "4.66.0",
24
- "@dynamic-labs/ethereum-core": "4.66.0",
25
- "@dynamic-labs/logger": "4.66.0",
26
- "@dynamic-labs/types": "4.66.0",
27
- "@dynamic-labs/utils": "4.66.0",
28
- "@dynamic-labs/waas": "4.66.0",
29
- "@dynamic-labs/wallet-connector-core": "4.66.0"
23
+ "@dynamic-labs/assert-package-version": "4.67.1",
24
+ "@dynamic-labs/ethereum-core": "4.67.1",
25
+ "@dynamic-labs/logger": "4.67.1",
26
+ "@dynamic-labs/types": "4.67.1",
27
+ "@dynamic-labs/utils": "4.67.1",
28
+ "@dynamic-labs/waas": "4.67.1",
29
+ "@dynamic-labs/wallet-connector-core": "4.67.1"
30
30
  },
31
31
  "peerDependencies": {}
32
32
  }
@@ -254,22 +254,23 @@ class DynamicWaasEVMConnector extends waas.withDynamicWaas(ethereumCore.Ethereum
254
254
  mfaAction: sdkApiCore.MFAAction.WalletWaasSign,
255
255
  }));
256
256
  const password = yield this.getPasswordIfNeeded({ accountAddress });
257
+ // Ensure chainId is set so the signed transaction matches the RPC's chain (EIP-155).
258
+ // Wrong chainId causes "invalid signature: Failed to recover the signer" on broadcast.
259
+ // e.g. 1Money testnet requires chainId 1212101 (https://chainlist.org/chain/1212101).
260
+ const { currentChainId } = this;
261
+ const transactionWithChainId = currentChainId !== undefined
262
+ ? Object.assign(Object.assign({}, transaction), { chainId: currentChainId }) : transaction;
257
263
  const tx = yield this.instrumentAsync({
258
264
  context: { chainName: 'EVM', startTime, traceId },
259
265
  fn: () => _tslib.__awaiter(this, void 0, void 0, function* () {
260
266
  var _g;
261
- return client.signTransaction({
262
- authToken: (_g = this.getAuthToken) === null || _g === void 0 ? void 0 : _g.call(this),
263
- mfaToken,
264
- password,
265
- senderAddress: accountAddress,
266
- signedSessionId,
267
- traceContext: {
267
+ return client.signTransaction(Object.assign(Object.assign({ authToken: (_g = this.getAuthToken) === null || _g === void 0 ? void 0 : _g.call(this) }, (currentChainId !== undefined && {
268
+ chainId: currentChainId.toString(),
269
+ })), { mfaToken,
270
+ password, senderAddress: accountAddress, signedSessionId, traceContext: {
268
271
  startTime,
269
272
  traceId,
270
- },
271
- transaction: viem.serializeTransaction(transaction),
272
- });
273
+ }, transaction: viem.serializeTransaction(transactionWithChainId) }));
273
274
  }),
274
275
  operation: 'signTransaction',
275
276
  resource: 'client.signTransaction',
@@ -483,6 +484,9 @@ class DynamicWaasEVMConnector extends waas.withDynamicWaas(ethereumCore.Ethereum
483
484
  yield this.validateActiveWallet(from);
484
485
  const walletClient = this.getWalletClient();
485
486
  const publicClient = yield this.getPublicClient();
487
+ const nonce = yield (publicClient === null || publicClient === void 0 ? void 0 : publicClient.getTransactionCount({
488
+ address: from,
489
+ }));
486
490
  if (!publicClient || !walletClient) {
487
491
  throw new utils.DynamicError('No public client available');
488
492
  }
@@ -499,6 +503,7 @@ class DynamicWaasEVMConnector extends waas.withDynamicWaas(ethereumCore.Ethereum
499
503
  functionName: 'transfer',
500
504
  maxFeePerGas: transaction.maxFeePerGas,
501
505
  maxPriorityFeePerGas: transaction.maxPriorityFeePerGas,
506
+ nonce,
502
507
  });
503
508
  }
504
509
  // Native token
@@ -250,22 +250,23 @@ class DynamicWaasEVMConnector extends withDynamicWaas(EthereumWalletConnector) {
250
250
  mfaAction: MFAAction.WalletWaasSign,
251
251
  }));
252
252
  const password = yield this.getPasswordIfNeeded({ accountAddress });
253
+ // Ensure chainId is set so the signed transaction matches the RPC's chain (EIP-155).
254
+ // Wrong chainId causes "invalid signature: Failed to recover the signer" on broadcast.
255
+ // e.g. 1Money testnet requires chainId 1212101 (https://chainlist.org/chain/1212101).
256
+ const { currentChainId } = this;
257
+ const transactionWithChainId = currentChainId !== undefined
258
+ ? Object.assign(Object.assign({}, transaction), { chainId: currentChainId }) : transaction;
253
259
  const tx = yield this.instrumentAsync({
254
260
  context: { chainName: 'EVM', startTime, traceId },
255
261
  fn: () => __awaiter(this, void 0, void 0, function* () {
256
262
  var _g;
257
- return client.signTransaction({
258
- authToken: (_g = this.getAuthToken) === null || _g === void 0 ? void 0 : _g.call(this),
259
- mfaToken,
260
- password,
261
- senderAddress: accountAddress,
262
- signedSessionId,
263
- traceContext: {
263
+ return client.signTransaction(Object.assign(Object.assign({ authToken: (_g = this.getAuthToken) === null || _g === void 0 ? void 0 : _g.call(this) }, (currentChainId !== undefined && {
264
+ chainId: currentChainId.toString(),
265
+ })), { mfaToken,
266
+ password, senderAddress: accountAddress, signedSessionId, traceContext: {
264
267
  startTime,
265
268
  traceId,
266
- },
267
- transaction: serializeTransaction(transaction),
268
- });
269
+ }, transaction: serializeTransaction(transactionWithChainId) }));
269
270
  }),
270
271
  operation: 'signTransaction',
271
272
  resource: 'client.signTransaction',
@@ -479,6 +480,9 @@ class DynamicWaasEVMConnector extends withDynamicWaas(EthereumWalletConnector) {
479
480
  yield this.validateActiveWallet(from);
480
481
  const walletClient = this.getWalletClient();
481
482
  const publicClient = yield this.getPublicClient();
483
+ const nonce = yield (publicClient === null || publicClient === void 0 ? void 0 : publicClient.getTransactionCount({
484
+ address: from,
485
+ }));
482
486
  if (!publicClient || !walletClient) {
483
487
  throw new DynamicError('No public client available');
484
488
  }
@@ -495,6 +499,7 @@ class DynamicWaasEVMConnector extends withDynamicWaas(EthereumWalletConnector) {
495
499
  functionName: 'transfer',
496
500
  maxFeePerGas: transaction.maxFeePerGas,
497
501
  maxPriorityFeePerGas: transaction.maxPriorityFeePerGas,
502
+ nonce,
498
503
  });
499
504
  }
500
505
  // Native token