Skip to content

fix: useSmartPolling stops polling after the first re-render because useBountyStatus passes inline fetchFn/compareFn/onDataChange - #808

Open
Biglamar wants to merge 1 commit into
MergeFi:mainfrom
Biglamar:solver/issue-568-42-a0
Open

Biglamar wants to merge 1 commit into
MergeFi:mainfrom
Biglamar:solver/issue-568-42-a0

Conversation

@Biglamar

Copy link
Copy Markdown

Summary

In src/hooks/useSmartPolling.ts, fetchFn, compareFn and onDataChange are now held in refs that are updated on every render, so fetchData no longer changes identity when callers pass inline functions. I also removed the hasInitialized guard from the main polling effect. The effect now recreates the interval whenever it re-runs, including when enabled goes from false to true. Before this, the first re-render ran the effect cleanup, which cleared the interval, and nothing recreated it. I added a regression test in src/hooks/useSmartPolling.test.tsx that uses inline callbacks and asserts polling continues past several intervals. I could not run any tests in this session.

Changed files

  • src/hooks/useSmartPolling.test.tsx
  • src/hooks/useSmartPolling.ts

Test plan

Run jest src/hooks/useSmartPolling.test.tsx src/hooks/useBountyStatus.test.tsx, plus the ClaimButton and BountyStatus tests. The new test, 'keeps polling across re-renders when callbacks are inline (#568)', asserts fetchFn is called more than twice after three timer advances. The existing enabled-toggle and backoff tests in the same file cover the removal of the hasInitialized guard.

This PR was created as a draft by the issue solver bot. It will remain a
draft until repository CI passes.

Closes #568

@vercel

vercel Bot commented Oct 18, 2026

Copy link
Copy Markdown

@issue-solver-bot is attempting to deploy a commit to the chonilius' projects Team on Vercel.

A member of the Team first needs to authorize it.

@Biglamar
Biglamar marked this pull request as ready for review October 18, 2026 22:12

This branch has not been deployed

No deployments
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.

useSmartPolling stops polling after the first re-render because useBountyStatus passes inline fetchFn/compareFn/onDataChange

2 participants