mobile-rn-performance — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited mobile-rn-performance (Agent Skill) and scored it 45/100 (orange). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 1 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
A base64 string of 128+ characters appears in a documentation file. Encoded prompt injection hides the hostile instruction in base64 — invisible to keyword filters — and relies on the agent's ability to decode it at runtime. There is no normal authoring reason to embed a multi-hundred-byte base64 blob in skill docs.
*.sig, SIGNATURES) outside the documentation.Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The performance, bundling, and upgrade layer for React Native / Expo. mobile-rn-screen handles screen layout and native feel; this skill handles speed, size, and version moves.>
Distilled from Callstack's React Native best-practices skill (MIT) and the Ultimate Guide to RN Optimization.
Never optimize blind. Identify the symptom, then apply the matching category. Measure before/after.
| Symptom | Category | Impact |
|---|---|---|
| Janky scroll/animation, dropped frames | FPS & re-renders | CRITICAL |
| Large download / install size | Bundle size | CRITICAL |
| Slow cold start (high TTI) | TTI / startup | HIGH |
| Slow native operations | Native performance | HIGH |
| Memory grows over time / crashes | Memory management | MED-HIGH |
| Choppy gestures/transitions | Animations | MEDIUM |
React.memo, useMemo, useCallback — but only where a profile shows wasted renders (over-memoization adds its own cost).FlashList (Shopify) over FlatList for long/heterogeneous lists. Provide stable keyExtractor, avoid anonymous renderItem closures, and give size hints. A FlatList re-render storm is the #1 RN list perf bug.react-native-reanimated on the UI thread (useSharedValue / useAnimatedStyle / worklets). Never drive continuous animation through setState — it re-renders the tree every frame and collapses FPS.Animated when staying on the core API.android/, ios/, Podfile, Gradle) deliberately — these are where upgrades break.expo install --fix; align all expo-* and third-party native deps to the SDK's supported ranges.watchman watch-del, Metro cache, Pods, Gradle), rebuild, and smoke-test on both platforms via mobile-emulator-test.mobile-rn-screen — layout, safe-area, touch-target, native feel.mobile-emulator-start / mobile-emulator-test — boot + on-device verification.workflow-spec-workflow-spec-tdd — spec + test the perf fix so it doesn't regress.enhance-capacitor-ui — if the app is hybrid rather than bare RN, the axis architecture differs.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.