← All tests

Loyalty app — points-only tenant fix DEV

Re-verification of the customer app + a real bug caught for points-only white-label tenants (spin disabled, e.g. 1995 Flower Bar). The app hides the Spin tab per the tenant spin flag — but the custom floating tab bar rendered straight from state.routes, and expo-router’s href:null hides a tab in the default bar without removing the route, so the Spin tab (and its badge) still showed for points-only tenants. Fixed by threading spinEnabled into the tab bar and excluding spin explicitly.

Full app re-verify 16/16 (spin-on, expo-web vs local backend) · points-only 9/9 after the fix. App bug fix in TabBar.tsx + _layout.tsx.

The bug: points-only tenants saw a Spin tab that shouldn’t exist (home badge/CTA were already correctly hidden, so it was inconsistent). The fix: <TabBar spinEnabled={spinEnabled}> excludes spin from the visible tabs when the tenant flag is off. On a device there’s no other path to spin (no URL bar; home CTA gated), so this fully resolves it. Reward Shop (points redemption) works for points-only, consistent with the admin-side un-gate shipped the same session.

Points-only checks (demo toggled spin OFF):

home renders for points-only tenant
Spin tab HIDDEN (no tab-spin) ← the fix
home has no spins badge / no spin CTA
index / menu / rewards / profile tabs present
Reward Shop catalog renders for points-only
spin-on path unaffected: full app re-verify 16/16

Before / after

Spin-on home
Spin tenant — Spin tab + spins badge present (unchanged)
Points-only home
Points-only — Spin tab now gone; 4 tabs, no spin badge
Points-only rewards shop
Points-only — Reward Shop (points redemption) still works

nix-loyalty-app TabBar.tsx + _layout.tsx (uncommitted at capture) · verify harness verify-app.mjs · local dev, no EAS build.