feedback-states

Manage asynchronous data states in SwiftUI with Loadable<T> patterns.

32|10|Updated Feb 21, 2026
One-click install
npx skills add https://github.com/moasq/nanowave --skill feedback-states
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: feedback-states
Source: https://github.com/moasq/nanowave/tree/main/internal/orchestration/skills/ui/feedback-states
Command: npx skills add https://github.com/moasq/nanowave --skill feedback-states

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill ensures your application consistently handles various data loading and user interaction states, providing a smooth and informative user experience.

Core Features & Use Cases

  • Loading Indicators: Implement spinners, skeleton views, and pull-to-refresh for asynchronous operations.
  • Error Handling: Display inline validation, alerts, or banners with clear error messages and retry options.
  • Success Feedback: Provide subtle visual or haptic confirmations for completed actions.
  • Disabled States: Clearly indicate when interactive elements are unavailable and why.
  • Use Case: When a user attempts to save a form, the button should disable, show a spinner, and then display a success message or an error alert if the save fails.

Quick Start

Use the feedback-states skill to implement a loading spinner within a button that triggers an asynchronous save operation.

Frequently Asked Questions about feedback-states

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I handle asynchronous loading states in SwiftUI?

Handle asynchronous loading states in SwiftUI by implementing a Loadable<T> type to represent loading, error, and success phases. This provides clear visual cues like spinners for operations exceeding 300ms, ensuring a smooth user experience.

What is the best way to show error feedback and retry options in SwiftUI?

The best way to show error feedback is by displaying inline validation, alerts, or banners. These UI elements provide clear error messages and actionable retry options directly tied to the current Loadable<T> error state.

How do I disable interactive UI elements during asynchronous operations?

Disable interactive UI elements during operations by applying explicit disabled states. This clearly indicates when elements are unavailable, preventing duplicate user inputs while an asynchronous save or fetch operation is processing.

When should I show a loading indicator for SwiftUI data fetching?

Show a loading indicator for data fetching operations exceeding 300ms. Implementing spinners, skeleton views, or pull-to-refresh mechanisms during this threshold prevents visual flickering and improves perceived performance.

Does this SwiftUI state management approach work without external dependencies?

Yes, this SwiftUI state management approach works without external dependencies. It uses native patterns to manage asynchronous data states, ensuring robust error handling and success feedback without requiring third-party libraries.