react-native-ai-devtools 1.4.26 → 1.4.27

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.
@@ -3,15 +3,15 @@ import { getNextMessageId } from "./state.js";
3
3
  import { trackAppDetection } from "./telemetry.js";
4
4
  const DETECTION_TIMEOUT_MS = 3000;
5
5
  const DETECTION_DELAY_MS = 500;
6
- // Detection expression — returns a Promise (used with awaitPromise: true).
7
- // The .then() defers to a microtask so the RN module system is fully initialized.
6
+ // Detection expression — synchronous IIFE (awaitPromise does not work reliably with Hermes CDP).
7
+ // Runs after a 500ms delay (see scheduleAppDetection) so the RN module system is initialized.
8
8
  // Fallback paths for PlatformConstants:
9
9
  // 1. nativeModuleProxy.PlatformConstants (Bridgeless / New Arch)
10
10
  // 2. __turboModuleProxy('PlatformConstants') (TurboModules)
11
11
  // 3. __fbBatchedBridgeConfig.remoteModuleConfig (Old Arch Bridge — inlined constants)
12
12
  // 4. nativeRequireModuleConfig (Old Arch Bridge — lazy load)
13
13
  // Always returns arch/engine even when version is unavailable.
14
- const DETECTION_EXPRESSION = `Promise.resolve().then(function(){
14
+ const DETECTION_EXPRESSION = `(function(){
15
15
  var r={},c=null,p=globalThis.nativeModuleProxy;
16
16
  if(p&&p.PlatformConstants){c=typeof p.PlatformConstants.getConstants==='function'?p.PlatformConstants.getConstants():p.PlatformConstants}
17
17
  if(!c&&typeof globalThis.__turboModuleProxy==='function'){try{var tm=globalThis.__turboModuleProxy('PlatformConstants');if(tm)c=typeof tm.getConstants==='function'?tm.getConstants():tm}catch(e){}}
@@ -22,7 +22,7 @@ r.newArch=typeof globalThis.nativeFabricUIManager==='object';
22
22
  r.hermes=typeof globalThis.HermesInternal!=='undefined';
23
23
  var ep=p&&p.ExpoConstants;if(!ep&&typeof globalThis.__turboModuleProxy==='function'){try{ep=globalThis.__turboModuleProxy('ExpoConstants')}catch(e){}}
24
24
  if(ep){try{var ec=typeof ep.getConstants==='function'?ep.getConstants():ep;if(ec&&ec.expoConfig&&ec.expoConfig.sdkVersion)r.expoSdk=ec.expoConfig.sdkVersion}catch(e){}}
25
- return r})`;
25
+ return r})()`;
26
26
  function formatVersion(v) {
27
27
  return `${v.major}.${v.minor}.${v.patch}`;
28
28
  }
@@ -106,7 +106,6 @@ function detectApp(ws) {
106
106
  params: {
107
107
  expression: DETECTION_EXPRESSION,
108
108
  returnByValue: true,
109
- awaitPromise: true,
110
109
  userGesture: true,
111
110
  generatePreview: false,
112
111
  },
@@ -1 +1 @@
1
- {"version":3,"file":"appDetection.js","sourceRoot":"","sources":["../../src/core/appDetection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"appDetection.js","sourceRoot":"","sources":["../../src/core/appDetection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/core/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/core/executor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAc7D,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAK/D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA2B/D;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB,CAsDxF;AAsOD,wBAAsB,YAAY,CAC9B,UAAU,EAAE,MAAM,EAClB,YAAY,GAAE,OAAc,EAC5B,OAAO,GAAE,cAAmB,EAC5B,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,CA2G1B;AAGD,wBAAsB,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAkBhF;AAGD,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAsBjG;AAMD,wBAAsB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAqJzE;AA8DD,UAAU,aAAa;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAgPD;;;GAGG;AACH,wBAAsB,gBAAgB,CAClC,OAAO,GAAE;IACL,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACd,GACP,OAAO,CAAC,eAAe,CAAC,CAuP1B;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACjC,OAAO,GAAE;IACL,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACZ,GACP,OAAO,CAAC,eAAe,GAAG;IAAE,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC,CAsb/G;AA+BD;;;;;;;;;GASG;AACH,wBAAsB,0BAA0B,CAC5C,UAAU,EAAE,MAAM,EAClB,qBAAqB,EAAE,MAAM,EAC7B,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0CxB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAClC,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;IACL,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACd,GACP,OAAO,CAAC,eAAe,CAAC,CAiP1B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACL,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACd,GACP,OAAO,CAAC,eAAe,CAAC,CA0J1B;AAMD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,eAAe,CAAC,CA6Z3B;AAMD;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAqBtF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAqCzE;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA4ErF;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAChC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,GAAE;IACL,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACd,GACP,OAAO,CAAC,eAAe,CAAC,CA2M1B"}
@@ -158,11 +158,21 @@ async function executeExpressionCore(expression, awaitPromise, timeoutMs = 10000
158
158
  return { success: false, error: validation.error };
159
159
  }
160
160
  const cleanedExpression = validation.expression;
161
+ // Hermes CDP does not support awaitPromise — it serializes the Promise's
162
+ // internal fields (_A, _x, _y, _z) instead of waiting for resolution.
163
+ // When the caller wants awaitPromise, we handle it ourselves: wrap the
164
+ // expression to store the resolved value in a temp global, then poll.
165
+ if (awaitPromise) {
166
+ return executeWithManualAwait(app, cleanedExpression, timeoutMs);
167
+ }
168
+ return executeCDP(app, cleanedExpression, false, timeoutMs);
169
+ }
170
+ /**
171
+ * Execute a CDP Runtime.evaluate call (no promise awaiting).
172
+ */
173
+ function executeCDP(app, cleanedExpression, awaitPromise, timeoutMs) {
161
174
  const TIMEOUT_MS = timeoutMs;
162
175
  const currentMessageId = getNextMessageId();
163
- // Prepend global polyfill for Hermes compatibility
164
- // Runtime.evaluate returns the completion value of the last expression naturally,
165
- // so no IIFE wrapping is needed (similar to browser console behavior)
166
176
  const wrappedExpression = `${GLOBAL_POLYFILL} ${cleanedExpression}`;
167
177
  return new Promise((resolve) => {
168
178
  const timeoutId = setTimeout(() => {
@@ -217,6 +227,63 @@ async function executeExpressionCore(expression, awaitPromise, timeoutMs = 10000
217
227
  }
218
228
  });
219
229
  }
230
+ /**
231
+ * Hermes workaround for awaitPromise: execute the expression, and if it
232
+ * returns a Promise, store the resolved/rejected value in a temp global
233
+ * and read it back with a small number of spaced-out retries.
234
+ */
235
+ async function executeWithManualAwait(app, cleanedExpression, timeoutMs) {
236
+ const slotId = `__rn_dbg_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
237
+ // Wrap: run the expression, if result is thenable store resolved value in
238
+ // a temp global slot; otherwise store the sync value immediately.
239
+ const wrapperExpr = `(function(){
240
+ var __v=(${cleanedExpression});
241
+ if(__v&&typeof __v==='object'&&typeof __v.then==='function'){
242
+ globalThis['${slotId}']={s:'pending'};
243
+ __v.then(function(r){globalThis['${slotId}']={s:'ok',v:r}},function(e){globalThis['${slotId}']={s:'err',v:String(e)}});
244
+ return '__awaiting__'}
245
+ else{return __v}})()`;
246
+ const initial = await executeCDP(app, wrapperExpr, false, timeoutMs);
247
+ // If the expression didn't return a Promise, return the result directly
248
+ if (!initial.success || initial.result !== "__awaiting__") {
249
+ return initial;
250
+ }
251
+ // Read the settled value with a few spaced-out retries (not aggressive polling).
252
+ // Most Promises resolve within a microtask or a single event loop tick.
253
+ const RETRY_DELAYS_MS = [100, 300, 600, 1000, 2000, 3000];
254
+ const readExpr = `(function(){var s=globalThis['${slotId}'];if(!s||s.s==='pending')return '__pending__';delete globalThis['${slotId}'];return{status:s.s,value:s.v}})()`;
255
+ for (const delayMs of RETRY_DELAYS_MS) {
256
+ await new Promise((r) => setTimeout(r, delayMs));
257
+ const poll = await executeCDP(app, readExpr, false, 5000);
258
+ if (!poll.success)
259
+ return poll;
260
+ if (poll.result === "__pending__")
261
+ continue;
262
+ // The poll result comes through formatRemoteObject — objects are
263
+ // JSON.stringified, so we need to parse it back.
264
+ try {
265
+ const parsed = typeof poll.result === "string" ? JSON.parse(poll.result) : poll.result;
266
+ if (parsed?.status === "err") {
267
+ return { success: false, error: parsed.value || "Promise rejected" };
268
+ }
269
+ const value = parsed?.value;
270
+ return {
271
+ success: true,
272
+ result: value === undefined || value === null
273
+ ? String(value)
274
+ : typeof value === "object"
275
+ ? JSON.stringify(value, null, 2)
276
+ : String(value)
277
+ };
278
+ }
279
+ catch {
280
+ return poll;
281
+ }
282
+ }
283
+ // Cleanup on timeout
284
+ await executeCDP(app, `delete globalThis['${slotId}']`, false, 2000).catch(() => { });
285
+ return { success: false, error: "Timeout: Promise did not resolve within the time limit." };
286
+ }
220
287
  // Execute JavaScript in the connected React Native app with retry logic
221
288
  export async function executeInApp(expression, awaitPromise = true, options = {}, device) {
222
289
  const { maxRetries = 2, retryDelayMs = 1000, autoReconnect = true, timeoutMs = 10000 } = options;
@@ -798,29 +865,34 @@ export async function getComponentTree(options = {}) {
798
865
  }
799
866
 
800
867
  function extractLayoutStyles(style) {
801
- if (!style) return null;
802
- const merged = Array.isArray(style)
803
- ? Object.assign({}, ...style.filter(Boolean).map(s => typeof s === 'object' ? s : {}))
804
- : (typeof style === 'object' ? style : {});
805
-
806
- const layout = {};
807
- const layoutKeys = [
808
- 'padding', 'paddingTop', 'paddingBottom', 'paddingLeft', 'paddingRight',
809
- 'paddingHorizontal', 'paddingVertical',
810
- 'margin', 'marginTop', 'marginBottom', 'marginLeft', 'marginRight',
811
- 'marginHorizontal', 'marginVertical',
812
- 'width', 'height', 'minWidth', 'minHeight', 'maxWidth', 'maxHeight',
813
- 'flex', 'flexDirection', 'flexWrap', 'flexGrow', 'flexShrink',
814
- 'justifyContent', 'alignItems', 'alignSelf', 'alignContent',
815
- 'position', 'top', 'bottom', 'left', 'right',
816
- 'gap', 'rowGap', 'columnGap',
817
- 'borderWidth', 'borderTopWidth', 'borderBottomWidth', 'borderLeftWidth', 'borderRightWidth'
818
- ];
819
-
820
- for (const key of layoutKeys) {
821
- if (merged[key] !== undefined) layout[key] = merged[key];
822
- }
823
- return Object.keys(layout).length > 0 ? layout : null;
868
+ try {
869
+ if (!style) return null;
870
+ const merged = Array.isArray(style)
871
+ ? Object.assign({}, ...style.filter(Boolean).map(s => {
872
+ try { return typeof s === 'object' ? s : {}; }
873
+ catch { return {}; }
874
+ }))
875
+ : (typeof style === 'object' ? style : {});
876
+
877
+ const layout = {};
878
+ const layoutKeys = [
879
+ 'padding', 'paddingTop', 'paddingBottom', 'paddingLeft', 'paddingRight',
880
+ 'paddingHorizontal', 'paddingVertical',
881
+ 'margin', 'marginTop', 'marginBottom', 'marginLeft', 'marginRight',
882
+ 'marginHorizontal', 'marginVertical',
883
+ 'width', 'height', 'minWidth', 'minHeight', 'maxWidth', 'maxHeight',
884
+ 'flex', 'flexDirection', 'flexWrap', 'flexGrow', 'flexShrink',
885
+ 'justifyContent', 'alignItems', 'alignSelf', 'alignContent',
886
+ 'position', 'top', 'bottom', 'left', 'right',
887
+ 'gap', 'rowGap', 'columnGap',
888
+ 'borderWidth', 'borderTopWidth', 'borderBottomWidth', 'borderLeftWidth', 'borderRightWidth'
889
+ ];
890
+
891
+ for (const key of layoutKeys) {
892
+ if (merged[key] !== undefined) layout[key] = merged[key];
893
+ }
894
+ return Object.keys(layout).length > 0 ? layout : null;
895
+ } catch { return null; }
824
896
  }
825
897
 
826
898
  function walkFiber(fiber, depth) {
@@ -849,23 +921,29 @@ export async function getComponentTree(options = {}) {
849
921
  const props = {};
850
922
  for (const key of Object.keys(fiber.memoizedProps)) {
851
923
  if (key === 'children' || key === 'style') continue;
852
- const val = fiber.memoizedProps[key];
853
- if (typeof val === 'function') {
854
- props[key] = '[Function]';
855
- } else if (typeof val === 'object' && val !== null) {
856
- props[key] = Array.isArray(val) ? '[Array]' : '[Object]';
857
- } else {
858
- props[key] = val;
924
+ try {
925
+ const val = fiber.memoizedProps[key];
926
+ if (typeof val === 'function') {
927
+ props[key] = '[Function]';
928
+ } else if (typeof val === 'object' && val !== null) {
929
+ props[key] = Array.isArray(val) ? '[Array]' : '[Object]';
930
+ } else {
931
+ props[key] = val;
932
+ }
933
+ } catch {
934
+ props[key] = '[Animated Value]';
859
935
  }
860
936
  }
861
937
  if (Object.keys(props).length > 0) node.props = props;
862
938
  }
863
939
 
864
940
  // Include layout styles if requested
865
- if (includeStyles && fiber.memoizedProps?.style) {
866
- const layout = extractLayoutStyles(fiber.memoizedProps.style);
867
- if (layout) node.layout = layout;
868
- }
941
+ try {
942
+ if (includeStyles && fiber.memoizedProps?.style) {
943
+ const layout = extractLayoutStyles(fiber.memoizedProps.style);
944
+ if (layout) node.layout = layout;
945
+ }
946
+ } catch { /* animated style — skip */ }
869
947
 
870
948
  // Traverse children
871
949
  let child = fiber.child;
@@ -1232,31 +1310,36 @@ export async function getScreenLayout(options = {}) {
1232
1310
  }
1233
1311
 
1234
1312
  function extractLayoutStyles(style) {
1235
- if (!style) return null;
1236
- var merged = Array.isArray(style)
1237
- ? Object.assign.apply(null, [{}].concat(style.filter(Boolean).map(function(s) { return typeof s === 'object' ? s : {}; })))
1238
- : (typeof style === 'object' ? style : {});
1239
-
1240
- var layout = {};
1241
- var layoutKeys = [
1242
- 'padding', 'paddingTop', 'paddingBottom', 'paddingLeft', 'paddingRight',
1243
- 'paddingHorizontal', 'paddingVertical',
1244
- 'margin', 'marginTop', 'marginBottom', 'marginLeft', 'marginRight',
1245
- 'marginHorizontal', 'marginVertical',
1246
- 'width', 'height', 'minWidth', 'minHeight', 'maxWidth', 'maxHeight',
1247
- 'flex', 'flexDirection', 'flexWrap', 'flexGrow', 'flexShrink',
1248
- 'justifyContent', 'alignItems', 'alignSelf', 'alignContent',
1249
- 'position', 'top', 'bottom', 'left', 'right',
1250
- 'gap', 'rowGap', 'columnGap',
1251
- 'borderWidth', 'borderTopWidth', 'borderBottomWidth', 'borderLeftWidth', 'borderRightWidth',
1252
- 'backgroundColor', 'borderColor', 'borderRadius',
1253
- 'zIndex', 'elevation'
1254
- ];
1255
-
1256
- for (var k = 0; k < layoutKeys.length; k++) {
1257
- if (merged[layoutKeys[k]] !== undefined) layout[layoutKeys[k]] = merged[layoutKeys[k]];
1258
- }
1259
- return Object.keys(layout).length > 0 ? layout : null;
1313
+ try {
1314
+ if (!style) return null;
1315
+ var merged = Array.isArray(style)
1316
+ ? Object.assign.apply(null, [{}].concat(style.filter(Boolean).map(function(s) {
1317
+ try { return typeof s === 'object' ? s : {}; }
1318
+ catch(e) { return {}; }
1319
+ })))
1320
+ : (typeof style === 'object' ? style : {});
1321
+
1322
+ var layout = {};
1323
+ var layoutKeys = [
1324
+ 'padding', 'paddingTop', 'paddingBottom', 'paddingLeft', 'paddingRight',
1325
+ 'paddingHorizontal', 'paddingVertical',
1326
+ 'margin', 'marginTop', 'marginBottom', 'marginLeft', 'marginRight',
1327
+ 'marginHorizontal', 'marginVertical',
1328
+ 'width', 'height', 'minWidth', 'minHeight', 'maxWidth', 'maxHeight',
1329
+ 'flex', 'flexDirection', 'flexWrap', 'flexGrow', 'flexShrink',
1330
+ 'justifyContent', 'alignItems', 'alignSelf', 'alignContent',
1331
+ 'position', 'top', 'bottom', 'left', 'right',
1332
+ 'gap', 'rowGap', 'columnGap',
1333
+ 'borderWidth', 'borderTopWidth', 'borderBottomWidth', 'borderLeftWidth', 'borderRightWidth',
1334
+ 'backgroundColor', 'borderColor', 'borderRadius',
1335
+ 'zIndex', 'elevation'
1336
+ ];
1337
+
1338
+ for (var k = 0; k < layoutKeys.length; k++) {
1339
+ if (merged[layoutKeys[k]] !== undefined) layout[layoutKeys[k]] = merged[layoutKeys[k]];
1340
+ }
1341
+ return Object.keys(layout).length > 0 ? layout : null;
1342
+ } catch(e) { return null; }
1260
1343
  }
1261
1344
 
1262
1345
  var elements = [];
@@ -1277,13 +1360,15 @@ export async function getScreenLayout(options = {}) {
1277
1360
  if (!displayName) continue;
1278
1361
  if (componentsOnly && !info.customName) continue;
1279
1362
 
1280
- var style = fiber.memoizedProps ? fiber.memoizedProps.style : null;
1363
+ var style = null;
1364
+ try { style = fiber.memoizedProps ? fiber.memoizedProps.style : null; } catch {}
1281
1365
  var layout = extractLayoutStyles(style);
1282
1366
 
1283
1367
  // Get text content — use pre-collected text from step 1, or fall back to host fiber
1284
1368
  var textContent = info.text || null;
1285
1369
  if (!textContent && (info.hostName === 'RCTText' || info.hostName === 'Text')) {
1286
- var children = fiber.memoizedProps ? fiber.memoizedProps.children : null;
1370
+ var children = null;
1371
+ try { children = fiber.memoizedProps ? fiber.memoizedProps.children : null; } catch {}
1287
1372
  if (typeof children === 'string') textContent = children;
1288
1373
  else if (typeof children === 'number') textContent = String(children);
1289
1374
  }
@@ -1506,11 +1591,16 @@ export async function inspectComponent(componentName, options = {}) {
1506
1591
  }
1507
1592
 
1508
1593
  function extractStyles(style) {
1509
- if (!style) return null;
1510
- const merged = Array.isArray(style)
1511
- ? Object.assign({}, ...style.filter(Boolean).map(s => typeof s === 'object' ? s : {}))
1512
- : (typeof style === 'object' ? style : {});
1513
- return Object.keys(merged).length > 0 ? merged : null;
1594
+ try {
1595
+ if (!style) return null;
1596
+ const merged = Array.isArray(style)
1597
+ ? Object.assign({}, ...style.filter(Boolean).map(s => {
1598
+ try { return typeof s === 'object' ? s : {}; }
1599
+ catch { return {}; }
1600
+ }))
1601
+ : (typeof style === 'object' ? style : {});
1602
+ return Object.keys(merged).length > 0 ? merged : null;
1603
+ } catch { return { _note: '[Contains animated styles]' }; }
1514
1604
  }
1515
1605
 
1516
1606
  function serializeValue(val, depth = 0) {
@@ -1528,7 +1618,11 @@ export async function inspectComponent(componentName, options = {}) {
1528
1618
  if (keys.length > 20) return '[Object(' + keys.length + ' keys)]';
1529
1619
  const result = {};
1530
1620
  for (const k of keys) {
1531
- result[k] = serializeValue(val[k], depth + 1);
1621
+ try {
1622
+ result[k] = serializeValue(val[k], depth + 1);
1623
+ } catch {
1624
+ result[k] = '[Animated Value]';
1625
+ }
1532
1626
  }
1533
1627
  return result;
1534
1628
  }
@@ -1596,42 +1690,56 @@ export async function inspectComponent(componentName, options = {}) {
1596
1690
  const props = {};
1597
1691
  for (const key of Object.keys(fiber.memoizedProps)) {
1598
1692
  if (key === 'children') continue;
1599
- props[key] = serializeValue(fiber.memoizedProps[key]);
1693
+ try {
1694
+ props[key] = serializeValue(fiber.memoizedProps[key]);
1695
+ } catch {
1696
+ props[key] = '[Animated Value]';
1697
+ }
1600
1698
  }
1601
1699
  result.props = props;
1602
1700
  }
1603
1701
 
1604
1702
  // Style separately for clarity
1605
- if (fiber.memoizedProps?.style) {
1606
- result.style = extractStyles(fiber.memoizedProps.style);
1703
+ try {
1704
+ if (fiber.memoizedProps?.style) {
1705
+ result.style = extractStyles(fiber.memoizedProps.style);
1706
+ }
1707
+ } catch {
1708
+ result.style = { _note: '[Contains animated styles]' };
1607
1709
  }
1608
1710
 
1609
1711
  // State (for hooks, this is a linked list)
1610
1712
  if (includeState && fiber.memoizedState) {
1611
1713
  // Simplified hook value serialization
1612
1714
  function serializeHookValue(val, depth = 0) {
1613
- if (depth > 2) return '[...]';
1614
- if (val === null || val === undefined) return val;
1615
- if (typeof val === 'function') return '[Function]';
1616
- if (typeof val !== 'object') return val;
1617
- // Skip React internal structures (effects, refs with destroy/create)
1618
- if (val.create && val.destroy !== undefined) return '[Effect]';
1619
- if (val.inst && val.deps) return '[Effect]';
1620
- if (val.current !== undefined && Object.keys(val).length === 1) {
1621
- // Ref object - just show current value
1622
- return { current: serializeHookValue(val.current, depth + 1) };
1623
- }
1624
- if (Array.isArray(val)) {
1625
- if (val.length > 5) return '[Array(' + val.length + ')]';
1626
- return val.slice(0, 5).map(v => serializeHookValue(v, depth + 1));
1627
- }
1628
- const keys = Object.keys(val);
1629
- if (keys.length > 10) return '[Object(' + keys.length + ' keys)]';
1630
- const result = {};
1631
- for (const k of keys.slice(0, 10)) {
1632
- result[k] = serializeHookValue(val[k], depth + 1);
1633
- }
1634
- return result;
1715
+ try {
1716
+ if (depth > 2) return '[...]';
1717
+ if (val === null || val === undefined) return val;
1718
+ if (typeof val === 'function') return '[Function]';
1719
+ if (typeof val !== 'object') return val;
1720
+ // Skip React internal structures (effects, refs with destroy/create)
1721
+ if (val.create && val.destroy !== undefined) return '[Effect]';
1722
+ if (val.inst && val.deps) return '[Effect]';
1723
+ if (val.current !== undefined && Object.keys(val).length === 1) {
1724
+ // Ref object - just show current value
1725
+ return { current: serializeHookValue(val.current, depth + 1) };
1726
+ }
1727
+ if (Array.isArray(val)) {
1728
+ if (val.length > 5) return '[Array(' + val.length + ')]';
1729
+ return val.slice(0, 5).map(v => serializeHookValue(v, depth + 1));
1730
+ }
1731
+ const keys = Object.keys(val);
1732
+ if (keys.length > 10) return '[Object(' + keys.length + ' keys)]';
1733
+ const result = {};
1734
+ for (const k of keys.slice(0, 10)) {
1735
+ try {
1736
+ result[k] = serializeHookValue(val[k], depth + 1);
1737
+ } catch {
1738
+ result[k] = '[Animated Value]';
1739
+ }
1740
+ }
1741
+ return result;
1742
+ } catch { return '[Animated Value]'; }
1635
1743
  }
1636
1744
 
1637
1745
  // For function components with hooks
@@ -1717,20 +1825,25 @@ export async function findComponents(pattern, options = {}) {
1717
1825
  }
1718
1826
 
1719
1827
  function extractLayoutStyles(style) {
1720
- if (!style) return null;
1721
- const merged = Array.isArray(style)
1722
- ? Object.assign({}, ...style.filter(Boolean).map(s => typeof s === 'object' ? s : {}))
1723
- : (typeof style === 'object' ? style : {});
1724
-
1725
- const layout = {};
1726
- const keys = ['padding', 'paddingTop', 'paddingBottom', 'paddingLeft', 'paddingRight',
1727
- 'paddingHorizontal', 'paddingVertical', 'margin', 'marginTop', 'marginBottom',
1728
- 'marginLeft', 'marginRight', 'marginHorizontal', 'marginVertical',
1729
- 'width', 'height', 'flex', 'flexDirection', 'justifyContent', 'alignItems'];
1730
- for (const k of keys) {
1731
- if (merged[k] !== undefined) layout[k] = merged[k];
1732
- }
1733
- return Object.keys(layout).length > 0 ? layout : null;
1828
+ try {
1829
+ if (!style) return null;
1830
+ const merged = Array.isArray(style)
1831
+ ? Object.assign({}, ...style.filter(Boolean).map(s => {
1832
+ try { return typeof s === 'object' ? s : {}; }
1833
+ catch { return {}; }
1834
+ }))
1835
+ : (typeof style === 'object' ? style : {});
1836
+
1837
+ const layout = {};
1838
+ const keys = ['padding', 'paddingTop', 'paddingBottom', 'paddingLeft', 'paddingRight',
1839
+ 'paddingHorizontal', 'paddingVertical', 'margin', 'marginTop', 'marginBottom',
1840
+ 'marginLeft', 'marginRight', 'marginHorizontal', 'marginVertical',
1841
+ 'width', 'height', 'flex', 'flexDirection', 'justifyContent', 'alignItems'];
1842
+ for (const k of keys) {
1843
+ if (merged[k] !== undefined) layout[k] = merged[k];
1844
+ }
1845
+ return Object.keys(layout).length > 0 ? layout : null;
1846
+ } catch { return null; }
1734
1847
  }
1735
1848
 
1736
1849
  const results = [];