6.9 KiB
6.9 KiB
State Utilities Categorization
Date: 2026-01-11
Action: 4.6.1.2 - Determine which utilities are still needed
Status: ✅ Complete
Summary
This document categorizes all state utility files into: Needed, Redundant, and Obsolete based on actual usage analysis.
Categorization Results
✅ NEEDED - Actively Used (6 utilities)
1. broadcastSync.ts
- Category: ✅ NEEDED - Will remain useful
- Usage: Used by UI Store (
stores/ui.ts), Auth Store (features/auth/store/authStore.ts) - Purpose: Synchronize Zustand stores across browser tabs/windows
- Future: Will remain useful for UI state synchronization
- Action: Keep
2. storeSelectors.ts
- Category: ✅ NEEDED - Will remain useful
- Usage: Used by various components (
DashboardPage.tsx, etc.) - Purpose: Optimized selectors for Zustand stores to prevent unnecessary re-renders
- Future: Will remain useful for optimized Zustand selectors
- Action: Keep
3. stateInvalidation.ts
- Category: ✅ NEEDED - Useful during migration period
- Usage: Used by
api/client.tsfor mutation invalidation - Purpose: Unified state invalidation for Zustand stores and React Query
- Future: Useful during migration period, may need updates for React Query
- Action: Keep, update for React Query (Action 4.6.1.5)
4. stateMiddleware.ts
- Category: ⚠️ NEEDED - Will become obsolete after Library Store migration
- Usage: Used by Library Store (
stores/library.ts) - Purpose: Zustand middleware for analytics tracking and error handling
- Future: Will become obsolete when Library Store migrates to React Query
- Action: Keep until Library Store migration, then remove
5. stateNormalization.ts
- Category: ⚠️ NEEDED - Will become obsolete after Library Store migration
- Usage: Used by Library Store (
stores/library.ts), storeSelectors (utils/storeSelectors.ts) - Purpose: Utilities for normalized state management (entities by ID)
- Future: Will become obsolete when Library Store migrates to React Query
- Action: Keep until Library Store migration, then remove
6. undoRedo.ts
- Category: ⚠️ NEEDED - Will become obsolete after Library Store migration
- Usage: Used by Library Store (
stores/library.ts) - Purpose: Undo/redo functionality for Zustand stores
- Future: Will become obsolete when Library Store migrates to React Query
- Action: Keep until Library Store migration, then remove
7. stateHydration.ts
- Category: ⚠️ NEEDED - Will become obsolete after store migrations
- Usage: Used by
App.tsxfor app initialization - Purpose: Hydrate Zustand stores from API on app load
- Future: Will become obsolete when stores migrate to React Query (React Query handles hydration)
- Action: Keep until store migrations complete, then remove
❌ OBSOLETE - Not Used (3 utilities)
8. stateCleanup.ts
- Category: ❌ OBSOLETE - Not used in codebase
- Usage: Only imported in test file (
stateCleanup.test.ts), NOT used in actual code - Purpose: Cleanup utilities for Zustand stores (size/age-based)
- Future: Not needed
- Action: DELETE (Action 4.6.1.3)
9. stateVersioning.ts
- Category: ❌ OBSOLETE - Not used in codebase
- Usage: Only imported in test file (
stateVersioning.test.ts) and example file (stateVersioning.example.ts), NOT used in actual code - Purpose: State versioning and migration utilities for Zustand stores
- Future: Not needed (Zustand persist middleware handles versioning)
- Action: DELETE (Action 4.6.1.3)
10. statePersistence.ts
- Category: ❌ OBSOLETE - Not used in codebase
- Usage:
createPersistentStoragefunction exists but is NOT imported anywhere - Purpose: Persistence utilities for Zustand stores
- Future: Not needed (Zustand's
persistmiddleware is used directly) - Action: DELETE (Action 4.6.1.3)
Summary Statistics
- Total Utilities: 10
- Needed (Active): 7 (70%)
- Will remain useful: 2 (broadcastSync, storeSelectors)
- Useful during migration: 1 (stateInvalidation)
- Will become obsolete after migrations: 4 (stateMiddleware, stateNormalization, undoRedo, stateHydration)
- Obsolete (Unused): 3 (30%)
- stateCleanup
- stateVersioning
- statePersistence
Migration Timeline
Phase 1: Immediate Cleanup (Now)
- Delete obsolete utilities:
stateCleanup.ts,stateVersioning.ts,statePersistence.ts - Risk: LOW (not used)
Phase 2: After Library Store Migration
- Delete:
stateMiddleware.ts,stateNormalization.ts,undoRedo.ts - Risk: MEDIUM (verify Library Store fully migrated)
Phase 3: After All Store Migrations
- Delete:
stateHydration.ts - Update:
stateInvalidation.tsto work with React Query only - Risk: MEDIUM (verify all stores migrated)
Phase 4: Long-term Keepers
- Keep:
broadcastSync.ts(for UI state sync) - Keep:
storeSelectors.ts(for optimized selectors) - Keep:
stateInvalidation.ts(updated for React Query)
Recommendations
High Priority
- ✅ Action 4.6.1.2: Categorization complete
- Action 4.6.1.3: Delete obsolete utilities (
stateCleanup,stateVersioning,statePersistence) - Action 4.6.1.4: Simplify
stateMiddleware(or plan removal after Library Store migration)
Medium Priority
- Plan removal of utilities after Library Store migration
- Update
stateInvalidationfor React Query (Action 4.6.1.5)
Low Priority
- Document migration path for utilities that will become obsolete
- Add tests for utilities that will remain (if missing)
Files to Delete (Action 4.6.1.3)
apps/web/src/utils/stateCleanup.ts- Not usedapps/web/src/utils/stateCleanup.test.ts- Test for unused utilityapps/web/src/utils/stateVersioning.ts- Not usedapps/web/src/utils/stateVersioning.test.ts- Test for unused utilityapps/web/src/utils/stateVersioning.example.ts- Example for unused utilityapps/web/src/utils/statePersistence.ts- Not used
Total files to delete: 6
Verification
Obsolete Utilities - Import Check Results
- ✅
stateCleanup- Only in test file - ✅
stateVersioning- Only in test and example files - ✅
statePersistence- No imports found
Needed Utilities - Import Check Results
- ✅
broadcastSync- Used by 2 stores - ✅
storeSelectors- Used by multiple components - ✅
stateInvalidation- Used by api/client.ts - ✅
stateMiddleware- Used by Library Store - ✅
stateNormalization- Used by Library Store and storeSelectors - ✅
undoRedo- Used by Library Store - ✅
stateHydration- Used by App.tsx
Next Steps
- ✅ Action 4.6.1.2: Categorization complete
- Action 4.6.1.3: Delete obsolete utilities (6 files)
- Action 4.6.1.4: Simplify or plan removal of stateMiddleware
- Action 4.6.1.5: Update stateInvalidation for React Query