swiftui-performance-audit — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited swiftui-performance-audit (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
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.
Attribution: Sourced from steipete/agent-scripts by Peter Steinberger. Originally created by @Dimillian from Dimillian/Skills (2025-12-31).
Audit SwiftUI view performance end-to-end, from instrumentation and baselining to root-cause analysis and concrete remediation steps.
Collect:
Focus on:
id churn, UUID() per render).body (formatting, sorting, image decoding).GeometryReader, preference chains).Explain how to collect data with Instruments:
Prioritize likely SwiftUI culprits:
id churn, UUID() per render).body (formatting, sorting, image decoding).GeometryReader, preference chains).Apply targeted fixes:
@State/@Observable closer to leaf views).ForEach and lists.body (precompute, cache, @State).equatable() or value wrappers for expensive subtrees.body// ❌ Slow allocation on every render
var body: some View {
let number = NumberFormatter()
Text(number.string(from: 42)!)
}
// ✅ Cached formatter
final class Formatters {
static let number = NumberFormatter()
}// ❌ UUID() per render — destroys identity
ForEach(items, id: \.self) { item in Row(item) }
// ✅ Stable Identifiable ID
ForEach(items) { item in Row(item) }// ❌ Runs on every body eval
List {
ForEach(items.sorted(by: sortRule)) { item in Row(item) }
}
// ✅ Sort once before view updates
let sortedItems = items.sorted(by: sortRule)// ❌ Whole view tree re-renders on any items change
@Observable class Model { var items: [Item] = [] }
var body: some View { Row(isFavorite: model.items.contains(item)) }
// ✅ Granular view models or per-item stateAsk the user to re-run the same capture and compare with baseline metrics. Summarize the delta (CPU, frame drops, memory peak) if provided.
Provide:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.