Snag Search Test — v4

Project: snag-search-test · RTDB path: /snagFeed · IDB: snag-cache

1a. Small seeds — single-shot writes

Single set() call. Safe at these sizes.

1b. Big seeds — batched writes (2.5k entries per chunk)

Streaming build + batched update(). Each chunk ~2.5k entries. Mobile-crash boundary confirmed at 1.75M ✓ / 2M ✗.

1c. Stress sizes

Heads up: Seed times: 3M ≈ 8 min, 5M ≈ 14 min, 7M ≈ 19 min (with 2.5k batch). Storage: 3M ≈ 384 MB, 5M ≈ 640 MB, 7M ≈ 896 MB (near 1 GB free-tier cap). Mobile Safari crashes during Load All at 2M+.

2. Load corpus from RTDB (cold boot)

No corpus loaded
Single get() on /snagFeed. This simulates the first-time-ever load on a new device.

2b. IndexedDB persistence (warm boot)

IDB corpus: not checked
Save: writes cachedCorpus to the snag-cache IndexedDB database as a single record.
Load: reads from IDB into cachedCorpus without touching RTDB. This is the warm-boot measurement — what inspectors experience on every visit after the first.
Clear corpus: deletes the snag-cache database only (leaves Firebase's internal IDBs alone).

3. Run searches (local filter, zero network)

4. Cleanup

Clear All Snags: wipes /snagFeed on RTDB. Chunked. Slow at 1M+.
Clear ALL IndexedDB: deletes every IDB database on this origin including Firebase Auth and the corpus cache. Page reload recommended.
Storage Report: full breakdown to log.
Ready. Open browser DevTools console for parallel logs.