-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: Fix dependency tracking and useSES bug #2576
Conversation
This pull request is automatically built and testable in CodeSandbox. To see build info of the built libraries, click here or the icon next to each commit SHA. Latest deployment of this branch, based on commit 9cf2713:
|
New dependency changes detected. Learn more about Socket for GitHub ↗︎ 👍 No new dependency issues detected in pull request Bot CommandsTo ignore an alert, reply with a comment starting with Pull request alert summary
📊 Modified Dependency Overview:
|
The test is failing due to changes in the implementation of |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The most difficult part of this bug is that when the value of stateDependencies.data changes, returnData has actually been calculated through getSnapshot
.
Alternatively, I think that we can modify the implementation of getSnapshot
.
By updating the value of memorizedSnapshot
but not modifying its reference, we can ensure that the value returned by useSES
is always synchronized with the cache and won't cause any unnecessary rerenders.
…2577) * refactor: always use cacheRef * refactor: update memorizedSnapshot without change its reference * refactor: isEqual
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [swr](https://swr.vercel.app) ([source](https://togithub.com/vercel/swr)) | [`2.1.3` -> `2.1.4`](https://renovatebot.com/diffs/npm/swr/2.1.3/2.1.4) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>vercel/swr</summary> ### [`v2.1.4`](https://togithub.com/vercel/swr/releases/tag/v2.1.4) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.3...v2.1.4) #### What's Changed - Upgrade bundler by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2557](https://togithub.com/vercel/swr/pull/2557) - examples: fix invalid links by [@​fxOne](https://togithub.com/fxOne) in [https://github.com/vercel/swr/pull/2559](https://togithub.com/vercel/swr/pull/2559) - types: Allow auto-import by improving generated types by [@​oosawy](https://togithub.com/oosawy) in [https://github.com/vercel/swr/pull/2563](https://togithub.com/vercel/swr/pull/2563) - fix: pass serialized args to preload fetcher by [@​oosawy](https://togithub.com/oosawy) in [https://github.com/vercel/swr/pull/2564](https://togithub.com/vercel/swr/pull/2564) - chore: use provenance for release by [@​HerringtonDarkholme](https://togithub.com/HerringtonDarkholme) in [https://github.com/vercel/swr/pull/2571](https://togithub.com/vercel/swr/pull/2571) - deps: update [@​testing-library/react](https://togithub.com/testing-library/react) to v14 by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2578](https://togithub.com/vercel/swr/pull/2578) - fix: Fix dependency tracking and useSES bug by [@​shuding](https://togithub.com/shuding) in [https://github.com/vercel/swr/pull/2576](https://togithub.com/vercel/swr/pull/2576) #### New Contributors - [@​fxOne](https://togithub.com/fxOne) made their first contribution in [https://github.com/vercel/swr/pull/2559](https://togithub.com/vercel/swr/pull/2559) - [@​oosawy](https://togithub.com/oosawy) made their first contribution in [https://github.com/vercel/swr/pull/2563](https://togithub.com/vercel/swr/pull/2563) - [@​HerringtonDarkholme](https://togithub.com/HerringtonDarkholme) made their first contribution in [https://github.com/vercel/swr/pull/2571](https://togithub.com/vercel/swr/pull/2571) **Full Changelog**: vercel/swr@v2.1.3...v2.1.4 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/kula-app/OnLaunch). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS41Ny40IiwidXBkYXRlZEluVmVyIjoiMzUuNTcuNCJ9-->
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [swr](https://swr.vercel.app) ([source](https://togithub.com/vercel/swr)) | [`2.1.2` -> `2.1.5`](https://renovatebot.com/diffs/npm/swr/2.1.2/2.1.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>vercel/swr</summary> ### [`v2.1.5`](https://togithub.com/vercel/swr/releases/tag/v2.1.5) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.4...v2.1.5) #### What's Changed - fix: missing interop helpers in bundle by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2582](https://togithub.com/vercel/swr/pull/2582) **Full Changelog**: vercel/swr@v2.1.4...v2.1.5 ### [`v2.1.4`](https://togithub.com/vercel/swr/releases/tag/v2.1.4) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.3...v2.1.4) #### What's Changed - Upgrade bundler by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2557](https://togithub.com/vercel/swr/pull/2557) - examples: fix invalid links by [@​fxOne](https://togithub.com/fxOne) in [https://github.com/vercel/swr/pull/2559](https://togithub.com/vercel/swr/pull/2559) - types: Allow auto-import by improving generated types by [@​oosawy](https://togithub.com/oosawy) in [https://github.com/vercel/swr/pull/2563](https://togithub.com/vercel/swr/pull/2563) - fix: pass serialized args to preload fetcher by [@​oosawy](https://togithub.com/oosawy) in [https://github.com/vercel/swr/pull/2564](https://togithub.com/vercel/swr/pull/2564) - chore: use provenance for release by [@​HerringtonDarkholme](https://togithub.com/HerringtonDarkholme) in [https://github.com/vercel/swr/pull/2571](https://togithub.com/vercel/swr/pull/2571) - deps: update [@​testing-library/react](https://togithub.com/testing-library/react) to v14 by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2578](https://togithub.com/vercel/swr/pull/2578) - fix: Fix dependency tracking and useSES bug by [@​shuding](https://togithub.com/shuding) and [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2576](https://togithub.com/vercel/swr/pull/2576) #### New Contributors - [@​fxOne](https://togithub.com/fxOne) made their first contribution in [https://github.com/vercel/swr/pull/2559](https://togithub.com/vercel/swr/pull/2559) - [@​oosawy](https://togithub.com/oosawy) made their first contribution in [https://github.com/vercel/swr/pull/2563](https://togithub.com/vercel/swr/pull/2563) - [@​HerringtonDarkholme](https://togithub.com/HerringtonDarkholme) made their first contribution in [https://github.com/vercel/swr/pull/2571](https://togithub.com/vercel/swr/pull/2571) **Full Changelog**: vercel/swr@v2.1.3...v2.1.4 ### [`v2.1.3`](https://togithub.com/vercel/swr/releases/tag/v2.1.3) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.2...v2.1.3) #### What's Changed - Fix [#​2548](https://togithub.com/vercel/swr/issues/2548): pass origin key to subcription callback by [@​Zheaoli](https://togithub.com/Zheaoli) in [https://github.com/vercel/swr/pull/2550](https://togithub.com/vercel/swr/pull/2550) - Examples: fix type in axios-typescript example by [@​daochouwangu](https://togithub.com/daochouwangu) in [https://github.com/vercel/swr/pull/2552](https://togithub.com/vercel/swr/pull/2552) - Update Cache Interface types by [@​dmmulroy](https://togithub.com/dmmulroy) in [https://github.com/vercel/swr/pull/2554](https://togithub.com/vercel/swr/pull/2554) - fix: data passed to refreshInterval function is not latest by [@​hong24](https://togithub.com/hong24) in [https://github.com/vercel/swr/pull/2354](https://togithub.com/vercel/swr/pull/2354) - types: allow passing function as `Data` for `useSWRSubscriptionOptions` by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2551](https://togithub.com/vercel/swr/pull/2551) #### New Contributors - [@​Zheaoli](https://togithub.com/Zheaoli) made their first contribution in [https://github.com/vercel/swr/pull/2550](https://togithub.com/vercel/swr/pull/2550) - [@​daochouwangu](https://togithub.com/daochouwangu) made their first contribution in [https://github.com/vercel/swr/pull/2552](https://togithub.com/vercel/swr/pull/2552) - [@​dmmulroy](https://togithub.com/dmmulroy) made their first contribution in [https://github.com/vercel/swr/pull/2554](https://togithub.com/vercel/swr/pull/2554) **Full Changelog**: vercel/swr@v2.1.2...v2.1.3 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/sebald/pattern-analyzer). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS40MC4wIiwidXBkYXRlZEluVmVyIjoiMzUuNjYuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [swr](https://swr.vercel.app) ([source](https://togithub.com/vercel/swr)) | [`2.0.4` -> `2.1.5`](https://renovatebot.com/diffs/npm/swr/2.0.4/2.1.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>vercel/swr</summary> ### [`v2.1.5`](https://togithub.com/vercel/swr/releases/tag/v2.1.5) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.4...v2.1.5) #### What's Changed - fix: missing interop helpers in bundle by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2582](https://togithub.com/vercel/swr/pull/2582) **Full Changelog**: vercel/swr@v2.1.4...v2.1.5 ### [`v2.1.4`](https://togithub.com/vercel/swr/releases/tag/v2.1.4) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.3...v2.1.4) #### What's Changed - Upgrade bundler by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2557](https://togithub.com/vercel/swr/pull/2557) - examples: fix invalid links by [@​fxOne](https://togithub.com/fxOne) in [https://github.com/vercel/swr/pull/2559](https://togithub.com/vercel/swr/pull/2559) - types: Allow auto-import by improving generated types by [@​oosawy](https://togithub.com/oosawy) in [https://github.com/vercel/swr/pull/2563](https://togithub.com/vercel/swr/pull/2563) - fix: pass serialized args to preload fetcher by [@​oosawy](https://togithub.com/oosawy) in [https://github.com/vercel/swr/pull/2564](https://togithub.com/vercel/swr/pull/2564) - chore: use provenance for release by [@​HerringtonDarkholme](https://togithub.com/HerringtonDarkholme) in [https://github.com/vercel/swr/pull/2571](https://togithub.com/vercel/swr/pull/2571) - deps: update [@​testing-library/react](https://togithub.com/testing-library/react) to v14 by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2578](https://togithub.com/vercel/swr/pull/2578) - fix: Fix dependency tracking and useSES bug by [@​shuding](https://togithub.com/shuding) and [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2576](https://togithub.com/vercel/swr/pull/2576) #### New Contributors - [@​fxOne](https://togithub.com/fxOne) made their first contribution in [https://github.com/vercel/swr/pull/2559](https://togithub.com/vercel/swr/pull/2559) - [@​oosawy](https://togithub.com/oosawy) made their first contribution in [https://github.com/vercel/swr/pull/2563](https://togithub.com/vercel/swr/pull/2563) - [@​HerringtonDarkholme](https://togithub.com/HerringtonDarkholme) made their first contribution in [https://github.com/vercel/swr/pull/2571](https://togithub.com/vercel/swr/pull/2571) **Full Changelog**: vercel/swr@v2.1.3...v2.1.4 ### [`v2.1.3`](https://togithub.com/vercel/swr/releases/tag/v2.1.3) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.2...v2.1.3) #### What's Changed - Fix [#​2548](https://togithub.com/vercel/swr/issues/2548): pass origin key to subcription callback by [@​Zheaoli](https://togithub.com/Zheaoli) in [https://github.com/vercel/swr/pull/2550](https://togithub.com/vercel/swr/pull/2550) - Examples: fix type in axios-typescript example by [@​daochouwangu](https://togithub.com/daochouwangu) in [https://github.com/vercel/swr/pull/2552](https://togithub.com/vercel/swr/pull/2552) - Update Cache Interface types by [@​dmmulroy](https://togithub.com/dmmulroy) in [https://github.com/vercel/swr/pull/2554](https://togithub.com/vercel/swr/pull/2554) - fix: data passed to refreshInterval function is not latest by [@​hong24](https://togithub.com/hong24) in [https://github.com/vercel/swr/pull/2354](https://togithub.com/vercel/swr/pull/2354) - types: allow passing function as `Data` for `useSWRSubscriptionOptions` by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2551](https://togithub.com/vercel/swr/pull/2551) #### New Contributors - [@​Zheaoli](https://togithub.com/Zheaoli) made their first contribution in [https://github.com/vercel/swr/pull/2550](https://togithub.com/vercel/swr/pull/2550) - [@​daochouwangu](https://togithub.com/daochouwangu) made their first contribution in [https://github.com/vercel/swr/pull/2552](https://togithub.com/vercel/swr/pull/2552) - [@​dmmulroy](https://togithub.com/dmmulroy) made their first contribution in [https://github.com/vercel/swr/pull/2554](https://togithub.com/vercel/swr/pull/2554) **Full Changelog**: vercel/swr@v2.1.2...v2.1.3 ### [`v2.1.2`](https://togithub.com/vercel/swr/releases/tag/v2.1.2) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.1...v2.1.2) ##### Patches - Improved type inferring for `swr/subscription` - Adding `SWRSubscriptionOptions` type for `swr/subscription` #### Changes - test: add typing test for empty config by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2521](https://togithub.com/vercel/swr/pull/2521) - test: fix syntax error in Equal type alias implementation by [@​SACHINnANYAKKARA](https://togithub.com/SACHINnANYAKKARA) in [https://github.com/vercel/swr/pull/2517](https://togithub.com/vercel/swr/pull/2517) - chore: remove engines by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2536](https://togithub.com/vercel/swr/pull/2536) - types: improve `useSWRSubscription` types by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2535](https://togithub.com/vercel/swr/pull/2535) - Rename subscription types by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2537](https://togithub.com/vercel/swr/pull/2537) #### New Contributors - [@​SACHINnANYAKKARA](https://togithub.com/SACHINnANYAKKARA) made their first contribution in [https://github.com/vercel/swr/pull/2517](https://togithub.com/vercel/swr/pull/2517) **Full Changelog**: vercel/swr@v2.1.1...v2.1.2 ### [`v2.1.1`](https://togithub.com/vercel/swr/releases/tag/v2.1.1) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.0...v2.1.1) #### Patches - refactor: remove useless dataRef, always compare cached data by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2431](https://togithub.com/vercel/swr/pull/2431) - fix: swr infers incorrect `data` type for default `SWRConfig` generic type by [@​connorch](https://togithub.com/connorch) in [https://github.com/vercel/swr/pull/2506](https://togithub.com/vercel/swr/pull/2506) #### Documentation - docs: update subscription example by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2499](https://togithub.com/vercel/swr/pull/2499) #### New Contributors - [@​connorch](https://togithub.com/connorch) made their first contribution in [https://github.com/vercel/swr/pull/2506](https://togithub.com/vercel/swr/pull/2506) **Full Changelog**: vercel/swr@v2.1.0...v2.1.1 ### [`v2.1.0`](https://togithub.com/vercel/swr/releases/tag/v2.1.0) [Compare Source](https://togithub.com/vercel/swr/compare/v2.0.4...v2.1.0) #### Feature - Subscription mode by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/1263](https://togithub.com/vercel/swr/pull/1263) - parallel option for useSWRInfinite by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2404](https://togithub.com/vercel/swr/pull/2404) Checkout [subscription docs](https://swr.vercel.app/docs/subscription) and [useSWRInfinite parallel fetching docs](https://swr.vercel.app/docs/pagination#parallel-fetching-mode) for more details #### Patches - fix: use the latest config in useSWRMutation by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2468](https://togithub.com/vercel/swr/pull/2468) - Fix: type support for suspense and fallbackData([#​2396](https://togithub.com/vercel/swr/issues/2396)) by [@​taro-28](https://togithub.com/taro-28) in [https://github.com/vercel/swr/pull/2452](https://togithub.com/vercel/swr/pull/2452) - Error should be reset when new data comes by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2472](https://togithub.com/vercel/swr/pull/2472) - fix: avoid creating new snapshot if cache is not updated at client during streaming by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2475](https://togithub.com/vercel/swr/pull/2475) - refactor: initialize the cache only on first access by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2479](https://togithub.com/vercel/swr/pull/2479) #### Misc - ci: fix publish workflow by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2453](https://togithub.com/vercel/swr/pull/2453) - ci: faster e2e test by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2428](https://togithub.com/vercel/swr/pull/2428) - test: add a test for keepPreviousData without changing key by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2470](https://togithub.com/vercel/swr/pull/2470) - Always assume subscriptions will return sub count from current key by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2460](https://togithub.com/vercel/swr/pull/2460) - test: Fix flaky e2e test by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2476](https://togithub.com/vercel/swr/pull/2476) - chore: Add subscription example by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2480](https://togithub.com/vercel/swr/pull/2480) #### New Contributors - [@​taro-28](https://togithub.com/taro-28) made their first contribution in [https://github.com/vercel/swr/pull/2452](https://togithub.com/vercel/swr/pull/2452) **Full Changelog**: vercel/swr@v2.0.4...v2.1.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/Unleash/unleash). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS42OS4zIiwidXBkYXRlZEluVmVyIjoiMzUuNjkuMyIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [swr](https://swr.vercel.app) ([source](https://togithub.com/vercel/swr)) | [`2.1.3` -> `2.1.5`](https://renovatebot.com/diffs/npm/swr/2.1.3/2.1.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>vercel/swr</summary> ### [`v2.1.5`](https://togithub.com/vercel/swr/releases/tag/v2.1.5) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.4...v2.1.5) #### What's Changed - fix: missing interop helpers in bundle by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2582](https://togithub.com/vercel/swr/pull/2582) **Full Changelog**: vercel/swr@v2.1.4...v2.1.5 ### [`v2.1.4`](https://togithub.com/vercel/swr/releases/tag/v2.1.4) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.3...v2.1.4) ##### What's Changed - Upgrade bundler by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2557](https://togithub.com/vercel/swr/pull/2557) - examples: fix invalid links by [@​fxOne](https://togithub.com/fxOne) in [https://github.com/vercel/swr/pull/2559](https://togithub.com/vercel/swr/pull/2559) - types: Allow auto-import by improving generated types by [@​oosawy](https://togithub.com/oosawy) in [https://github.com/vercel/swr/pull/2563](https://togithub.com/vercel/swr/pull/2563) - fix: pass serialized args to preload fetcher by [@​oosawy](https://togithub.com/oosawy) in [https://github.com/vercel/swr/pull/2564](https://togithub.com/vercel/swr/pull/2564) - chore: use provenance for release by [@​HerringtonDarkholme](https://togithub.com/HerringtonDarkholme) in [https://github.com/vercel/swr/pull/2571](https://togithub.com/vercel/swr/pull/2571) - deps: update [@​testing-library/react](https://togithub.com/testing-library/react) to v14 by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2578](https://togithub.com/vercel/swr/pull/2578) - fix: Fix dependency tracking and useSES bug by [@​shuding](https://togithub.com/shuding) and [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2576](https://togithub.com/vercel/swr/pull/2576) ##### New Contributors - [@​fxOne](https://togithub.com/fxOne) made their first contribution in [https://github.com/vercel/swr/pull/2559](https://togithub.com/vercel/swr/pull/2559) - [@​oosawy](https://togithub.com/oosawy) made their first contribution in [https://github.com/vercel/swr/pull/2563](https://togithub.com/vercel/swr/pull/2563) - [@​HerringtonDarkholme](https://togithub.com/HerringtonDarkholme) made their first contribution in [https://github.com/vercel/swr/pull/2571](https://togithub.com/vercel/swr/pull/2571) **Full Changelog**: vercel/swr@v2.1.3...v2.1.4 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/David-Duefrene/dataviewer). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS41Ny40IiwidXBkYXRlZEluVmVyIjoiMzUuNTguMiJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Fixes #2446. CC @promer94.
The overall idea of
useSES
is that state changes are triggered from the external. It works in a pipeline of "external state change → compare it with local state's snapshot → trigger re-render and update local state". The main catch here is that SWR's dependency tracking system (stateDependencies.data = true
) isn't considered as a state in that loop. But then, even if we putstateDependencies
part of the state and compare/update it throughuseSES
, we can't do a synchronous read of the snapshot which is required as we use a getter:Mentally this should work (similar to this example) but it doesn't seem to with
useSES
.So in this PR, an extra ref
latestComparedState
is added to track the latest snapshot thatuseSES
received inside, and return that state if possible. This shouldn't cause any problem in concurrent rendering because the process should happen in the same component instance and tick asuseSES
's returned state, but as a complete state.This way we are still managing the state via
useSES
but only re-renders it when necessary.Here's a diagram explaining the idea:
codesandbox ci
https://codesandbox.io/s/2446-grkt00?file=/src/App.js
https://codesandbox.io/s/swr-re-render-dn2whh?file=/src/App.tsx