Never Lose Your Place: Persistent Onboarding & Always-On Re-Entry Points
Never Lose Your Place: Persistent Onboarding & Always-On Re-Entry Points
Release v0.1.243 · UI/UX · Usability
The problem we solved
Getting a new landlord, agent, or tenant fully set up is critical to a fair tenancy outcome — but onboarding only works if users actually complete it. The previous OnboardingChecklist had two significant gaps:
- State was ephemeral. Progress lived only in the client. A page refresh, a new device, or a logged-out session wiped it clean.
- No way back. Once a user dismissed or skipped the checklist, there was no obvious CTA to resurface it. The checklist sat below the dashboard header, easy to miss and impossible to re-open.
The result: new users who skipped steps during the wizard had no clear second-chance path, and partially-completed setups silently stalled.
What's new in v0.1.243
1. Database-persisted completion state
Onboarding progress is now written to the database at the individual step level. This means:
- Progress survives page refreshes, browser closes, and device switches.
- Partial completions are preserved exactly — if a user completes steps 1 and 3 but not 2, 4, or 5, that's exactly what they'll see when they return.
- No more accidental resets that make users feel like they're starting over.
2. Smart auto-completion detection
Steps no longer rely on users manually acknowledging them. Instead, completion is detected from real application state:
| Step | Completion trigger |
|---|---|
| Add your first property | properties.count > 0 |
| (additional steps) | (detected from corresponding data) |
This means the checklist reflects what users have actually done, not just what they've clicked through. It also removes the confusion of a step appearing incomplete even after the user has taken the action.
3. Persistent progress banner
For any user with an incomplete setup, a banner now appears at the top of the dashboard:
✅ Getting started — 2 of 5 steps done [Continue setup] [✕]
- The banner is dismissible — users who want a clean dashboard can hide it.
- It persists across sessions until all steps are complete, providing a constant, low-friction reminder without blocking the UI.
- It gives an immediate sense of progress, making it easier to find motivation to complete the remaining steps.
4. Sidebar "Setup guide" re-entry point
A "Setup guide" button is now anchored to the footer of the sidebar. It is always visible, regardless of the user's onboarding state.
- Clicking it opens the
getting-started-slide-over— the same guided panel shown during initial onboarding. - This provides a reliable, predictable re-entry point for users who dismissed the checklist early or want to revisit guidance later.
- No more hunting through menus or help docs to find setup instructions.
How it all fits together
Dashboard
├── [Progress banner] "Getting started — 2 of 5 steps done" (dismissible)
├── Header
├── Main content
│
Sidebar
└── [Footer] "Setup guide" button → opens getting-started-slide-over
└── OnboardingChecklist
├── Step 1: ✅ (auto-detected)
├── Step 2: ✅ (auto-detected)
├── Step 3: ⬜ Pending
├── Step 4: ⬜ Pending
└── Step 5: ⬜ Pending
Impact
These changes collectively close the loop on new-user onboarding:
- No lost progress — database persistence guarantees state is durable.
- No dead ends — the sidebar button means users can always get back to guidance.
- No manual effort — auto-completion detection rewards users automatically for the actions they take.
- No ambiguity — the progress banner gives a clear, persistent signal of where users stand.
Together, these improvements give every new user a genuine second (and third, and fourth) chance to complete their setup — which means more properties added, more inspections completed, and fewer disputes down the line.
Affected file: src/components/onboarding-checklist.tsx