Skip to content
Back to skills

Swift Swiftui

ASecurity

Configure SwiftUI state, view lifecycle, and Property Wrappers correctly. Use when managing SwiftUI state, view lifecycle, or property wrappers like @State and @Binding.

  • 549 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 6, 2026
developmentswiftperformance

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned June 6, 2026

npx -y skills add HoangNguyen0403/agent-skills-standard --skill swift-swiftui --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Swift Swiftui?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Swift Swiftui
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hoangnguyen0403-swift-swiftui/badge)](https://www.skillsdirectory.com/skills/hoangnguyen0403-swift-swiftui)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: swift-swiftui
description: Configure SwiftUI state, view lifecycle, and Property Wrappers correctly. Use when managing SwiftUI state, view lifecycle, or property wrappers like @State and @Binding.
metadata:
  triggers:
    files:
    - '**/*.swift'
    keywords:
    - "@State"
    - "@Binding"
    - "@ObservedObject"
    - View
    - body
---
# SwiftUI Standards

## **Priority: P0**

## Implementation Guidelines

### State Management

- **@State**: @State for data owned by view (e.g., toggle, text input). Private.
- **@Binding**: @Binding for data passed down from parent to child. Two-way.
- **@ObservedObject**: @ObservedObject when receiving instance from external source.
- **@StateObject**: `@StateObject` when the view is creating the object instance — view owns lifecycle.
- **@EnvironmentObject**: `@EnvironmentObject` to inject data into the view's hierarchy via `.environmentObject()`. Shared across view hierarchy.

### View Composition

- **Extract Subviews**: Views < 200 lines. Extract reusable components.
- **View Modifiers**: Chain modifiers for styling (`.font()`, `.padding()`).
- **Custom Modifiers**: Create `ViewModifier` for reusable styles.

### Performance

- **Avoid Heavy Computation**: Use `@State` + `.task()` for async work.
- **Equatable**: Conform views to `Equatable` to prevent unnecessary re-renders.
- **LazyStacks**: `LazyVStack`/`LazyHStack` when displaying large number of views in scrolling container to load them only as they appear.

## Anti-Patterns

- **No @ObservedObject for owned objects**: Use @StateObject.
- **No logic in body**: Move to computed properties or methods.
- **No ! in View**: Use if-let or nil coalescing.

## References

- [State & Binding](references/implementation.md)

Files in this skill

  • SKILL.md1.7 KB
  • evals/evals.json2 KB
  • references/implementation.md2.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.