Skip to main content

Feedback, Overlays, and System UI

Users need constant confirmation about state: loading, blocking, success, failure, and transitions between application contexts. React Native provides a handful of primitives for these jobs, but teams need conventions around when to use each one.

ActivityIndicator​

ActivityIndicator is suitable for lightweight loading signals.

Use it for:

  • short in-place loading states
  • button or row-level pending indicators
  • temporary screen bootstrap states

Avoid using spinners as the only feedback for long-running operations. Pair them with status copy or progress context where needed.

Modal is for interruptive or high-focus UI states:

  • confirmations
  • full-screen pickers
  • short-lived task flows
  • policy or permission explanations

Best patterns​

  • define whether dismissal is allowed
  • keep modal content task-focused
  • manage keyboard and safe-area behavior intentionally
  • maintain accessible focus flow

Common mistakes​

  • turning modals into mini-screens with excessive navigation logic
  • stacking multiple modals
  • hiding critical recovery actions behind dismiss-only surfaces

Alert​

Alert is useful for simple system-level confirmation or warning prompts, especially when the team wants native-feeling default presentation. It is not a substitute for a richer in-app error or education pattern.

Use it for:

  • destructive confirmations
  • short blocking warnings
  • minimal decision prompts

StatusBar and system-chrome concerns​

Even though StatusBar seems small, teams should standardize:

  • light versus dark content policy
  • per-screen overrides
  • transitions across modal or full-bleed content
  • safe-area coordination

System chrome is part of perceived polish.

Toasts, banners, and app-level feedback​

Many teams build custom feedback surfaces on top of React Native primitives. The important questions are:

  • is the message interruptive or passive
  • does it require action
  • is it global or screen-specific
  • what happens if multiple messages appear at once

These decisions belong in the design system, not in arbitrary feature code.

Team rule​

User feedback should form a system. If each screen invents its own loading and error pattern, trust and usability will degrade even if the code technically works.

Pair this page with Text Input and Form Controls and Mobile Security for sensitive or blocking flows.