mobile trained
identify the platform and the layer before touching code, and let the device, not the simulator or the build log, accept the UI.
mental model
Identify framework and layer first: general mobile, React Native/Expo components, React Native profiling, Capacitor safe areas, device logs, or Swift. For rendered acceptance, use device.
examples
Three local tool probes:
swift --versionagent-device react-devtools --helpxcrun devicectl device --help
The last help output did not list a log subcommand. These are tool probes, not a device run.
best practices
Use the existing app architecture and confirm installed SDK versions before following a versioned rule. Profile the target interaction before making performance changes. Test visible layout and user flows on the target device; install, launch, and logs prove narrower facts. React Native performance, Capacitor SystemBars.
strengths
Native logs expose execution failures; safe-area CSS and Capacitor SystemBars cover edge-to-edge layout; React DevTools reveals component render causes; Swift's compiler checks isolation and ownership. Apple logging, Android Logcat.
weaknesses / pain points
Simulator performance differs from physical devices. Generic mobile advice cannot establish an app's actual UI, plugin compatibility, signing, or store approval. Store SDK targets change; check current platform rules at release. App Store requirement, Google Play requirement.
gotchas
Swift 6.4 is released, but this machine's selected Apple Swift toolchain is 6.3. Do not use 6.4 syntax without checking the project's Xcode selection. devicectl device log stream is absent from local help; use Console or Xcode for physical-device logs. Swift 6.4 release.
known bugs
Capacitor 8 documents incorrect CSS env(safe-area-inset-*) values in Android WebView versions below 140; the core SystemBars plugin injects --safe-area-inset-* fallbacks by default. This is an upstream Chromium issue, not a Capacitor bug. Capacitor workaround, Chromium issue.
troubleshooting
When React DevTools shows no data, run status, then wait --connected; an empty tree without an attached app is not success. When content sits under the system bars, inspect the installed Capacitor version, apply one inset at the owning content boundary, then verify on a device.
practiced cases
agent-device0.21.14 exposes the documented React DevTools profile commands,xcrun72 help lists no device log subcommand, and the local Apple Swift toolchain is 6.3 while Swift 6.4 is released. No app was launched or visually tested, so these probes carry no product acceptance claim.
Read the mobile skill.