All Docs
FeaturesDepositClearUpdated March 13, 2026

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:

  1. State was ephemeral. Progress lived only in the client. A page refresh, a new device, or a logged-out session wiped it clean.
  2. 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:

StepCompletion trigger
Add your first propertyproperties.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