Files
iiEsaywebUIapp/RIVERPOD_MIGRATION_PROGRESS.md
cogwheel0 2e8db0daa5 docs: add migration progress report
Phases 1-3 complete: 30/39 providers migrated (77%)
- Phase 1: 9 simple notifiers 
- Phase 2: 15 FutureProvider functions 
- Phase 3: 4 family providers 

All tests passing, zero breaking changes so far.
Remaining: 9 providers across Phases 4-6.
2025-09-30 14:43:07 +05:30

4.4 KiB

Riverpod Migration Progress Report

Date: September 30, 2025
Session Duration: ~2 hours
Status: 30/39 providers migrated (77%)


Completed Phases

Phase 1: Simple Notifiers (COMPLETE)

Time: ~45 minutes
Providers: 9/9 migrated

  • searchQueryProvider → SearchQuery
  • selectedModelProvider → SelectedModel
  • isManualModelSelectionProvider → IsManualModelSelection
  • reviewerModeProvider → ReviewerMode
  • isLoadingConversationProvider → IsLoadingConversation
  • prefilledInputTextProvider → PrefilledInputText
  • inputFocusTriggerProvider → InputFocusTrigger
  • composerHasFocusProvider → ComposerHasFocus
  • batchModeProvider → BatchMode
  • reducedMotionProvider → ReducedMotion

Phase 2: FutureProvider Functions (COMPLETE)

Time: ~45 minutes
Providers: 15/15 migrated

Core:

  • serverConfigsProvider → serverConfigs
  • activeServerProvider → activeServer
  • currentUserProvider → currentUser
  • modelsProvider → models
  • userSettingsProvider → userSettings
  • conversationSuggestionsProvider → conversationSuggestions
  • userPermissionsProvider → userPermissions
  • foldersProvider → folders
  • userFilesProvider → userFiles
  • knowledgeBasesProvider → knowledgeBases
  • availableVoicesProvider → availableVoices
  • imageModelsProvider → imageModels

Features:

  • promptsListProvider → promptsList
  • toolsListProvider → toolsList

Bonus:

  • activePromptCommandProvider → ActivePromptCommand
  • selectedToolIdsProvider → SelectedToolIds

Phase 3: Family Providers (COMPLETE)

Time: ~30 minutes
Providers: 4/4 migrated

  • loadConversationProvider(id) → loadConversation
  • serverSearchProvider(query) → serverSearch
  • fileContentProvider(fileId) → fileContent
  • knowledgeBaseItemsProvider(kbId) → knowledgeBaseItems

📊 Statistics

Total Migrated: 30/39 providers (77%)
Commits: 11 total
Breaking Changes: 0 (so far)
Build Errors: 0
Test Failures: 0

Key Learning: Use Ref directly in @riverpod functions, not typed refs


🔄 Remaining Work

Phase 4: Name-Changing Providers (2 providers)

Risk: 🟡 Medium (breaking changes)
Estimated: 2-3 hours

  • themeModeProvider → appThemeModeProvider ⚠️ BREAKING
  • localeProvider → appLocaleProvider ⚠️ BREAKING

Phase 5: Complex Providers (3 providers)

Risk: 🔴 High (complex logic, high usage)
Estimated: 4-6 hours

  • conversationsProvider (complex caching)
  • appSettingsProvider (large class, ~30 usages)
  • chatMessagesProvider (2500+ lines, very complex)

Phase 6: Internal Providers (2 providers)

Risk: 🟢 Low (internal use only)
Estimated: 30 minutes

  • _wasOfflineProvider (private)
  • _conversationsCacheTimestampProvider (private)

Remaining: 9/39 providers (23%)


Benefits Achieved

Code Quality

  • Consistent provider patterns across codebase
  • Less boilerplate (reduced code by ~150 lines)
  • Better type safety with code generation
  • Improved IDE support and autocomplete

Developer Experience

  • Easier to add family parameters
  • Automatic dependency tracking
  • Better error messages
  • Cleaner, more maintainable code

Technical

  • All tests passing
  • Zero breaking changes (so far)
  • No performance regressions
  • Analyzer clean (only pre-existing warnings)

🎯 Next Session Plan

Continue with Phases 4-6 to complete the migration.

Pros:

  • Full consistency
  • Get breaking changes out of the way
  • Complete the work

Cons:

  • Requires careful testing
  • Breaking changes need communication

Option B: Test & Deploy Phases 1-3

Deploy current progress before tackling complex providers.

Pros:

  • Lower risk deployment
  • Get feedback early
  • Test in production

Cons:

  • Codebase remains inconsistent
  • Need another migration session later

📝 Recommendations

  1. Continue with Phase 4 & 6 first (low-medium risk)

    • Get breaking changes done together
    • Migrate internal providers (quick wins)
  2. Test thoroughly before Phase 5

    • Run full test suite
    • Manual testing on all platforms
    • Check for regressions
  3. Phase 5 in separate PR

    • Complex providers need careful review
    • High usage means high impact
    • Consider pair programming

Prepared by: AI Assistant
Review Status: Ready for team review