Jiachi Liu
90d · built 2026-09-08
Performance
What Jiachi Liu shipped in the selected window, measured in ETV, and how it compares with the 90 days before it.
Effective capacity
−0.7engineers
delivers like 0.3 (0.3x pre-AI)
Output (ETV)
1.5ETV
+1183.3% vs 0.1 prior
Features share
33.1%
−33.6 pp vs prior window
Fixes share
0.0%
±0 pp vs prior window
Work mix
33.1% Features6.5% Maintenance58.4% Tests1.9% Docs0% Fixes
17 commits over 90 days, ending 2026-09-08.
Daily performance
Daily ETV, stacked by Features, Maintenance, Tests, Docs and Fixes.
Repository spread
Where this developer's commits land. Concentrated work (top1 > 80%) vs polymath spread (top1 < 30%).
Most impactful commits
Top 10 by ETV in the last 90 days.
- 0.7ETVfeat: rsc fetches and prefill swr cache (#4275) Add RSC cache preloading for SWR. This lets a Server Component call `preload(key, fetcher)` and pass the returned `cacheData` object through the server/client boundary into `SWRConfig`. On the client, `useSWR` consumes that cache data before calling the browser fetcher, returns the server-loaded value, and writes it into the SWR cache after hydration. Flow: ```txt Server Component preload(key, fetcher) | returns { [serializedKey]: dataOrPromise } v Client Boundary <SWRConfig value={{ cacheData }}> | v useSWR(key, clientFetcher) - uses server-loaded cache data for initial data - hydrates the SWR cache after hydration - skips duplicate initial browser fetch/revalidation - later mutate/focus/reconnect revalidation still uses clientFetcher ``` Example: ```tsx // Server Component import { preload } from 'swr' import { ClientRoot } from './client' const key = '/api/user' async function getUser() { return { name: 'Ada' } } export default function Page() { const cacheData = preload(key, getUser) return <ClientRoot cacheData={cacheData} /> } ``` ```tsx // Client Component 'use client' import useSWR, { SWRConfig } from 'swr' import type { CacheData } from 'swr' const key = '/api/user' async function fetchUser() { const res = await fetch(key) return res.json() } function User() { const { data } = useSWR(key, fetchUser) return <div>{data.name}</div> } export function ClientRoot({ cacheData }: { cacheData: CacheData }) { return ( <SWRConfig value={{ cacheData }}> <User /> </SWRConfig> ) } ``` `cacheData` is object-shaped, so nested configs merge like `fallback` and duplicate keys are replaced by the later config. The tests cover Suspense and default modes, prevent leaking the internal cache-data record into user data, and verify that explicit later revalidation still calls the client fetcher. Resolves #4065github.com-vercel-swr · d2e2f2c0 · 2026-07-02
- 0.6ETVfeat: unload() api (#4298) resolves #4297github.com-vercel-swr · 723867fd · 2026-07-15
- 0.2ETVre-organize e2e (#4289) Refine e2e structure, support dev & prod modes, upgrade Next.js to latest canary e2e/site wasn't a workspace package — its deps were never installed and it silently built with the root's Next.js and React 18. It also could only run against a prod build. Now the app lives at t`est/e2e/site` as a real workspace package on next@16.3.0-canary.76 + React 19, and Playwright runs in either mode: ``` pnpm dev:e2e # run the site (localhost:4000) pnpm build:e2e && pnpm test:e2e # test against next start pnpm test:e2e:dev # test against next dev ```github.com-vercel-swr · 46c9a736 · 2026-07-06
- 0.0ETVchore: upgrade to TypeScript 7 (#4305) ## Summary Upgrades the repo to TypeScript 7 (`7.0.2`, the native Go port). Three things in TS 7 broke, each fixed here: - **`.d.ts` generation failed the build outright.** TS 7 no longer ships the JavaScript compiler API, so bunchee errored with `Detected TypeScript 7.0.2, which no longer ships the JavaScript compiler API required for generating type declarations`. Added `@typescript/typescript6` as a devDependency, which supplies that API — bunchee now reports `Using @typescript/typescript6 API for TypeScript 7.0.2 type declaration generation` and emits declarations as before. - **`test/tsconfig.json` failed to load** with `TS5102: Option 'baseUrl' has been removed` and `TS5090: Non-relative paths are not allowed`. The `paths` block it guarded was already dead — it mapped `swr` and friends to `core/src/index.ts`, a layout that no longer exists now that sources live under `src/*` and the top-level directories are `package.json` shims pointing at `dist/`. Tests resolve `swr`/`swr/*` through the `node_modules/swr` → repo-root self-link and its exports map, so removing the block changes nothing (verified by running TS 5.9.3 against both the old and new config). - **`process`, `global`, `require`, and `expect` became `Cannot find name`.** TS 7 no longer auto-includes `@types/node` and `@types/jest` from `typeRoots` for the test projects; `--listFiles` confirmed `@types/node` was never loaded. Declared `types: ["node", "jest"]` explicitly in the two test tsconfigs, which works under both 5.9.3 and 7. The e2e fixture site needed the same treatment. Next.js also `require()`s the TS JavaScript compiler API for its build-time type check, so `next build` failed with `TypeScript 7.0.2 does not provide the compiler API required by Next.js`. Bumped it to `next@16.3.0-canary.97` and enabled `experimental.useTypeScriptCli`, which drives the `tsc` CLI instead. That surfaced two more removed options in the site's tsconfig — `target: es5` (`TS5108`) and `baseUrl` (`TS5102`) — bumped to `es2017` and dropped `baseUrl`, whose `~/*` paths are already relative to the tsconfig directory. ## Notes `rollup-plugin-dts` still declares `typescript@^4.5 || ^5.0 || ^6.0`, so installs print an unmet-peer warning. Declaration generation goes through `@typescript/typescript6` rather than that peer, and `attw --pack .` is green across every entrypoint.github.com-vercel-swr · 6e68cdce · 2026-07-27
- 0.0ETVci: update release job (#4278)github.com-vercel-swr · 10b6b65d · 2026-06-22
- 0.0ETVchore: use oxfmt and oxlint (#4288)github.com-vercel-swr · c822a5df · 2026-07-03
- 0.0ETVci: switch npm publish to OIDC trusted publishing (#4274) * ci: switch npm publish to OIDC trusted publishinggithub.com-vercel-swr · 11bbc8fa · 2026-06-22
- 0.0ETVci: remove legacy release from the test pipeline (#4280)github.com-vercel-swr · c085e68a · 2026-06-22
- 0.0ETV[ci] add prevent deployment config (#4326)github.com-vercel-swr · 01cb4888 · 2026-09-02