with one click
mobile-performance-profiling
Mobile app performance analysis and optimization
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Mobile app performance analysis and optimization
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | Mobile Performance Profiling |
| description | Mobile app performance analysis and optimization |
| version | 1.0.0 |
| category | Performance |
| slug | mobile-perf |
| status | active |
| graph | {"domains":["domain:mobile"],"specializations":["specialization:mobile-development"],"skillAreas":["skill-area:battery-consumption-testing","skill-area:memory-usage-testing"],"roles":["role:mobile-engineer"],"workflows":["workflow:feature-development","workflow:release-management"],"topics":["topic:accessibility"]} |
This skill provides mobile app performance analysis and optimization capabilities. It enables profiling with Xcode Instruments, Android Profiler, Flipper, and Flutter DevTools to identify and fix performance issues.
bash - Execute profiling tools and build commandsread - Analyze performance reports and profileswrite - Generate optimization configurationsedit - Update performance-related codeglob - Search for performance filesgrep - Search for patternsTime Profiler
Allocations
Core Animation
CPU Profiler
Memory Profiler
Network Profiler
Flipper Performance
Hermes Profiler
App Startup
Memory Management
Rendering Performance
mobile-performance-optimization.js - Performance tuningmobile-testing-strategy.js - Performance testingjetpack-compose-ui.js - Compose optimizationswiftui-app-development.js - SwiftUI optimization# Record Time Profiler trace
xcrun xctrace record --device "iPhone 15 Pro" \
--template "Time Profiler" \
--attach "MyApp" \
--time-limit 30s \
--output ~/Desktop/profile.trace
# Export trace data
xcrun xctrace export --input ~/Desktop/profile.trace \
--xpath '/trace-toc/run/tracks/track[@name="Time Profiler"]' \
--output ~/Desktop/profile_data.xml
# Capture CPU trace
adb shell am profile start com.example.myapp /data/local/tmp/profile.trace
# Stop and pull trace
adb shell am profile stop com.example.myapp
adb pull /data/local/tmp/profile.trace ./profile.trace
# Capture heap dump
adb shell am dumpheap com.example.myapp /data/local/tmp/heap.hprof
adb pull /data/local/tmp/heap.hprof ./heap.hprof
// Optimize list rendering
import { FlashList } from '@shopify/flash-list';
const OptimizedList = () => {
const renderItem = useCallback(({ item }) => (
<MemoizedListItem item={item} />
), []);
return (
<FlashList
data={items}
renderItem={renderItem}
estimatedItemSize={100}
keyExtractor={item => item.id}
/>
);
};
// Memoize expensive components
const MemoizedListItem = memo(({ item }) => {
return (
<View style={styles.item}>
<Text>{item.title}</Text>
</View>
);
}, (prev, next) => prev.item.id === next.item.id);
// Optimize images
import FastImage from 'react-native-fast-image';
const OptimizedImage = ({ uri }) => (
<FastImage
source={{ uri, priority: FastImage.priority.normal }}
resizeMode={FastImage.resizeMode.cover}
style={styles.image}
/>
);
// Optimize view updates
struct OptimizedView: View {
@State private var items: [Item] = []
var body: some View {
List {
ForEach(items) { item in
ItemRow(item: item)
.equatable() // Prevent unnecessary redraws
}
}
}
}
// Use Equatable for custom views
struct ItemRow: View, Equatable {
let item: Item
static func == (lhs: ItemRow, rhs: ItemRow) -> Bool {
lhs.item.id == rhs.item.id
}
var body: some View {
Text(item.title)
}
}
// Lazy loading
struct LazyImageView: View {
let url: URL
var body: some View {
AsyncImage(url: url) { phase in
switch phase {
case .empty:
ProgressView()
case .success(let image):
image.resizable().aspectRatio(contentMode: .fit)
case .failure:
Image(systemName: "photo")
@unknown default:
EmptyView()
}
}
}
}
// Optimize recomposition
@Composable
fun OptimizedList(items: List<Item>) {
LazyColumn {
items(
items = items,
key = { it.id }
) { item ->
// Stable key prevents unnecessary recomposition
ItemCard(item = item)
}
}
}
// Use derivedStateOf for computed values
@Composable
fun SearchableList(items: List<Item>, query: String) {
val filteredItems by remember(items, query) {
derivedStateOf {
items.filter { it.title.contains(query, ignoreCase = true) }
}
}
LazyColumn {
items(filteredItems, key = { it.id }) { ItemCard(it) }
}
}
// Use remember for expensive calculations
@Composable
fun ExpensiveView(data: ComplexData) {
val processedData = remember(data) {
expensiveCalculation(data)
}
Text(processedData.result)
}
mobile-testing - Performance testingreact-native-dev - RN optimizationflutter-dart - Flutter optimizationkotlin-compose - Compose optimizationReference for querying the Atlas knowledge graph through its MCP tools — the SECONDARY enrichment/comparison layer that adds best-practice context to systems you have ALREADY scanned from your real sources (`az`, repos, dirs). Use when you need to look up nodes, edges, kinds, clusters, stats, or wiki pages in Atlas to compare against your real inventory. (atlas graph, query atlas, atlas mcp, search the graph, graph neighbors, atlas record, atlas kinds, enrichment layer)
Atlas turns your STATED NEED into a real systems atlas by SCANNING your actual sources (Azure via `az`, git repos, local dirs) and process/data mining them, THEN enriching against the Atlas knowledge graph. Use this skill when asked to inventory/map your real systems, scan your cloud + repos + directories, mine the real processes or data they contain, or collect their real constraints/gotchas. (atlas, scan my systems, inventory our azure account, map my repos, real systems atlas, process mining, data mining, collect nuances, system discovery)
This skill should be used when the user asks to "find skills in the wild", "assimilate popular workflows", "discover SKILL.md files in repos", "research external skills", "find workflow patterns", "survey the skill landscape", "what skills exist out there", or wants to investigate public repositories for extractable processes, babysitter plugins, and reusable procedural insights. Searches GitHub for SKILL.md files, classifies repos by archetype, and maintains structured research under docs/reference-repos/.
JavaScript and TypeScript documentation generation using JSDoc and TSDoc. Parse source code, generate API documentation, validate coverage, and integrate with TypeDoc for comprehensive developer documentation.
Structured debugging methodology using hypothesis-driven investigation, log analysis, and bisection to isolate and resolve defects.
Zero-knowledge circuit development using Circom and Noir languages. Supports constraint optimization, ZK-friendly cryptographic primitives, proof generation (Groth16, PLONK), and Merkle tree implementations.