원클릭으로
axiom-app-store-connect-ref
Reference for App Store Connect crash analysis, TestFlight feedback, metrics dashboards, and data export workflows
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Reference for App Store Connect crash analysis, TestFlight feedback, metrics dashboards, and data export workflows
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Review pull requests and uncommitted code changes. Use when user asks to review a PR, review changes, review uncommitted code, review a diff, or similar code review requests. Activates for phrases like "review this PR", "review my changes", "review before I commit", "check this diff", "review diff", "review commit <sha>".
Skill on how to write a task. Use when user asks you to write a task (for Asana, Linear, Jira, Notion and equivalent). Also activates when user says "create task", "write task", or similar task creation workflow requests.
Create a GitHub pull request from the current branch. Use when user asks to create a PR, open a PR, submit a PR, push and create PR, or similar pull request workflows. Activates for phrases like "create a PR", "open a pull request", "submit PR", "push and PR", "make a PR for this", "open a draft PR".
Google Workspace CLI — Gmail, Calendar, Drive, Docs, Sheets, Slides, Tasks, Forms, Chat, People, Groups, Keep, Apps Script. TRIGGER when: user provides a Google Sheets/Docs/Drive/Slides URL, or needs to read/write/search any Google Workspace data. Use gog instead of WebFetch for all Google URLs (WebFetch will 401 on authenticated Google content). DEFAULT for spreadsheets: when a task involves reading or writing Google Sheets, use `gog sheets get` / `gog sheets update` / `gog sheets append` directly.
Synchronize AI agent skills, commands, configs, permissions, hooks, and instructions across Claude Code, Codex CLI, and other Agent Skills-compatible tools. Use when the user asks to pull skills from Claude into Codex, sync Codex work back to Claude, migrate agent commands, reconcile frontmatter, update permissions, or keep agent setup files in parity.
Work off tasks from an external project management tool (Asana, Linear, Jira, etc.). Use when the user says "pick a task", "next task", "what should I work on", "update task", "create task", "mark done", "task status", or similar PM workflow requests. Also activates when starting a new work session and needing to select work. ONLY load this skill when CLAUDE.md configures an external PMT with a tool value other than "none". Do NOT load this skill if the project uses markdown or txt files for task tracking (use the working-off-of-todo-files skill instead).
SOC 직업 분류 기준
| name | axiom-app-store-connect-ref |
| description | Reference for App Store Connect crash analysis, TestFlight feedback, metrics dashboards, and data export workflows |
| license | MIT |
| metadata | {"version":"1.0.0"} |
App Store Connect (ASC) provides crash reports, TestFlight feedback, and performance metrics for your apps. This reference covers how to navigate ASC to find and export crash data for analysis.
When to use ASC vs Xcode Organizer:
| Task | Best Tool |
|---|---|
| Quick crash triage during development | Xcode Organizer |
| Team-wide crash visibility | App Store Connect |
| TestFlight feedback with screenshots | App Store Connect |
| Historical metrics and trends | App Store Connect |
| Downloading crash logs for analysis | Either (ASC has better export) |
| Symbolication | Xcode Organizer |
App Store Connect
└── My Apps
└── [Your App]
└── Analytics
└── Crashes
Direct URL pattern: https://appstoreconnect.apple.com/analytics/app/[APP_ID]/crashes
┌─────────────────────────────────────────────────────────────────────────┐
│ [Filters: Platform ▼] [Version ▼] [Date Range ▼] [Compare ▼] │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Crash-Free Users Graph │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 99.5% ───────────────────────────────────────────────────── │ │
│ │ 99.0% ───────────────────────────────────────────────────── │ │
│ │ 98.5% ───────────────────────────────────────────────────── │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ Crash Count by Version │
│ ┌───────────────────────────────────────────────────────────────────┐ │
│ │ v2.1.0 ████████████ 1,234 crashes │ │
│ │ v2.0.5 ████████ 892 crashes │ │
│ │ v2.0.4 ███ 156 crashes │ │
│ └───────────────────────────────────────────────────────────────────┘ │
│ │
├─────────────────────────────────────────────────────────────────────────┤
│ Top Crash Signatures │
│ ┌───────────────────────────────────────────────────────────────────┐ │
│ │ 1. EXC_BAD_ACCESS in UserManager.currentUser.getter 45% share │ │
│ │ 2. EXC_CRASH in NetworkService.fetchData() 23% share │ │
│ │ 3. EXC_BREAKPOINT in Array subscript 12% share │ │
│ └───────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
| Metric | What It Means |
|---|---|
| Crash-Free Users | Percentage of daily active users who didn't experience a crash |
| Crash Count | Total number of crash reports received |
| Crash Rate | Crashes per 1,000 sessions |
| Affected Devices | Number of unique devices that crashed |
| Crash Signature | Grouped crashes with same stack trace |
| Filter | Use Case |
|---|---|
| Platform | iOS, iPadOS, macOS, watchOS, tvOS |
| Version | Drill into specific app versions |
| Date Range | Last 7/30/90 days or custom range |
| Compare | Compare crash rates between versions |
| Device | Filter by iPhone model, iPad, etc. |
| OS Version | Find OS-specific crashes |
Click a crash signature to see:
┌─────────────────────────────────────────────────────────────────────────┐
│ EXC_BAD_ACCESS in UserManager.currentUser.getter │
├─────────────────────────────────────────────────────────────────────────┤
│ Affected: 234 devices • 45% of crashes • First seen: Jan 10 │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Exception Information │
│ ─────────────────── │
│ Type: EXC_BAD_ACCESS (SIGSEGV) │
│ Codes: KERN_INVALID_ADDRESS at 0x0000000000000010 │
│ │
│ Crashed Thread (0) │
│ ───────────────── │
│ 0 MyApp UserManager.currentUser.getter + 45 │
│ 1 MyApp ProfileViewController.viewDidLoad() + 123 │
│ 2 UIKitCore -[UIViewController loadView] + 89 │
│ 3 UIKitCore -[UIViewController view] + 27 │
│ │
├─────────────────────────────────────────────────────────────────────────┤
│ Distribution │
│ ─────────────── │
│ iOS 17.2: ████████ 65% │
│ iOS 17.1: ████ 25% │
│ iOS 16.4: ██ 10% │
│ │
│ iPhone 15 Pro: ████████ 45% │
│ iPhone 14: ████ 30% │
│ iPhone 13: ██ 15% │
│ Other: █ 10% │
└─────────────────────────────────────────────────────────────────────────┘
crash-analyzer agent to parse: /axiom:analyze-crashApp Store Connect
└── My Apps
└── [Your App]
└── TestFlight
└── Feedback
Each feedback submission includes:
| Field | Description |
|---|---|
| Screenshot | What the tester saw (often most valuable) |
| Comment | Tester's description of the issue |
| App Version | Exact TestFlight build number |
| Device Model | iPhone 15 Pro Max, iPad Air, etc. |
| OS Version | iOS 17.2.1, etc. |
| Battery Level | Low battery can affect behavior |
| Available Disk | Low disk can cause write failures |
| Network Type | WiFi vs Cellular |
| Locale | Language and region settings |
| Timestamp | When submitted |
| Filter | Use Case |
|---|---|
| Build | Focus on specific TestFlight builds |
| Date | Recent feedback first |
| Has Screenshot | Find visual issues quickly |
TestFlight feedback is one-way. You cannot respond to testers through ASC. For follow-up:
App Store Connect
└── My Apps
└── [Your App]
└── Analytics
└── Metrics
| Category | What It Shows |
|---|---|
| Crashes | Crash-free users, crash count, top signatures |
| Hang Rate | Main thread hangs > 250ms |
| Disk Writes | Excessive disk I/O patterns |
| Launch Time | App startup performance |
| Memory | Peak memory usage, terminations |
| Battery | Energy usage during foreground/background |
| Scrolling | Scroll hitch rate |
The Metrics dashboard shows terminations that don't produce crash reports:
| Termination Type | Cause |
|---|---|
| Memory Limit | Jetsam killed app for memory pressure |
| CPU Limit (Background) | Exceeded background CPU quota |
| Launch Timeout | App took too long to launch |
| Background Task Timeout | Background task exceeded time limit |
Use the Compare filter to see:
For automated export, use the App Store Connect API:
# Get crash diagnostic insights
GET /v1/apps/{id}/perfPowerMetrics
# Authentication requires API key from ASC
# Users and Access → Keys → App Store Connect API
API capabilities:
| Endpoint | Data |
|---|---|
perfPowerMetrics | Performance and power metrics |
diagnosticSignatures | Crash signature aggregates |
diagnosticLogs | Individual crash logs |
betaTesters | TestFlight tester info |
betaFeedback | TestFlight feedback entries |
If using Xcode Cloud, crash data integrates with CI/CD:
| Priority | Criteria |
|---|---|
| P0 - Critical | >1% of users affected, data loss risk |
| P1 - High | >0.5% affected, user-facing impact |
| P2 - Medium | <0.5% affected, workaround exists |
| P3 - Low | Rare, edge case, no impact |
After each release:
| Cause | Fix |
|---|---|
| Too recent | Wait 24 hours for processing |
| No users yet | Need active installs to report |
| User opted out | Requires device analytics sharing |
| Build not distributed | Must be TestFlight or App Store |
ASC crashes should auto-symbolicate if you uploaded dSYMs during distribution. dSYM files contain the debug symbols that map memory addresses back to function names and line numbers.
Verify dSYMs were uploaded:
.xcarchive → "Show Package Contents"dSYMs/ folder contains .dSYM bundlesManual symbolication workflow:
# 1. Download .ips file from ASC (Crashes → signature → Download Logs)
# 2. Find the binary UUID from the crash report
grep --after-context=2 "Binary Images" crash.ips
# Look for: 0x100000000 - 0x100ffffff MyApp arm64 <UUID>
# 3. Locate matching dSYM on your machine
mdfind "com_apple_xcode_dsym_uuids == <UUID>"
# 4. Symbolicate an address
atos -arch arm64 -o MyApp.app.dSYM/Contents/Resources/DWARF/MyApp \
-l 0x100000000 0x100045abc
# Output: -[UserManager currentUser] (UserManager.m:42)
Common symbolication failures:
| Symptom | Cause | Fix |
|---|---|---|
| All addresses unsymbolicated | dSYMs not uploaded | Re-upload from Xcode Organizer |
| Only your code unsymbolicated | dSYM UUID mismatch | Rebuild from same commit |
| System frameworks unsymbolicated | Normal for device-specific | Use atos with device support files |
| Bitcode builds unsymbolicated | Apple recompiled binary | Download dSYMs from ASC: Xcode → Organizer → Download Debug Symbols |
See crash-analyzer agent for automated parsing: /axiom:analyze-crash
Both show the same data, but:
ASC dashboards show aggregated data. For granular, device-level diagnostics, use MetricKit to collect crash reports and performance data programmatically.
import MetricKit
class MetricsManager: NSObject, MXMetricManagerSubscriber {
static let shared = MetricsManager()
func start() {
MXMetricManager.shared.add(self)
}
// Called ~once per day with accumulated metrics
func didReceive(_ payloads: [MXMetricPayload]) {
for payload in payloads {
// Performance metrics
if let launchTime = payload.applicationLaunchMetrics {
print("Median launch: \(launchTime.histogrammedTimeToFirstDraw)")
}
if let hangRate = payload.applicationResponsivenessMetrics {
print("Hang rate: \(hangRate.histogrammedApplicationHangTime)")
}
}
}
// Crash and hang diagnostics (iOS 14+)
func didReceive(_ payloads: [MXDiagnosticPayload]) {
for payload in payloads {
// Crash diagnostics with full stack traces
if let crashes = payload.crashDiagnostics {
for crash in crashes {
print("Crash: \(crash.callStackTree)")
print("Signal: \(crash.signal)")
print("Exception: \(crash.exceptionType)")
}
}
// Hang diagnostics (iOS 16+)
if let hangs = payload.hangDiagnostics {
for hang in hangs {
print("Hang: \(hang.hangDuration) — \(hang.callStackTree)")
}
}
}
}
}
| Data | ASC Dashboard | MetricKit |
|---|---|---|
| Crash stack traces | Aggregated signatures | Per-device, full call stacks |
| Hang diagnostics | Hang rate percentage | Individual hang call stacks with duration |
| CPU/memory metrics | Aggregated histograms | Per-device histograms |
| Disk write exceptions | Total write count | Individual write spike call stacks |
| Custom data correlation | No | Combine with your own telemetry |
| Delivery timing | 24-48 hour delay | ~once daily on device |
Skills: axiom-testflight-triage (Xcode Organizer workflows)
Agents: crash-analyzer (automated crash log parsing)
Commands: /axiom:analyze-crash
WWDC: 2020-10076, 2020-10078, 2021-10203, 2021-10258
Docs: /app-store-connect/api, /xcode/diagnosing-issues-using-crash-reports-and-device-logs