@dynamic-labs/react-native-extension 4.91.1 → 4.91.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.
Files changed (3) hide show
  1. package/index.cjs +18 -13
  2. package/index.js +18 -13
  3. package/package.json +6 -6
package/index.cjs CHANGED
@@ -35,7 +35,7 @@ function _interopNamespace(e) {
35
35
  return Object.freeze(n);
36
36
  }
37
37
 
38
- var version = "4.91.1";
38
+ var version = "4.91.3";
39
39
 
40
40
  function _extends() {
41
41
  return _extends = Object.assign ? Object.assign.bind() : function (n) {
@@ -1026,6 +1026,14 @@ const setupEmbeddedWebView = ({
1026
1026
  const meta = phaseTimers.getMeta({
1027
1027
  phase
1028
1028
  });
1029
+ logger.instrument('Embedded webview load error', Object.assign({
1030
+ environmentId: core.environmentId,
1031
+ hostSdkSessionId: core.hostSdkSessionId,
1032
+ key: 'webview.embedded.load_error',
1033
+ phase,
1034
+ time: 0,
1035
+ webviewUrl: builtUrl.toString()
1036
+ }, extraMeta));
1029
1037
  core.initialization.error = new WebViewFailedToLoadError(Object.assign(Object.assign({}, meta), extraMeta));
1030
1038
  };
1031
1039
  const visibilityChannel = messageTransport.createRequestChannel(core.messageTransport);
@@ -1122,18 +1130,6 @@ const setupEmbeddedWebView = ({
1122
1130
  const onLoadErrorSub = native.addListener('onLoadError', event => {
1123
1131
  phaseTimers.recordEvent('native_error');
1124
1132
  logger.warn('EmbeddedWebView load error', event);
1125
- logger.instrument('Embedded webview load error', {
1126
- environmentId: core.environmentId,
1127
- errorCode: event.code,
1128
- errorDescription: event.description,
1129
- errorDomain: event.domain,
1130
- failedUrl: event.url,
1131
- hostSdkSessionId: core.hostSdkSessionId,
1132
- isProvisional: event.isProvisional,
1133
- key: 'webview.embedded.load_error',
1134
- time: 0,
1135
- webviewUrl: builtUrl.toString()
1136
- });
1137
1133
  raiseFailure('embedded_native_error', {
1138
1134
  nativeErrorCode: event.code,
1139
1135
  nativeErrorDescription: event.description,
@@ -1145,6 +1141,15 @@ const setupEmbeddedWebView = ({
1145
1141
  native.setDebuggingEnabled(_webviewDebuggingEnabled).catch(err => {
1146
1142
  logger.warn('EmbeddedWebView.setDebuggingEnabled failed', err);
1147
1143
  });
1144
+ // Arm the loading timer before calling setUrl so the pre-onLoadStart window
1145
+ // is covered. On cold boot the native 2s navigation-decision timeout can
1146
+ // fire before JS responds to onShouldStartLoad, silently cancelling the load
1147
+ // without emitting onLoadError — leaving onLoadStart (and therefore the
1148
+ // timer) never triggered. The onLoadStart handler clears and re-arms this
1149
+ // timer when it fires, so behaviour after onLoadStart is unchanged.
1150
+ loadingTimer = setTimeout(() => {
1151
+ raiseFailure('html_load');
1152
+ }, _loadingTimeoutMs);
1148
1153
  native.setUrl(builtUrl.toString()).catch(err => {
1149
1154
  logger.warn('EmbeddedWebView.setUrl failed', err);
1150
1155
  });
package/index.js CHANGED
@@ -13,7 +13,7 @@ import { createURL, getInitialURL, addEventListener, openURL } from 'expo-linkin
13
13
  import { openAuthSessionAsync } from 'expo-web-browser';
14
14
  import { createPasskey, PasskeyStamper } from '@turnkey/react-native-passkey-stamper';
15
15
 
16
- var version = "4.91.1";
16
+ var version = "4.91.3";
17
17
 
18
18
  function _extends() {
19
19
  return _extends = Object.assign ? Object.assign.bind() : function (n) {
@@ -1004,6 +1004,14 @@ const setupEmbeddedWebView = ({
1004
1004
  const meta = phaseTimers.getMeta({
1005
1005
  phase
1006
1006
  });
1007
+ logger.instrument('Embedded webview load error', Object.assign({
1008
+ environmentId: core.environmentId,
1009
+ hostSdkSessionId: core.hostSdkSessionId,
1010
+ key: 'webview.embedded.load_error',
1011
+ phase,
1012
+ time: 0,
1013
+ webviewUrl: builtUrl.toString()
1014
+ }, extraMeta));
1007
1015
  core.initialization.error = new WebViewFailedToLoadError(Object.assign(Object.assign({}, meta), extraMeta));
1008
1016
  };
1009
1017
  const visibilityChannel = createRequestChannel(core.messageTransport);
@@ -1100,18 +1108,6 @@ const setupEmbeddedWebView = ({
1100
1108
  const onLoadErrorSub = native.addListener('onLoadError', event => {
1101
1109
  phaseTimers.recordEvent('native_error');
1102
1110
  logger.warn('EmbeddedWebView load error', event);
1103
- logger.instrument('Embedded webview load error', {
1104
- environmentId: core.environmentId,
1105
- errorCode: event.code,
1106
- errorDescription: event.description,
1107
- errorDomain: event.domain,
1108
- failedUrl: event.url,
1109
- hostSdkSessionId: core.hostSdkSessionId,
1110
- isProvisional: event.isProvisional,
1111
- key: 'webview.embedded.load_error',
1112
- time: 0,
1113
- webviewUrl: builtUrl.toString()
1114
- });
1115
1111
  raiseFailure('embedded_native_error', {
1116
1112
  nativeErrorCode: event.code,
1117
1113
  nativeErrorDescription: event.description,
@@ -1123,6 +1119,15 @@ const setupEmbeddedWebView = ({
1123
1119
  native.setDebuggingEnabled(_webviewDebuggingEnabled).catch(err => {
1124
1120
  logger.warn('EmbeddedWebView.setDebuggingEnabled failed', err);
1125
1121
  });
1122
+ // Arm the loading timer before calling setUrl so the pre-onLoadStart window
1123
+ // is covered. On cold boot the native 2s navigation-decision timeout can
1124
+ // fire before JS responds to onShouldStartLoad, silently cancelling the load
1125
+ // without emitting onLoadError — leaving onLoadStart (and therefore the
1126
+ // timer) never triggered. The onLoadStart handler clears and re-arms this
1127
+ // timer when it fires, so behaviour after onLoadStart is unchanged.
1128
+ loadingTimer = setTimeout(() => {
1129
+ raiseFailure('html_load');
1130
+ }, _loadingTimeoutMs);
1126
1131
  native.setUrl(builtUrl.toString()).catch(err => {
1127
1132
  logger.warn('EmbeddedWebView.setUrl failed', err);
1128
1133
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/react-native-extension",
3
- "version": "4.91.1",
3
+ "version": "4.91.3",
4
4
  "main": "./index.cjs",
5
5
  "module": "./index.js",
6
6
  "types": "./src/index.d.ts",
@@ -18,11 +18,11 @@
18
18
  "@turnkey/react-native-passkey-stamper": "1.2.7",
19
19
  "@react-native-documents/picker": "^11.0.0",
20
20
  "react-native-fs": ">=2.20.0",
21
- "@dynamic-labs/assert-package-version": "4.91.1",
22
- "@dynamic-labs/client": "4.91.1",
23
- "@dynamic-labs/logger": "4.91.1",
24
- "@dynamic-labs/message-transport": "4.91.1",
25
- "@dynamic-labs/webview-messages": "4.91.1"
21
+ "@dynamic-labs/assert-package-version": "4.91.3",
22
+ "@dynamic-labs/client": "4.91.3",
23
+ "@dynamic-labs/logger": "4.91.3",
24
+ "@dynamic-labs/message-transport": "4.91.3",
25
+ "@dynamic-labs/webview-messages": "4.91.3"
26
26
  },
27
27
  "peerDependencies": {
28
28
  "react": ">=18.0.0 <20.0.0",