From 8dd1545d73ef3d3006ab346f19299d034d1d6fde Mon Sep 17 00:00:00 2001 From: Szymon Chmal Date: Fri, 6 Mar 2026 09:15:51 +0100 Subject: [PATCH 1/4] fix: wrong StackFrame type picked by tsc --- src/react-native.d.ts | 9 +++++++++ src/react-native/get-rendered-by.ts | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 src/react-native.d.ts diff --git a/src/react-native.d.ts b/src/react-native.d.ts new file mode 100644 index 0000000..b3ce468 --- /dev/null +++ b/src/react-native.d.ts @@ -0,0 +1,9 @@ +declare module "react-native/Libraries/Core/Devtools/parseErrorStack" { + export type ReactNativeGrabStackFrame = { + column: number | null | undefined; + file: string | null | undefined; + lineNumber: number | null | undefined; + methodName: string; + collapse: boolean; + }; +} diff --git a/src/react-native/get-rendered-by.ts b/src/react-native/get-rendered-by.ts index cae2103..9584080 100644 --- a/src/react-native/get-rendered-by.ts +++ b/src/react-native/get-rendered-by.ts @@ -1,5 +1,5 @@ import symbolicateStackTrace from "react-native/Libraries/Core/Devtools/symbolicateStackTrace"; -import type { StackFrame } from "react-native/Libraries/Core/Devtools/parseErrorStack"; +import type { ReactNativeGrabStackFrame as StackFrame } from "react-native/Libraries/Core/Devtools/parseErrorStack"; import { ReactNativeFiberNode } from "./types"; export type RenderedByFrame = { From ed3acad5517d8209929518f1632af07bc631cb5f Mon Sep 17 00:00:00 2001 From: Szymon Chmal Date: Fri, 6 Mar 2026 11:39:29 +0100 Subject: [PATCH 2/4] Fix StackFrame collapse typing compatibility --- src/react-native/get-rendered-by.ts | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/react-native/get-rendered-by.ts b/src/react-native/get-rendered-by.ts index 9584080..f7874c8 100644 --- a/src/react-native/get-rendered-by.ts +++ b/src/react-native/get-rendered-by.ts @@ -1,5 +1,4 @@ import symbolicateStackTrace from "react-native/Libraries/Core/Devtools/symbolicateStackTrace"; -import type { ReactNativeGrabStackFrame as StackFrame } from "react-native/Libraries/Core/Devtools/parseErrorStack"; import { ReactNativeFiberNode } from "./types"; export type RenderedByFrame = { @@ -10,6 +9,22 @@ export type RenderedByFrame = { collapse: boolean; }; +type SymbolicatedStackFrame = { + methodName: string; + file: string | null | undefined; + lineNumber: number | null | undefined; + column: number | null | undefined; + collapse?: boolean; +}; + +type MetroStackFrame = { + methodName: string; + file: string | null | undefined; + lineNumber: number | null | undefined; + column: number | null | undefined; + collapse: boolean; +}; + type V8CallSite = { getFunctionName(): string | null; getFileName(): string | null; @@ -158,7 +173,7 @@ const getRenderedByFrames = (fiber: any): RenderedByFrame[] => { return result; }; -const toMetroStackFrame = (frame: RenderedByFrame): StackFrame => { +const toMetroStackFrame = (frame: RenderedByFrame): MetroStackFrame => { return { methodName: frame.name, file: frame.file ?? undefined, @@ -175,7 +190,8 @@ export const getRenderedBy = async (fiber: ReactNativeFiberNode): Promise; + return compatibleStack .filter((sf) => sf.collapse !== true) .map((sf, i) => ({ name: frames[i]?.name ?? sf.methodName, From 8a5f2e039af8c2aeb058206aff54d58f1bdbf39f Mon Sep 17 00:00:00 2001 From: Szymon Chmal Date: Fri, 6 Mar 2026 11:39:38 +0100 Subject: [PATCH 3/4] Remove unused react-native type override --- src/react-native.d.ts | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 src/react-native.d.ts diff --git a/src/react-native.d.ts b/src/react-native.d.ts deleted file mode 100644 index b3ce468..0000000 --- a/src/react-native.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -declare module "react-native/Libraries/Core/Devtools/parseErrorStack" { - export type ReactNativeGrabStackFrame = { - column: number | null | undefined; - file: string | null | undefined; - lineNumber: number | null | undefined; - methodName: string; - collapse: boolean; - }; -} From 1aff7d6532d987000d5dcf7040be035537d19814 Mon Sep 17 00:00:00 2001 From: Szymon Chmal Date: Fri, 6 Mar 2026 11:46:52 +0100 Subject: [PATCH 4/4] Allow vitest to pass when no tests are found --- vitest.config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/vitest.config.ts b/vitest.config.ts index e975a31..bb7f687 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -3,6 +3,7 @@ import { defineConfig } from "vitest/config"; export default defineConfig({ test: { environment: "node", + passWithNoTests: true, setupFiles: ["./src/react-native/__tests__/setup.ts"], }, });