SlashAI

Ship Your First Web App · Module 2 · Make it real

The three features that make apps feel real

7 min read · lesson 4 of 5

Users can't articulate it, but three 'boring' features separate a demo from an app: persistence, feedback and failure states.

1. Persistence

Data survives reload. On-device storage (localStorage) covers single-user apps in ten lines. The test: reload the page — is everything still there?

2. Feedback

Every tap does something visible within 100ms: a spinner, a toast, a state change. Silence feels broken, even when code is running fine.

3. Failure states

What happens offline, on empty input, on a failed fetch? Ship a designed empty state, an error message with a retry, and graceful offline behaviour. Apps are judged by their worst moments, not their best.

Add them in that order. Persistence without feedback still feels broken; feedback without persistence feels fake.

Practice

Audit your project against the three. Whichever fails the reload-tap-fail test is your next task.

Previous: The daily build loop that finishes projects