
Ios Android Logs
- 329 installs
- 57 repo stars
- Updated July 13, 2026
- cap-go/capacitor-skills
ios-android-logs is a Capacitor agent skill that captures, filters, and interprets native iOS and Android logs for developers debugging crashes, plugin failures, and device-specific bugs in hybrid mobile apps.
About
ios-android-logs is an agent skill in the cap-go/capacitor-skills repository that helps developers capture, filter, and interpret native iOS and Android log output from Capacitor hybrid applications. The skill guides agents through adb logcat workflows on Android and Xcode device console patterns on iOS so engineers can isolate WebView bridge errors, Capacitor plugin stack traces, JNI failures, and permission denials that web-only debugging misses. Developers reach for ios-android-logs when a Capacitor build passes in the browser but crashes on physical devices, when a native plugin returns opaque errors, or when OS-specific behavior differs between iOS and Android releases. The skill fits ship-phase testing where teams reproduce production-like defects, correlate native timestamps with JavaScript console events, and document root causes before store submission. Install through capacitor-skills via the skills CLI so Claude Code or Cursor sessions produce actionable log filters and interpretation notes during mobile QA workflows.
- Reads Xcode and Android Studio logs
- Traces Capacitor native bridge issues
- Filters noisy device output quickly
- Correlates JS errors with native crashes
- Speeds mobile incident triage
Ios Android Logs by the numbers
- 329 all-time installs (skills.sh)
- Ranked #124 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/capacitor-skills --skill ios-android-logsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 329 |
|---|---|
| repo stars | ★ 57 |
| Last updated | July 13, 2026 |
| Repository | cap-go/capacitor-skills ↗ |
How do you debug Capacitor native device logs?
Capture, filter, and interpret native iOS and Android logs from Capacitor hybrid apps when reproducing crashes, plugin failures, or device-specific bugs.
Who is it for?
Capacitor and Ionic developers reproducing native crashes, plugin errors, or device-specific defects that do not appear in browser-only debugging.
Skip if: Pure native Swift or Kotlin apps outside Capacitor, or teams with no hybrid WebView bridge logging requirements.
When should I use this skill?
User asks to debug Capacitor iOS or Android logs, filter adb logcat, interpret native plugin crashes, or reproduce device-specific hybrid app failures.
What you get
Filtered adb logcat and Xcode console output, interpreted stack traces, and documented root-cause notes for Capacitor plugin or native bridge failures.
- Filtered native log excerpts
- Crash interpretation notes
- Plugin failure root-cause summaries
Files
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.txtMethod 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
| Level | Description |
|---|---|
default | Default messages |
info | Informational |
debug | Debug (hidden by default) |
error | Error conditions |
fault | Fault/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.txtMethod 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.idAndroid Log Priority Levels
| Letter | Priority |
|---|---|
| V | Verbose |
| D | Debug |
| I | Info |
| W | Warn |
| E | Error |
| F | Fatal |
| S | Silent |
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.zipMCP 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.idTroubleshooting
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 devicesto 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 debugAndroid: Ensure log level is set correctly
Log.d("Tag", "Debug message") // D levelBest 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
{
"version": "1.0.0",
"organization": "Capgo",
"date": "January 2026",
"abstract": "Complete guide to viewing and filtering device logs on iOS and Android. Covers Console.app, devicectl, simctl for iOS, and adb logcat for Android. Includes filtering techniques, crash log access, and MCP integration.",
"triggers": [
"device logs",
"view logs",
"adb logcat",
"console.app",
"ios logs",
"android logs",
"crash logs",
"debug logs"
],
"references": [
"https://developer.apple.com/documentation/os/logging",
"https://developer.android.com/studio/debug/logcat",
"https://developer.apple.com/documentation/devicemanagement"
]
}
Related skills
FAQ
Which log sources does ios-android-logs cover?
ios-android-logs covers native Android adb logcat streams and iOS Xcode device console output for Capacitor hybrid apps. The cap-go skill helps filter plugin, WebView bridge, and JNI-related entries during crash reproduction.
When should Capacitor developers use ios-android-logs?
Capacitor developers should use ios-android-logs when browser debugging misses device-only crashes, native plugin stack traces, or platform-specific permission failures before shipping iOS and Android builds.