@dynamic-labs/ethereum 5.0.0-rc.0 → 5.0.0-rc.3

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,5 +1,80 @@
1
1
 
2
- ## [5.0.0-rc.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.91.6...v5.0.0-rc.0) (2026-07-05)
2
+ ## [5.0.0-rc.3](https://github.com/dynamic-labs/dynamic-auth/compare/v5.0.0-rc.2...v5.0.0-rc.3) (2026-07-17)
3
+
4
+ ## [5.0.0-rc.2](https://github.com/dynamic-labs/dynamic-auth/compare/v5.0.0-rc.1...v5.0.0-rc.2) (2026-07-17)
5
+
6
+ ## [5.0.0-rc.1](https://github.com/dynamic-labs/dynamic-auth/compare/v5.0.0-rc.0...v5.0.0-rc.1) (2026-07-17)
7
+
8
+
9
+ ### ⚠ BREAKING CHANGES
10
+
11
+ * move legacy embedded wallet to waas upgrade flow to new legacy-embedded-wallet-migration package (#11841)
12
+ * drop default injection of legacy embedded wallet connectors (#11833)
13
+ * remove legacy embedded wallet support (#11979)
14
+ * throw when legacy embedded wallet is detected without migration provider (#11855)
15
+ * remove deprecated eclipse package (#11831)
16
+ * remove deprecated functions and props (#11832)
17
+
18
+
19
+ ### [4.92.4](https://github.com/dynamic-labs/dynamic-auth/compare/v4.92.3...v4.92.4) (2026-07-16)
20
+
21
+
22
+ ### Features
23
+
24
+ * **bitcoin:** per-network address switching and dust-limit send validation [v4] ([#11970](https://github.com/dynamic-labs/dynamic-auth/issues/11970)) ([76a4a9a](https://github.com/dynamic-labs/dynamic-auth/commit/76a4a9a5025d78798ebd1beffe6c0af59d2d029a)), closes [#11896](https://github.com/dynamic-labs/dynamic-auth/issues/11896) [#11800](https://github.com/dynamic-labs/dynamic-auth/issues/11800)
25
+ * **midnight:** per-network addresses in deposit and wallet info views [v4] ([#11949](https://github.com/dynamic-labs/dynamic-auth/issues/11949)) ([978446a](https://github.com/dynamic-labs/dynamic-auth/commit/978446aca8546eb038ba9ed3be0503d10594ee15))
26
+ * **midnight:** resolve wallet address per selected network [v4] ([#11948](https://github.com/dynamic-labs/dynamic-auth/issues/11948)) ([d6f858c](https://github.com/dynamic-labs/dynamic-auth/commit/d6f858c5e35defda7ed73cf97b3fdbe5ed9d131d))
27
+ * set useMetamaskSdk to true by default ([#11926](https://github.com/dynamic-labs/dynamic-auth/issues/11926)) ([75b5a4a](https://github.com/dynamic-labs/dynamic-auth/commit/75b5a4a0fe8b1a375afce145c0b8bdc3ce761117))
28
+
29
+
30
+ ### Bug Fixes
31
+
32
+ * **midnight:** align per-network code with the final main iteration [v4] ([#11971](https://github.com/dynamic-labs/dynamic-auth/issues/11971)) ([3ef3ba8](https://github.com/dynamic-labs/dynamic-auth/commit/3ef3ba8c090dfd9e4286b4e51bf350ea5e6feac7))
33
+ * settle social sign-in when captcha is backed out or oauth popup never responds (v4) ([#11956](https://github.com/dynamic-labs/dynamic-auth/issues/11956)) ([ad49477](https://github.com/dynamic-labs/dynamic-auth/commit/ad49477f2acf61a154bb79cbe26b24f803cdb0e2))
34
+ * validate that private key is not empty before upgrading to WaaS ([#11952](https://github.com/dynamic-labs/dynamic-auth/issues/11952)) ([21dfb83](https://github.com/dynamic-labs/dynamic-auth/commit/21dfb83cb29e42b335bc94a0cdd2062cf14a262a))
35
+
36
+ ### [4.92.3](https://github.com/dynamic-labs/dynamic-auth/compare/v4.92.2...v4.92.3) (2026-07-10)
37
+
38
+
39
+ ### Bug Fixes
40
+
41
+ * **sdk-react-core:** fix deterministic 'Wallet not found' crash in embedded wallet export (v4) ([#11906](https://github.com/dynamic-labs/dynamic-auth/issues/11906)) ([913ef23](https://github.com/dynamic-labs/dynamic-auth/commit/913ef236b26245488e1cd5db7e874601b65ff0a2)), closes [#11905](https://github.com/dynamic-labs/dynamic-auth/issues/11905) [#11729](https://github.com/dynamic-labs/dynamic-auth/issues/11729)
42
+
43
+ ### [4.92.2](https://github.com/dynamic-labs/dynamic-auth/compare/v4.92.1...v4.92.2) (2026-07-09)
44
+
45
+
46
+ ### Bug Fixes
47
+
48
+ * engage captcha during step-up OTP re-auth ([#11879](https://github.com/dynamic-labs/dynamic-auth/issues/11879)) ([585460a](https://github.com/dynamic-labs/dynamic-auth/commit/585460a8976803a8ed0aad16a4a00047bd6c115a))
49
+ * **waas:** gate v1 wallet upgrade on recovery for email-only wallets ([#11897](https://github.com/dynamic-labs/dynamic-auth/issues/11897)) ([5a6f0c6](https://github.com/dynamic-labs/dynamic-auth/commit/5a6f0c6bf3120e59cf502004d09fae56f193e977))
50
+
51
+ ### [4.92.1](https://github.com/dynamic-labs/dynamic-auth/compare/v4.92.0...v4.92.1) (2026-07-09)
52
+
53
+
54
+ ### Bug Fixes
55
+
56
+ * **ethereum:** fire in-app-browser redirect on sign for injected EVM wallets that use in-app-browser experience ([#11888](https://github.com/dynamic-labs/dynamic-auth/issues/11888)) ([5116d91](https://github.com/dynamic-labs/dynamic-auth/commit/5116d91ab2c71000a490d72c5d278549d4d8ae9a))
57
+ * **sdk-react-core:** show clear message for Phantom redirect signing failures (v4 backport) ([#11886](https://github.com/dynamic-labs/dynamic-auth/issues/11886)) ([60ac897](https://github.com/dynamic-labs/dynamic-auth/commit/60ac897ba81f7758ccd7a05f97b619785e1f50a7))
58
+ * **social:** use redirect strategy for step-up OAuth on mobile [V4 backport] ([#11881](https://github.com/dynamic-labs/dynamic-auth/issues/11881)) ([42a202e](https://github.com/dynamic-labs/dynamic-auth/commit/42a202e6255de8db73df02eff37c0b10b24fef1a))
59
+ * **solana:** fire in-app-browser redirect on sign and wallet switch ([#11871](https://github.com/dynamic-labs/dynamic-auth/issues/11871)) ([4e2d6b7](https://github.com/dynamic-labs/dynamic-auth/commit/4e2d6b7ac8fdef5bf7c62b8a726ecaef1c6210ec))
60
+ * **solana:** resolve Phantom/Backpack provider collision and Backpack >=0.10.x connect hangs ([#11856](https://github.com/dynamic-labs/dynamic-auth/issues/11856)) ([#11882](https://github.com/dynamic-labs/dynamic-auth/issues/11882)) ([5784aff](https://github.com/dynamic-labs/dynamic-auth/commit/5784aff9641bbc85445fb466f3ab1d6a14331e73))
61
+
62
+ ## [4.92.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.91.6...v4.92.0) (2026-07-08)
63
+
64
+
65
+ ### Features
66
+
67
+ * **captcha:** add Cloudflare Turnstile provider support alongside hCaptcha (v4) ([#11798](https://github.com/dynamic-labs/dynamic-auth/issues/11798)) ([114c770](https://github.com/dynamic-labs/dynamic-auth/commit/114c7702e900d8dedeebe7be867de35d11a93f31))
68
+
69
+
70
+ ### Bug Fixes
71
+
72
+ * **ethereum-aa:** resolve kernel client config per wallet (v4) ([#11870](https://github.com/dynamic-labs/dynamic-auth/issues/11870)) ([1b66d79](https://github.com/dynamic-labs/dynamic-auth/commit/1b66d79b4a32b4b6de433b7536bc46e6719224c6))
73
+ * **iframe-setup:** block dangerous URL schemes and verify sender in OPEN_URL ([#11819](https://github.com/dynamic-labs/dynamic-auth/issues/11819)) ([329b27e](https://github.com/dynamic-labs/dynamic-auth/commit/329b27e9fac825916ab227ec8cf93dc343898923))
74
+ * improve social OAuth error messages ([#11837](https://github.com/dynamic-labs/dynamic-auth/issues/11837)) ([8e57c06](https://github.com/dynamic-labs/dynamic-auth/commit/8e57c067c5a89111a32a12fb82e190cf6c46ad67))
75
+ * **react-native-extension:** reject path traversal in downloadFile fileName ([#11816](https://github.com/dynamic-labs/dynamic-auth/issues/11816)) ([9367a56](https://github.com/dynamic-labs/dynamic-auth/commit/9367a56b6daa853d7f7e7f5534261bc68825b239))
76
+ * **sdk-react-core:** display exactly the bytes signed in personal_sign preview ([#11818](https://github.com/dynamic-labs/dynamic-auth/issues/11818)) ([30b9382](https://github.com/dynamic-labs/dynamic-auth/commit/30b93829122f00060cb484aef09a03294c03f651))
77
+
3
78
 
4
79
  ### [4.91.6](https://github.com/dynamic-labs/dynamic-auth/compare/v4.91.5...v4.91.6) (2026-07-03)
5
80
 
package/package.cjs CHANGED
@@ -3,6 +3,6 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "5.0.0-rc.0";
6
+ var version = "5.0.0-rc.3";
7
7
 
8
8
  exports.version = version;
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  'use client'
2
- var version = "5.0.0-rc.0";
2
+ var version = "5.0.0-rc.3";
3
3
 
4
4
  export { version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/ethereum",
3
- "version": "5.0.0-rc.0",
3
+ "version": "5.0.0-rc.3",
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",
@@ -19,21 +19,20 @@
19
19
  "homepage": "https://www.dynamic.xyz/",
20
20
  "dependencies": {
21
21
  "@coinbase/wallet-sdk": "4.3.7",
22
- "@dynamic-labs-connectors/base-account-evm": "4.6.10",
23
- "@dynamic-labs-connectors/metamask-evm": "4.6.10",
22
+ "@dynamic-labs-connectors/base-account-evm": "4.6.15",
23
+ "@dynamic-labs-connectors/metamask-evm": "4.6.15",
24
24
  "@walletconnect/ethereum-provider": "2.23.2",
25
25
  "eventemitter3": "5.0.1",
26
26
  "buffer": "6.0.3",
27
- "@dynamic-labs/assert-package-version": "5.0.0-rc.0",
28
- "@dynamic-labs/embedded-wallet-evm": "5.0.0-rc.0",
29
- "@dynamic-labs/ethereum-core": "5.0.0-rc.0",
30
- "@dynamic-labs/logger": "5.0.0-rc.0",
31
- "@dynamic-labs/rpc-providers": "5.0.0-rc.0",
32
- "@dynamic-labs/types": "5.0.0-rc.0",
33
- "@dynamic-labs/utils": "5.0.0-rc.0",
34
- "@dynamic-labs/waas-evm": "5.0.0-rc.0",
35
- "@dynamic-labs/wallet-book": "5.0.0-rc.0",
36
- "@dynamic-labs/wallet-connector-core": "5.0.0-rc.0"
27
+ "@dynamic-labs/assert-package-version": "5.0.0-rc.3",
28
+ "@dynamic-labs/ethereum-core": "5.0.0-rc.3",
29
+ "@dynamic-labs/logger": "5.0.0-rc.3",
30
+ "@dynamic-labs/rpc-providers": "5.0.0-rc.3",
31
+ "@dynamic-labs/types": "5.0.0-rc.3",
32
+ "@dynamic-labs/utils": "5.0.0-rc.3",
33
+ "@dynamic-labs/waas-evm": "5.0.0-rc.3",
34
+ "@dynamic-labs/wallet-book": "5.0.0-rc.3",
35
+ "@dynamic-labs/wallet-connector-core": "5.0.0-rc.3"
37
36
  },
38
37
  "peerDependencies": {
39
38
  "viem": "^2.45.3"
@@ -5,10 +5,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var baseAccountEvm = require('@dynamic-labs-connectors/base-account-evm');
7
7
  var metamaskEvm = require('@dynamic-labs-connectors/metamask-evm');
8
- var embeddedWalletEvm = require('@dynamic-labs/embedded-wallet-evm');
9
8
  var waasEvm = require('@dynamic-labs/waas-evm');
10
- require('../_virtual/_tslib.cjs');
11
9
  require('@dynamic-labs/utils');
10
+ require('../_virtual/_tslib.cjs');
12
11
  require('@dynamic-labs/ethereum-core');
13
12
  require('viem');
14
13
  require('@dynamic-labs/wallet-book');
@@ -39,7 +38,6 @@ const EthereumWalletConnectors = (props) => {
39
38
  ...fetchInjectedWalletConnectors.injectedWalletOverrides,
40
39
  ...fetchInjectedWalletConnectors.fetchInjectedWalletConnector(Object.assign(Object.assign({}, props), { walletsWithCustomConnectors })),
41
40
  ...fetchWalletConnectWallets.fetchWalletConnectWallets(props),
42
- ...embeddedWalletEvm.TurnkeyEVMWalletConnectors(props),
43
41
  ...waasEvm.DynamicWaasEVMConnectors(),
44
42
  ...(useMetamaskSdk ? metamaskEvm.MetaMaskEvmWalletConnectors(props) : []),
45
43
  coinbase.Coinbase,
@@ -1,10 +1,9 @@
1
1
  'use client'
2
2
  import { createBaseAccountConnector } from '@dynamic-labs-connectors/base-account-evm';
3
3
  import { MetaMaskEvmWalletConnectors } from '@dynamic-labs-connectors/metamask-evm';
4
- import { TurnkeyEVMWalletConnectors } from '@dynamic-labs/embedded-wallet-evm';
5
4
  import { DynamicWaasEVMConnectors } from '@dynamic-labs/waas-evm';
6
- import '../_virtual/_tslib.js';
7
5
  import '@dynamic-labs/utils';
6
+ import '../_virtual/_tslib.js';
8
7
  import '@dynamic-labs/ethereum-core';
9
8
  import 'viem';
10
9
  import '@dynamic-labs/wallet-book';
@@ -35,7 +34,6 @@ const EthereumWalletConnectors = (props) => {
35
34
  ...injectedWalletOverrides,
36
35
  ...fetchInjectedWalletConnector(Object.assign(Object.assign({}, props), { walletsWithCustomConnectors })),
37
36
  ...fetchWalletConnectWallets(props),
38
- ...TurnkeyEVMWalletConnectors(props),
39
37
  ...DynamicWaasEVMConnectors(),
40
38
  ...(useMetamaskSdk ? MetaMaskEvmWalletConnectors(props) : []),
41
39
  Coinbase,
@@ -56,12 +56,13 @@ class EthProviderHelper {
56
56
  providers.push(...foundProviders);
57
57
  }
58
58
  }
59
- if (window.ethereum) {
60
- if (!window.ethereum.providers || !window.ethereum.providers.length) {
61
- providers.push(window.ethereum);
59
+ const injectedEthereum = window.ethereum;
60
+ if (injectedEthereum) {
61
+ if (!injectedEthereum.providers || !injectedEthereum.providers.length) {
62
+ providers.push(injectedEthereum);
62
63
  }
63
64
  else {
64
- window.ethereum.providers.forEach((p) => providers.push(p));
65
+ injectedEthereum.providers.forEach((p) => providers.push(p));
65
66
  }
66
67
  }
67
68
  return providers;
@@ -52,12 +52,13 @@ class EthProviderHelper {
52
52
  providers.push(...foundProviders);
53
53
  }
54
54
  }
55
- if (window.ethereum) {
56
- if (!window.ethereum.providers || !window.ethereum.providers.length) {
57
- providers.push(window.ethereum);
55
+ const injectedEthereum = window.ethereum;
56
+ if (injectedEthereum) {
57
+ if (!injectedEthereum.providers || !injectedEthereum.providers.length) {
58
+ providers.push(injectedEthereum);
58
59
  }
59
60
  else {
60
- window.ethereum.providers.forEach((p) => providers.push(p));
61
+ injectedEthereum.providers.forEach((p) => providers.push(p));
61
62
  }
62
63
  }
63
64
  return providers;
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../../_virtual/_tslib.cjs');
7
7
  var ethereumCore = require('@dynamic-labs/ethereum-core');
8
+ var utils = require('@dynamic-labs/utils');
8
9
  var ethProviderHelper = require('../ethProviderHelper.cjs');
9
10
  var logger = require('../utils/logger.cjs');
10
11
  var WalletConnectConnector = require('../walletConnect/WalletConnectConnector/WalletConnectConnector.cjs');
@@ -72,9 +73,40 @@ class InjectedWalletBase extends ethereumCore.EthereumWalletConnector {
72
73
  yield this.getAddress();
73
74
  });
74
75
  }
76
+ getSigner() {
77
+ const _super = Object.create(null, {
78
+ getSigner: { get: () => super.getSigner }
79
+ });
80
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
81
+ const signer = yield _super.getSigner.call(this);
82
+ if (signer) {
83
+ return signer;
84
+ }
85
+ // On mobile web (outside the wallet's in-app browser) there is no injected
86
+ // provider for these wallets, so signing silently returns nothing. Redirect
87
+ // into the wallet's in-app browser so signing can continue there, or throw a
88
+ // clear error when neither a provider nor a redirect is possible.
89
+ if (utils.isMobile() && !this.isInstalledOnBrowser()) {
90
+ const didOpenInAppBrowser = this.openInAppBrowserIfRequired();
91
+ if (!didOpenInAppBrowser) {
92
+ throw new utils.WalletRequiresInAppBrowserError(this.name);
93
+ }
94
+ }
95
+ return undefined;
96
+ });
97
+ }
75
98
  signMessage(messageToSign) {
76
99
  return _tslib.__awaiter(this, void 0, void 0, function* () {
77
100
  var _a;
101
+ // Trigger the in-app-browser redirect up front (mirroring getAddress) so
102
+ // that on mobile web an in-app-browser wallet redirects into its in-app
103
+ // browser instead of silently signing nothing. Delegating to the helper
104
+ // afterwards keeps signing to a single address request (no duplicate wallet
105
+ // prompt), since the helper resolves the address itself.
106
+ const didOpenInAppBrowser = this.openInAppBrowserIfRequired();
107
+ if (didOpenInAppBrowser) {
108
+ return undefined;
109
+ }
78
110
  return (_a = this.ethProviderHelper) === null || _a === void 0 ? void 0 : _a.signMessage(messageToSign);
79
111
  });
80
112
  }