gitextract__gxvvg_b/ ├── .codesandbox/ │ └── ci.json ├── .editorconfig ├── .github/ │ ├── CODEOWNERS │ ├── CODE_OF_CONDUCT.md │ ├── CONTRIBUTING.md │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── config.yml │ ├── SECURITY.md │ └── workflows/ │ ├── install/ │ │ └── action.yml │ ├── test-canary.yml │ ├── test-legacy-react.yml │ ├── test-release.yml │ └── trigger-release.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .npmrc ├── .swcrc ├── LICENSE ├── README.md ├── _internal/ │ └── package.json ├── e2e/ │ ├── site/ │ │ ├── README.md │ │ ├── app/ │ │ │ ├── basic-ssr/ │ │ │ │ ├── block.tsx │ │ │ │ └── page.tsx │ │ │ ├── concurrent-transition/ │ │ │ │ ├── page.tsx │ │ │ │ └── transition-demo.tsx │ │ │ ├── issue-2702/ │ │ │ │ ├── page.tsx │ │ │ │ └── reproduction.tsx │ │ │ ├── layout.tsx │ │ │ ├── mutate-server-action/ │ │ │ │ ├── action.tsx │ │ │ │ └── page.tsx │ │ │ ├── page.tsx │ │ │ ├── partially-hydrate/ │ │ │ │ ├── layout.tsx │ │ │ │ ├── loading.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── use-data.tsx │ │ │ ├── perf/ │ │ │ │ └── page.tsx │ │ │ ├── react-server-entry/ │ │ │ │ └── page.tsx │ │ │ ├── render-count/ │ │ │ │ └── page.tsx │ │ │ ├── render-preload-avoid-waterfall/ │ │ │ │ └── page.tsx │ │ │ ├── render-preload-basic/ │ │ │ │ └── page.tsx │ │ │ ├── render-promise-suspense-error/ │ │ │ │ └── page.tsx │ │ │ ├── render-promise-suspense-resolve/ │ │ │ │ └── page.tsx │ │ │ ├── render-promise-suspense-shared/ │ │ │ │ └── page.tsx │ │ │ ├── render-suspense-avoid-rerender/ │ │ │ │ └── page.tsx │ │ │ ├── render-suspense-cached-error/ │ │ │ │ └── page.tsx │ │ │ ├── render-suspense-error/ │ │ │ │ └── page.tsx │ │ │ ├── render-suspense-fallback/ │ │ │ │ └── page.tsx │ │ │ ├── render-suspense-fetcher/ │ │ │ │ └── page.tsx │ │ │ ├── render-suspense-infinite-preload/ │ │ │ │ └── page.tsx │ │ │ ├── render-suspense-initial-data/ │ │ │ │ └── page.tsx │ │ │ ├── render-suspense-keep-previous/ │ │ │ │ └── page.tsx │ │ │ ├── render-suspense-key-change/ │ │ │ │ └── page.tsx │ │ │ ├── render-suspense-multiple-fallbacks/ │ │ │ │ └── page.tsx │ │ │ ├── render-suspense-no-revalidate/ │ │ │ │ └── page.tsx │ │ │ ├── render-suspense-non-promise/ │ │ │ │ └── page.tsx │ │ │ ├── render-suspense-null-key/ │ │ │ │ └── page.tsx │ │ │ ├── render-suspense-same-data/ │ │ │ │ └── page.tsx │ │ │ ├── server-prefetch-warning/ │ │ │ │ └── page.tsx │ │ │ ├── suspense-after-preload/ │ │ │ │ ├── page.tsx │ │ │ │ └── remote-data.tsx │ │ │ ├── suspense-fallback/ │ │ │ │ ├── layout.tsx │ │ │ │ └── promise/ │ │ │ │ └── page.tsx │ │ │ ├── suspense-infinite-get-key/ │ │ │ │ └── page.tsx │ │ │ ├── suspense-retry/ │ │ │ │ ├── manual-retry.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── use-remote-data.ts │ │ │ └── suspense-undefined-key/ │ │ │ └── page.tsx │ │ ├── component/ │ │ │ ├── manual-retry-mutate.tsx │ │ │ ├── manual-retry.tsx │ │ │ ├── only-render-in-client.tsx │ │ │ └── use-remote-data.ts │ │ ├── lib/ │ │ │ ├── sleep.ts │ │ │ └── use-debug-history.ts │ │ ├── next-env.d.ts │ │ ├── next.config.js │ │ ├── package.json │ │ ├── pages/ │ │ │ ├── api/ │ │ │ │ ├── data.ts │ │ │ │ └── retry.ts │ │ │ ├── suspense-retry-19.tsx │ │ │ └── suspense-retry-mutate.tsx │ │ └── tsconfig.json │ └── test/ │ ├── concurrent-transition.test.ts │ ├── initial-render.test.ts │ ├── issue-2702-too-many-hooks.ts │ ├── mutate-server-action.test.ts │ ├── perf.test.ts │ ├── preload-scenarios.test.ts │ ├── promise-scenarios.test.ts │ ├── server-prefetch-warning.test.ts │ ├── stream-ssr.test.ts │ ├── suspense-fallback.test.ts │ ├── suspense-scenarios.test.ts │ ├── suspense-undefined-key.test.ts │ └── tsconfig.json ├── eslint.config.mjs ├── examples/ │ ├── .eslintrc │ ├── api-hooks/ │ │ ├── README.md │ │ ├── hooks/ │ │ │ ├── use-projects.js │ │ │ └── use-repository.js │ │ ├── libs/ │ │ │ └── fetch.js │ │ ├── package.json │ │ └── pages/ │ │ ├── [user]/ │ │ │ └── [repo].js │ │ ├── api/ │ │ │ └── data.js │ │ └── index.js │ ├── autocomplete-suggestions/ │ │ ├── README.md │ │ ├── libs/ │ │ │ └── fetcher.js │ │ ├── package.json │ │ └── pages/ │ │ ├── api/ │ │ │ └── suggestions.js │ │ └── index.js │ ├── axios/ │ │ ├── README.md │ │ ├── libs/ │ │ │ └── useRequest.js │ │ ├── package.json │ │ └── pages/ │ │ ├── [user]/ │ │ │ └── [repo].js │ │ ├── api/ │ │ │ └── data.js │ │ └── index.js │ ├── axios-typescript/ │ │ ├── README.md │ │ ├── libs/ │ │ │ └── useRequest.ts │ │ ├── next-env.d.ts │ │ ├── package.json │ │ ├── pages/ │ │ │ ├── [user]/ │ │ │ │ └── [repo].tsx │ │ │ ├── api/ │ │ │ │ └── data.ts │ │ │ └── index.tsx │ │ └── tsconfig.json │ ├── basic/ │ │ ├── README.md │ │ ├── libs/ │ │ │ └── fetch.js │ │ ├── package.json │ │ └── pages/ │ │ ├── [user]/ │ │ │ └── [repo].js │ │ ├── api/ │ │ │ └── data.js │ │ └── index.js │ ├── basic-typescript/ │ │ ├── README.md │ │ ├── libs/ │ │ │ └── fetch.ts │ │ ├── next-env.d.ts │ │ ├── package.json │ │ ├── pages/ │ │ │ ├── [user]/ │ │ │ │ └── [repo].tsx │ │ │ ├── api/ │ │ │ │ └── data.ts │ │ │ └── index.tsx │ │ └── tsconfig.json │ ├── focus-revalidate/ │ │ ├── README.md │ │ ├── components/ │ │ │ └── button.js │ │ ├── libs/ │ │ │ ├── auth.js │ │ │ └── fetch.js │ │ ├── package.json │ │ └── pages/ │ │ ├── api/ │ │ │ └── user.js │ │ └── index.js │ ├── global-fetcher/ │ │ ├── README.md │ │ ├── libs/ │ │ │ └── fetch.js │ │ ├── package.json │ │ └── pages/ │ │ ├── [user]/ │ │ │ └── [repo].js │ │ ├── _app.js │ │ ├── api/ │ │ │ └── data.js │ │ └── index.js │ ├── infinite/ │ │ ├── README.md │ │ ├── libs/ │ │ │ └── fetch.js │ │ ├── package.json │ │ └── pages/ │ │ └── index.js │ ├── infinite-scroll/ │ │ ├── README.md │ │ ├── hooks/ │ │ │ └── useOnScreen.js │ │ ├── libs/ │ │ │ └── fetch.js │ │ ├── package.json │ │ └── pages/ │ │ └── index.js │ ├── local-state-sharing/ │ │ ├── README.md │ │ ├── libs/ │ │ │ └── store.js │ │ ├── package.json │ │ └── pages/ │ │ └── index.js │ ├── optimistic-ui/ │ │ ├── README.md │ │ ├── libs/ │ │ │ └── fetch.js │ │ ├── package.json │ │ ├── pages/ │ │ │ ├── _app.js │ │ │ ├── api/ │ │ │ │ └── todos.js │ │ │ └── index.js │ │ └── styles.css │ ├── optimistic-ui-immer/ │ │ ├── README.md │ │ ├── libs/ │ │ │ └── fetch.js │ │ ├── package.json │ │ └── pages/ │ │ ├── api/ │ │ │ └── data.js │ │ └── index.js │ ├── prefetch-preload/ │ │ ├── README.md │ │ ├── libs/ │ │ │ └── fetch.js │ │ ├── package.json │ │ └── pages/ │ │ ├── [user]/ │ │ │ └── [repo].js │ │ ├── api/ │ │ │ └── data.js │ │ └── index.js │ ├── refetch-interval/ │ │ ├── README.md │ │ ├── components/ │ │ │ └── button.js │ │ ├── libs/ │ │ │ └── fetch.js │ │ ├── package.json │ │ └── pages/ │ │ ├── api/ │ │ │ └── data.js │ │ └── index.js │ ├── server-render/ │ │ ├── README.md │ │ ├── libs/ │ │ │ └── fetcher.js │ │ ├── package.json │ │ └── pages/ │ │ ├── [pokemon].js │ │ └── index.js │ ├── storage-tab-sync/ │ │ ├── README.md │ │ ├── libs/ │ │ │ └── storage.js │ │ ├── package.json │ │ └── pages/ │ │ └── index.js │ ├── subscription/ │ │ ├── README.md │ │ ├── package.json │ │ └── pages/ │ │ └── index.js │ ├── suspense/ │ │ ├── README.md │ │ ├── app/ │ │ │ ├── layout.jsx │ │ │ └── rsc/ │ │ │ ├── [user]/ │ │ │ │ └── [repo]/ │ │ │ │ ├── error.jsx │ │ │ │ ├── loading.jsx │ │ │ │ ├── page.jsx │ │ │ │ └── repo.jsx │ │ │ ├── loading.jsx │ │ │ ├── page.jsx │ │ │ └── repos.jsx │ │ ├── components/ │ │ │ └── error-handling.js │ │ ├── libs/ │ │ │ └── fetch.js │ │ ├── next-env.d.ts │ │ ├── package.json │ │ └── pages/ │ │ ├── [user]/ │ │ │ └── [repo].js │ │ ├── api/ │ │ │ └── data.js │ │ └── index.js │ ├── suspense-global/ │ │ ├── README.md │ │ ├── components/ │ │ │ └── error-handling.ts │ │ ├── global-swr-config.tsx │ │ ├── libs/ │ │ │ └── fetch.ts │ │ ├── next-env.d.ts │ │ ├── package.json │ │ ├── pages/ │ │ │ ├── [user]/ │ │ │ │ ├── [repo].tsx │ │ │ │ └── detail.tsx │ │ │ ├── _app.tsx │ │ │ ├── api/ │ │ │ │ └── data.ts │ │ │ ├── index.tsx │ │ │ └── repos.tsx │ │ └── tsconfig.json │ └── suspense-retry/ │ ├── app/ │ │ ├── api/ │ │ │ └── route.ts │ │ ├── layout.tsx │ │ ├── manual-retry.tsx │ │ ├── page.tsx │ │ └── use-remote-data.ts │ ├── next-env.d.ts │ ├── next.config.js │ ├── package.json │ ├── pages/ │ │ └── retry.tsx │ └── tsconfig.json ├── immutable/ │ └── package.json ├── infinite/ │ └── package.json ├── jest.config.build.js ├── jest.config.js ├── mutation/ │ └── package.json ├── package.json ├── playwright.config.js ├── pnpm-workspace.yaml ├── scripts/ │ └── bump-next-version.js ├── src/ │ ├── _internal/ │ │ ├── constants.ts │ │ ├── events.ts │ │ ├── index.react-server.ts │ │ ├── index.ts │ │ ├── types.ts │ │ └── utils/ │ │ ├── cache.ts │ │ ├── config-context.ts │ │ ├── config.ts │ │ ├── devtools.ts │ │ ├── env.ts │ │ ├── global-state.ts │ │ ├── hash.ts │ │ ├── helper.ts │ │ ├── merge-config.ts │ │ ├── middleware-preset.ts │ │ ├── mutate.ts │ │ ├── normalize-args.ts │ │ ├── preload.ts │ │ ├── resolve-args.ts │ │ ├── serialize.ts │ │ ├── shared.ts │ │ ├── subscribe-key.ts │ │ ├── timestamp.ts │ │ ├── use-swr-config.ts │ │ ├── web-preset.ts │ │ └── with-middleware.ts │ ├── immutable/ │ │ └── index.ts │ ├── index/ │ │ ├── config.ts │ │ ├── index.react-server.ts │ │ ├── index.ts │ │ ├── serialize.ts │ │ └── use-swr.ts │ ├── infinite/ │ │ ├── index.react-server.ts │ │ ├── index.ts │ │ ├── serialize.ts │ │ └── types.ts │ ├── mutation/ │ │ ├── index.ts │ │ ├── state.ts │ │ └── types.ts │ └── subscription/ │ ├── index.ts │ └── types.ts ├── subscription/ │ └── package.json ├── test/ │ ├── jest-setup.ts │ ├── tsconfig.json │ ├── type/ │ │ ├── .eslintrc │ │ ├── config.tsx │ │ ├── fetcher.ts │ │ ├── helper-types.tsx │ │ ├── internal.tsx │ │ ├── mutate.ts │ │ ├── mutation.ts │ │ ├── option-fetcher.ts │ │ ├── preload.ts │ │ ├── subscription.ts │ │ ├── suspense/ │ │ │ ├── helper-types.tsx │ │ │ ├── suspense.ts │ │ │ └── tsconfig.json │ │ ├── trigger.ts │ │ ├── tsconfig.json │ │ └── utils.ts │ ├── unit/ │ │ ├── serialize.test.ts │ │ ├── utils.test.tsx │ │ └── web-preset.test.ts │ ├── use-swr-cache.test.tsx │ ├── use-swr-concurrent-rendering.test.tsx │ ├── use-swr-config-callbacks.test.tsx │ ├── use-swr-config.test.tsx │ ├── use-swr-context-config.test.tsx │ ├── use-swr-devtools.test.tsx │ ├── use-swr-error.test.tsx │ ├── use-swr-fetcher.test.tsx │ ├── use-swr-focus.test.tsx │ ├── use-swr-immutable.test.tsx │ ├── use-swr-infinite-preload.test.tsx │ ├── use-swr-infinite.test.tsx │ ├── use-swr-integration.test.tsx │ ├── use-swr-key.test.tsx │ ├── use-swr-laggy.test.tsx │ ├── use-swr-legacy-react.test.tsx │ ├── use-swr-loading.test.tsx │ ├── use-swr-local-mutation.test.tsx │ ├── use-swr-middlewares.test.tsx │ ├── use-swr-node-env.test.tsx │ ├── use-swr-offline.test.tsx │ ├── use-swr-preload.test.tsx │ ├── use-swr-promise.test.tsx │ ├── use-swr-reconnect.test.tsx │ ├── use-swr-refresh.test.tsx │ ├── use-swr-remote-mutation.test.tsx │ ├── use-swr-revalidate.test.tsx │ ├── use-swr-server.test.tsx │ ├── use-swr-streaming-ssr.test.tsx │ ├── use-swr-subscription.test.tsx │ ├── use-swr-suspense.test.tsx │ └── utils.tsx └── tsconfig.json