native-app-performance

Profile native macOS/iOS apps with xctrace and rank hotspots via CLI.

1|1|Updated Jun 2, 2025
One-click install
npx skills add https://github.com/BumpyClock/dotfiles --skill native-app-performance
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: native-app-performance
Source: https://github.com/BumpyClock/dotfiles/tree/main/.ai_agents/skills/native-app-performance
Command: npx skills add https://github.com/BumpyClock/dotfiles --skill native-app-performance

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve?

Native macOS/iOS app performance profiling is streamlined using xctrace and CLI-only analysis to identify hotspots from Instruments traces without opening Instruments UI.

Core Features & Use Cases

  • Time Profiler recording via xctrace (attach or launch) to generate .trace traces.
  • Time-sample extraction, symbolication, and hotspot ranking without Instruments UI.
  • Real-world use: profile a shipping app to reduce hotspots in the UI thread by X%.

Quick Start

Start a Time Profiler trace on your target app and receive a hotspot-ranked report produced entirely through CLI analysis.

Frequently Asked Questions about native-app-performance

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I profile a native macOS app to find performance hotspots without opening Instruments?

You can profile native macOS app performance hotspots without launching the Instruments UI by using the xctrace CLI tool. This workflow records Time Profiler traces, extracts samples, and ranks hotspots entirely through command-line analysis.

Can I use xctrace to attach to a running iOS app for Time Profiler recording?

Yes, xctrace supports both attaching to a running process and launching an app directly to generate Time Profiler .trace files. This allows you to capture performance data for native iOS apps without needing the Instruments graphical interface.

How do I symbolicate addresses from a Time Profiler trace using CLI tools?

To symbolicate addresses from Time Profiler traces via CLI, you parse load addresses using vmmap and vmsize via otool, then apply atos symbolication. This translates raw addresses into function names to identify exact performance hotspots.

What is the best way to automate native app performance analysis in a CI pipeline?

Automating native app performance analysis requires a CLI workflow using xctrace to record traces, vmmap and otool to extract load addresses, and atos for symbolication. This generates a ranked hotspot list without Instruments UI interaction.

Do I need the Instruments UI to extract and rank time samples from a .trace file?

No, you do not need the Instruments UI to extract and rank time samples. The CLI workflow uses xctrace to record traces and command-line tools to extract samples, symbolicate addresses, and generate a ranked hotspot report independently.

Why does my CLI symbolication fail when analyzing native app hotspots?

CLI symbolication of native app hotspots fails when load addresses are incorrect. You must extract accurate load addresses using vmmap and parse vmsize with otool before applying atos symbolication to ensure addresses map correctly to function names.