Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
cap-go avatar

Ios Android Logs

  • 524 installs
  • 57 repo stars
  • Updated July 13, 2026
  • cap-go/capgo-skills

ios-android-logs is a Claude Code skill that captures and interprets iOS and Android device logs for developers troubleshooting Capacitor app crashes, plugin errors, and production incidents.

About

ios-android-logs is a mobile debugging skill from cap-go/capgo-skills that helps developers capture and interpret iOS and Android device logs for Capacitor hybrid apps. The skill guides log collection from connected devices or simulators and surfaces patterns relevant to Capacitor plugin failures, native bridge errors, and user-reported production crashes. Developers reach for ios-android-logs when standard browser devtools miss native-layer failures or when support tickets reference on-device behavior that needs adb or Xcode console output.

  • Xcode and Android Studio log capture
  • Device and simulator log filtering
  • Crash and ANR trace reading
  • Capacitor-native log correlation
  • Incident reproduction from logs

Ios Android Logs by the numbers

  • 524 all-time installs (skills.sh)
  • Ranked #82 of 596 Debugging skills by installs in the Skillselion catalog
  • Data as of Aug 1, 2026 (Skillselion catalog sync)
npx skills add https://github.com/cap-go/capgo-skills --skill ios-android-logs

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs524
repo stars57
Last updatedJuly 13, 2026
Repositorycap-go/capgo-skills

How do you debug Capacitor app crashes from device logs?

Capture and interpret iOS and Android device logs for Capacitor apps to troubleshoot crashes, plugin errors, and production incidents reported by users.

Who is it for?

Capacitor mobile developers investigating native-layer crashes or plugin errors that web-only debugging cannot reproduce.

Skip if: Pure web apps without Capacitor native shells or backend-only services with no mobile client.

When should I use this skill?

A Capacitor app shows on-device crashes, plugin errors, or production incidents and native iOS or Android logs are needed for diagnosis.

What you get

Interpreted iOS and Android log excerpts identifying Capacitor plugin failures, native bridge errors, and crash stack traces.

  • Captured device log excerpts
  • Crash and plugin error diagnosis

Files

SKILL.mdMarkdownGitHub ↗

iOS and Android Device Logs

Complete guide to viewing and filtering device logs on iOS and Android.

When to Use This Skill

  • User needs to see device logs
  • User is debugging crashes
  • User wants to filter logs by app
  • User needs real-time log streaming
  • User asks "how to see logs"

Quick Commands

# iOS - Stream logs from connected device
xcrun devicectl device log stream --device <UUID>

# iOS - Stream from simulator
xcrun simctl spawn booted log stream

# Android - Stream all logs
adb logcat

# Android - Filter by package
adb logcat --pid=$(adb shell pidof com.yourapp.id)

iOS Logs

Method 1: Console.app (GUI)

1. Open Console.app (Applications > Utilities) 2. Select your device in sidebar 3. Click "Start Streaming" 4. Use search to filter:

  • By process: process:YourApp
  • By subsystem: subsystem:com.yourapp
  • By message: "error"

Method 2: devicectl (CLI - Recommended)

# List connected devices
xcrun devicectl list devices

# Stream logs from specific device
xcrun devicectl device log stream --device <DEVICE_UUID>

# Stream with predicate filter
xcrun devicectl device log stream --device <DEVICE_UUID> \
  --predicate 'process == "YourApp"'

# Stream specific log levels
xcrun devicectl device log stream --device <DEVICE_UUID> \
  --level error

# Save to file
xcrun devicectl device log stream --device <DEVICE_UUID> \
  --predicate 'process == "YourApp"' > app_logs.txt

Method 3: simctl for Simulators

# Stream logs from booted simulator
xcrun simctl spawn booted log stream

# Filter by process
xcrun simctl spawn booted log stream --predicate 'process == "YourApp"'

# Filter by subsystem
xcrun simctl spawn booted log stream --predicate 'subsystem == "com.yourapp"'

# Show only errors
xcrun simctl spawn booted log stream --level error

# Combine filters
xcrun simctl spawn booted log stream \
  --predicate 'process == "YourApp" AND messageType == error'

Method 4: Xcode Device Logs

1. Window > Devices and Simulators 2. Select device 3. Click "Open Console" 4. Or: View device logs for crash reports

iOS Log Predicate Examples

# Process name
--predicate 'process == "YourApp"'

# Contains text
--predicate 'eventMessage contains "error"'

# Subsystem
--predicate 'subsystem == "com.yourapp.plugin"'

# Category
--predicate 'category == "network"'

# Log level
--predicate 'messageType == error'

# Combined
--predicate 'process == "YourApp" AND messageType >= error'

# Time-based (last 5 minutes)
--predicate 'timestamp > now - 5m'

iOS Log Levels

LevelDescription
defaultDefault messages
infoInformational
debugDebug (hidden by default)
errorError conditions
faultFault/critical

Android Logs

Method 1: adb logcat (CLI)

# Basic log stream
adb logcat

# Clear logs first, then stream
adb logcat -c && adb logcat

# Filter by tag
adb logcat -s MyTag:D

# Filter by priority
adb logcat *:E  # Only errors and above

# Filter by package name
adb logcat --pid=$(adb shell pidof com.yourapp.id)

# Filter by multiple tags
adb logcat -s "MyPlugin:D" "Capacitor:I"

# Save to file
adb logcat > logs.txt

# Save to file with timestamp
adb logcat -v time > logs.txt

Method 2: Android Studio Logcat (GUI)

1. View > Tool Windows > Logcat 2. Use filter dropdown:

  • Package: package:com.yourapp
  • Tag: tag:MyPlugin
  • Level: level:error

3. Create saved filters for quick access

Method 3: pidcat (Better CLI Tool)

# Install pidcat
pip install pidcat

# Stream logs for package
pidcat com.yourapp.id

# With tag filter
pidcat -t MyPlugin com.yourapp.id

Android Log Priority Levels

LetterPriority
VVerbose
DDebug
IInfo
WWarn
EError
FFatal
SSilent

adb logcat Format Options

# Different output formats
adb logcat -v brief     # Default
adb logcat -v process   # PID only
adb logcat -v tag       # Tag only
adb logcat -v time      # With timestamp
adb logcat -v threadtime # With thread and time
adb logcat -v long      # All metadata

# Colorized output
adb logcat -v color

# Show recent logs (last N lines)
adb logcat -d -t 100

# Show logs since timestamp
adb logcat -v time -T "01-25 10:00:00.000"

Common Android Filters

# Capacitor core logs
adb logcat -s "Capacitor:*"

# Plugin-specific logs
adb logcat -s "CapacitorNativeBiometric:*"

# WebView logs (JavaScript console)
adb logcat -s "chromium:*"

# JavaScript errors
adb logcat | grep -i "js error\|uncaught"

# Crash logs
adb logcat | grep -iE "fatal|crash|exception"

# Network logs
adb logcat -s "OkHttp:*" "NetworkSecurityConfig:*"

Viewing Crash Logs

iOS Crash Logs

# Copy crash logs from device
xcrun devicectl device copy crashlog --device <UUID> ./crashes/

# View in Console.app
# User Diagnostics Reports section

# Or find at:
# Device: Settings > Privacy > Analytics & Improvements > Analytics Data
# Mac: ~/Library/Logs/DiagnosticReports/

Android Crash Logs

# Get tombstone (native crash)
adb shell cat /data/tombstones/tombstone_00

# Get ANR traces
adb pull /data/anr/traces.txt

# Get bugreport (comprehensive)
adb bugreport > bugreport.zip

MCP Integration

Use MCP tools to fetch logs programmatically:

// Example MCP tool for fetching iOS logs
const logs = await mcp.ios.streamLogs({
  device: 'booted',
  predicate: 'process == "YourApp"',
  level: 'debug',
});

// Example MCP tool for Android logs
const androidLogs = await mcp.android.logcat({
  package: 'com.yourapp.id',
  level: 'D',
});

Log Parsing Tips

Extract JavaScript Errors

# iOS - JavaScript console logs
xcrun simctl spawn booted log stream \
  --predicate 'eventMessage contains "JS:"'

# Android - WebView console
adb logcat chromium:I *:S | grep "console"

Filter Network Requests

# iOS
xcrun simctl spawn booted log stream \
  --predicate 'subsystem == "com.apple.network"'

# Android
adb logcat -s "NetworkSecurityConfig:*" "OkHttp:*"

Monitor Memory

# iOS - Memory pressure
xcrun simctl spawn booted log stream \
  --predicate 'eventMessage contains "memory"'

# Android - Memory info
adb shell dumpsys meminfo com.yourapp.id

Troubleshooting

Issue: No Logs Showing

iOS:

  • Ensure device is trusted: Xcode > Window > Devices
  • Try restarting log stream
  • Check Console.app filters

Android:

  • Enable USB debugging
  • Run adb devices to verify connection
  • Try adb kill-server && adb start-server

Issue: Too Many Logs

Use filters:

# iOS - Only your app
--predicate 'process == "YourApp" AND messageType >= info'

# Android - Only your package
adb logcat --pid=$(adb shell pidof com.yourapp.id)

Issue: Missing Debug Logs

iOS: Debug logs are hidden by default

# Enable debug logs
xcrun simctl spawn booted log stream --level debug

Android: Ensure log level is set correctly

Log.d("Tag", "Debug message")  // D level

Best Practices

1. Use structured logging - Include context in log messages 2. Add timestamps - Helps correlate events 3. Filter early - Don't stream all logs 4. Save important logs - Redirect to file for later analysis 5. Use log levels appropriately - Debug for dev, error for production

Resources

  • iOS Unified Logging: https://developer.apple.com/documentation/os/logging
  • Android Logcat: https://developer.android.com/studio/debug/logcat
  • devicectl Reference: https://developer.apple.com/documentation/devicemanagement

Related skills

How it compares

Use ios-android-logs for Capacitor native-layer incidents; use browser devtools when bugs reproduce only in the WebView DOM.

FAQ

What platforms does ios-android-logs cover?

ios-android-logs captures and interprets device logs from both iOS and Android targets for Capacitor apps, focusing on native-layer crashes and plugin errors.

When should developers use ios-android-logs?

ios-android-logs fits when Capacitor app crashes or plugin failures occur on real devices and browser devtools cannot surface native bridge or OS-level errors.

Debuggingmonitoringsupport

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.