Skip to content

fix: resolve pull-to-refresh race condition with stale subscriptions …#527

Merged
Smartdevs17 merged 1 commit into
Smartdevs17:mainfrom
ReinaMaze:fix/race-condition-pull-to-refresh
Jun 2, 2026
Merged

fix: resolve pull-to-refresh race condition with stale subscriptions …#527
Smartdevs17 merged 1 commit into
Smartdevs17:mainfrom
ReinaMaze:fix/race-condition-pull-to-refresh

Conversation

@ReinaMaze
Copy link
Copy Markdown
Contributor

close #42

…data

- Fix race condition: subscriptions state may not be updated when used in onRefresh callback
- Pull-to-refresh may use stale data, causing incorrect UI state

Changes:
1. Enhanced useRefresh hook with fetchBeforeClear option for atomic state updates
2. Added refreshSubscriptions method to subscriptionStore for proper data fetching
3. Updated HomeScreen to use new refreshSubscriptions method
4. Combined refreshing and isLoading states in RefreshControl for correct UI feedback
5. Added comprehensive test suite for race condition scenarios

Acceptance Criteria Met:
 Pull-to-refresh always works
 No stale data shown
 Loading state correct
 No infinite refresh loops

Technical Details:
- Uses inFlightRef to prevent concurrent refreshes
- Atomic state updates prevent intermediate renders
- Proper error handling ensures clean loading state cleanup
- Tested with rapid successive refreshes and error scenarios

Files Changed:
- src/hooks/useRefresh.ts: Added fetchBeforeClear option
- src/store/subscriptionStore.ts: Added refreshSubscriptions method
- src/screens/HomeScreen.tsx: Updated onRefresh implementation
- src/screens/__tests__/HomeScreen.race-condition.test.ts: New test file
- RACE_CONDITION_FIX.md: Comprehensive documentation
@drips-wave
Copy link
Copy Markdown

drips-wave Bot commented Jun 1, 2026

@ReinaMaze Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@Smartdevs17 Smartdevs17 merged commit a8aff3f into Smartdevs17:main Jun 2, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🔧 Add race condition handling in HomeScreen

2 participants