Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 32 additions & 8 deletions app/components/DetailPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -217,16 +217,26 @@ function DisplayDetailContent({
function BenchmarkDetailContent({ item }: { item: TimelineItemBenchmark }) {
const { payload } = item

const totalDuration = payload.steps[payload.steps.length - 1].time

return (
<View style={$detailContent()}>
{payload.steps.map((step, index) => {
return (
<DetailSection key={`${step.title}-${index}`} title={`Step: ${step.title}`}>
<Text style={$valueText()}>Time: {step.time}</Text>
<Text style={$valueText()}>Delta: {step.delta}</Text>
</DetailSection>
)
})}
<DetailSection title="Benchmark Data">
{payload.steps.map((step, index) => {
if (index === 0) return
const startPercent = Number((((step.time - step.delta) / totalDuration) * 100).toFixed(0))
const endPercent = 100 - Number(((step.time / totalDuration) * 100).toFixed(0))
return (
<View key={index} style={$benchmarkRow()}>
<View
style={[$benchmarkRowStep(), { left: `${startPercent}%`, right: `${endPercent}%` }]}
></View>
<Text style={$valueText()}>{step.title}</Text>
<Text style={$valueText()}>{step.delta.toFixed(3)}ms</Text>
</View>
)
})}
</DetailSection>
<DetailSection title="Payload">
<TreeViewWithProvider data={payload} />
</DetailSection>
Expand Down Expand Up @@ -485,6 +495,20 @@ const $sectionHeader = themed<ViewStyle>(({ colors, spacing }) => ({
borderBottomColor: colors.border,
}))

const $benchmarkRow = themed<ViewStyle>(() => ({
display: "flex",
alignItems: "center",
flexDirection: "row",
justifyContent: "space-between",
}))

const $benchmarkRowStep = themed<ViewStyle>(({ colors }) => ({
position: "absolute",
top: 0,
bottom: 0,
backgroundColor: colors.border,
}))

const $sectionTitle = themed<TextStyle>(({ colors, typography }) => ({
color: colors.mainText,
fontSize: typography.body,
Expand Down
7 changes: 3 additions & 4 deletions app/components/TimelineBenchmarkItem.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { CommandType, TimelineItemBenchmark } from "../types"
import { TimelineItem } from "./TimelineItem"

type TimelineBenchmarkItemProps = {
item: TimelineItemBenchmark
isSelected?: boolean
Expand All @@ -19,14 +18,14 @@ export function TimelineBenchmmarkItem({

if (item.type !== CommandType.Benchmark) return null

const { title } = payload
const totalDuration = payload.steps[payload.steps.length - 1].time

return (
<TimelineItem
title={"Benchmark"}
title={"BENCHMARK"}
date={new Date(date)}
deltaTime={deltaTime}
preview={title}
preview={`${payload.title} in ${totalDuration.toFixed(3)}ms`}
isImportant={important}
isTagged={important}
isSelected={isSelected}
Expand Down
2 changes: 1 addition & 1 deletion macos/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1779,7 +1779,7 @@ SPEC CHECKSUMS:
glog: b7594b792ee4e02ed1f44b01d046ca25fa713e3d
hermes-engine: b5c9cfbe6415f1b0b24759f2942c8f33e9af6347
IRNativeModules: 2fa316ab0ca91ec3e7bd4ba7ab2fc1f642fb5542
RCT-Folly: e8b53d8c0d2d9df4a6a8b0a368a1a91fc62a88cb
RCT-Folly: abec2d7f4af402b4957c44e86ceff8725b23c1b4
Copy link
Collaborator

@joshuayoes joshuayoes Oct 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: if we get CI setup on here, we should probably figure out how to get these files locked down.

I will say that they were stable after I pulled it down.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I had to resolve a conflict with this file.

RCTDeprecation: 9da6c2d8a3b1802142718283260fb06d702ddb07
RCTRequired: 574f9d55bda1d50676530b6c36bab4605612dfb6
RCTTypeSafety: 7de929c405e619c023116e7747118a2c5d5b2320
Expand Down
60 changes: 30 additions & 30 deletions macos/Reactotron.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,16 @@
514201522437B4B40078DB4F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 514201512437B4B40078DB4F /* Assets.xcassets */; };
514201552437B4B40078DB4F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 514201532437B4B40078DB4F /* Main.storyboard */; };
514201582437B4B40078DB4F /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 514201572437B4B40078DB4F /* main.m */; };
781C0A510276619A3FA0F1B5 /* libPods-Reactotron-macOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AF5D9503835923B7F2C9630F /* libPods-Reactotron-macOS.a */; };
831983FBC55C0EF9C65DB4A6 /* ProcessUtils.c in Sources */ = {isa = PBXBuildFile; fileRef = 4F3799E74F7D2A242D38CF99 /* ProcessUtils.c */; };
8DA502C4E6FBC60945564C52 /* libPods-Reactotron-macOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FCCC025C3DB5ACD98A129902 /* libPods-Reactotron-macOS.a */; };
E94E8A1F2DA73754008B52A6 /* SpaceGrotesk.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E94E8A1E2DA73754008B52A6 /* SpaceGrotesk.ttf */; };
EBA23295D3FDE3328174ADF1 /* BuildFile in Headers */ = {isa = PBXBuildFile; };
FF4C4719434907CDFF48ECE7 /* ProcessUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B174B7FD8393A730D51E178 /* ProcessUtils.h */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
2F26869F38EFC5D60D27F0F7 /* Pods-Reactotron-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Reactotron-macOS.debug.xcconfig"; path = "Target Support Files/Pods-Reactotron-macOS/Pods-Reactotron-macOS.debug.xcconfig"; sourceTree = "<group>"; };
2AC32FEAB6C823D7FAA18BFE /* Pods-Reactotron-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Reactotron-macOS.release.xcconfig"; path = "Target Support Files/Pods-Reactotron-macOS/Pods-Reactotron-macOS.release.xcconfig"; sourceTree = "<group>"; };
417D988DC189149043CB9C6B /* Pods-Reactotron-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Reactotron-macOS.debug.xcconfig"; path = "Target Support Files/Pods-Reactotron-macOS/Pods-Reactotron-macOS.debug.xcconfig"; sourceTree = "<group>"; };
4F3799E74F7D2A242D38CF99 /* ProcessUtils.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = ProcessUtils.c; path = ../../app/native/ProcessUtils/ProcessUtils.c; sourceTree = "<group>"; };
5030E1330EE236E4CA991AFD /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
514201492437B4B30078DB4F /* Reactotron.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Reactotron.app; sourceTree = BUILT_PRODUCTS_DIR; };
Expand All @@ -33,19 +34,18 @@
514201562437B4B40078DB4F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
514201572437B4B40078DB4F /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
514201592437B4B40078DB4F /* Reactotron.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Reactotron.entitlements; sourceTree = "<group>"; };
7B00874949429248D0F4E635 /* Pods-Reactotron-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Reactotron-macOS.release.xcconfig"; path = "Target Support Files/Pods-Reactotron-macOS/Pods-Reactotron-macOS.release.xcconfig"; sourceTree = "<group>"; };
8B174B7FD8393A730D51E178 /* ProcessUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ProcessUtils.h; path = ../../app/native/ProcessUtils/ProcessUtils.h; sourceTree = "<group>"; };
AF5D9503835923B7F2C9630F /* libPods-Reactotron-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Reactotron-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; };
E94E8A1E2DA73754008B52A6 /* SpaceGrotesk.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = SpaceGrotesk.ttf; path = ../assets/fonts/SpaceGrotesk.ttf; sourceTree = SOURCE_ROOT; };
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
FCCC025C3DB5ACD98A129902 /* libPods-Reactotron-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Reactotron-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
514201462437B4B30078DB4F /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
8DA502C4E6FBC60945564C52 /* libPods-Reactotron-macOS.a in Frameworks */,
781C0A510276619A3FA0F1B5 /* libPods-Reactotron-macOS.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand All @@ -55,8 +55,8 @@
01D19913288DA74FEB538384 /* Pods */ = {
isa = PBXGroup;
children = (
2F26869F38EFC5D60D27F0F7 /* Pods-Reactotron-macOS.debug.xcconfig */,
7B00874949429248D0F4E635 /* Pods-Reactotron-macOS.release.xcconfig */,
417D988DC189149043CB9C6B /* Pods-Reactotron-macOS.debug.xcconfig */,
2AC32FEAB6C823D7FAA18BFE /* Pods-Reactotron-macOS.release.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
Expand All @@ -65,7 +65,7 @@
isa = PBXGroup;
children = (
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
FCCC025C3DB5ACD98A129902 /* libPods-Reactotron-macOS.a */,
AF5D9503835923B7F2C9630F /* libPods-Reactotron-macOS.a */,
);
name = Frameworks;
sourceTree = "<group>";
Expand Down Expand Up @@ -144,14 +144,14 @@
isa = PBXNativeTarget;
buildConfigurationList = 5142015A2437B4B40078DB4F /* Build configuration list for PBXNativeTarget "Reactotron-macOS" */;
buildPhases = (
3A039F048D4DCF2C74F80FAA /* [CP] Check Pods Manifest.lock */,
D379D3EECB71C1F9751C49E8 /* [CP] Check Pods Manifest.lock */,
514201452437B4B30078DB4F /* Sources */,
514201462437B4B30078DB4F /* Frameworks */,
514201472437B4B30078DB4F /* Resources */,
381D8A6E24576A4E00465D17 /* Bundle React Native code and images */,
614A44CF57166CA8B6AD60B6 /* Headers */,
FE7BDCDD9BB38448236E0136 /* [CP] Embed Pods Frameworks */,
CC8C7D4D8457901D1C277BC9 /* [CP] Copy Pods Resources */,
83FF77371CEFDD8B5ECB691C /* [CP] Embed Pods Frameworks */,
A107699AF4EC552473C5FA0B /* [CP] Copy Pods Resources */,
);
buildRules = (
);
Expand Down Expand Up @@ -228,29 +228,25 @@
shellPath = /bin/sh;
shellScript = "export NODE_BINARY=node\n../node_modules/react-native-macos/scripts/react-native-xcode.sh\n";
};
3A039F048D4DCF2C74F80FAA /* [CP] Check Pods Manifest.lock */ = {
83FF77371CEFDD8B5ECB691C /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Reactotron-macOS/Pods-Reactotron-macOS-frameworks.sh",
"${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/macosx/hermes.framework",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Reactotron-macOS-checkManifestLockResult.txt",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Reactotron-macOS/Pods-Reactotron-macOS-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
CC8C7D4D8457901D1C277BC9 /* [CP] Copy Pods Resources */ = {
A107699AF4EC552473C5FA0B /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
Expand All @@ -276,22 +272,26 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Reactotron-macOS/Pods-Reactotron-macOS-resources.sh\"\n";
showEnvVarsInLog = 0;
};
FE7BDCDD9BB38448236E0136 /* [CP] Embed Pods Frameworks */ = {
D379D3EECB71C1F9751C49E8 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Reactotron-macOS/Pods-Reactotron-macOS-frameworks.sh",
"${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/macosx/hermes.framework",
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
"$(DERIVED_FILE_DIR)/Pods-Reactotron-macOS-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Reactotron-macOS/Pods-Reactotron-macOS-frameworks.sh\"\n";
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
Expand Down Expand Up @@ -325,7 +325,7 @@
/* Begin XCBuildConfiguration section */
5142015B2437B4B40078DB4F /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 2F26869F38EFC5D60D27F0F7 /* Pods-Reactotron-macOS.debug.xcconfig */;
baseConfigurationReference = 417D988DC189149043CB9C6B /* Pods-Reactotron-macOS.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
Expand All @@ -352,7 +352,7 @@
};
5142015C2437B4B40078DB4F /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7B00874949429248D0F4E635 /* Pods-Reactotron-macOS.release.xcconfig */;
baseConfigurationReference = 2AC32FEAB6C823D7FAA18BFE /* Pods-Reactotron-macOS.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
Expand Down