Everything that changed past your coding agent's knowledge cutoff.
Teams ship faster than ever, and so does every framework, SDK and platform they depend on. Nobody can read all the release notes, migration guides and docs changes, and your coding agent was trained before most of them existed.
unstale reads the official release notes, migration guides, docs and security advisories of the packages you use, distills each change once, and matches it against your code. Your coding agent (Claude Code, Codex or Cursor) then knows what applies here: new APIs worth adopting, breaking changes for your next major upgrade, deprecations, and the security and performance fixes in each version bump. Nothing else.
npx @unstale/cli initArrives with the first release. Until then, build from source.
What your agent gets
- Upgrade reviews. What you must change to move to the next major version, obligations first, located in your code.
- New capabilities. Features released since you wrote the code that could replace custom code, each with its stated benefit.
- Bump digests. What a version bump actually fixes, including security advisories, with no model calls.
- Ambient awareness. One line at the start of a Claude Code session when something new lands for your stack.
Why it holds up
- Source-cited. Every item links to the release note, guide, docs page or advisory it came from.
- Private. Matching runs on your machine. Your code, paths and versions never leave it, and there is no telemetry.
- Signed. The catalog is signed; the client discards anything that does not verify.
- Quiet when it should be. If nothing upstream matters to your code, your agent hears nothing.
- Alongside your update bot. Dependabot and Renovate tell you a new version exists; unstale tells your agent what it means for your code.
Proven on real upgrades
We replay 15 real major upgrades in open-source projects (Next.js 16, Prisma 7, NestJS 12) from the commit before the maintainers upgraded. Of the required changes that official sources document, the catalog covers 60 of 65, and the first batch of 16 the agent works through holds 34 of them. Method and results.
What changed, package by package
12,060 changes across 93 packages, read from official sources and kept current. Any npm or PyPI package your project uses is added on request.
- @ai-sdk/azure 26
- @ai-sdk/openai 118
- @ai-sdk/react 31
- @assistant-ui/react 455
- @assistant-ui/react-markdown 54
- @astrojs/mdx 39
- @astrojs/react 26
- @astrojs/rss 7
- @astrojs/sitemap 5
- @auth0/nextjs-auth0 103
- @extend-ai/react-xlsx 39
- @fortawesome/react-fontawesome 9
- @hookform/resolvers 22
- @nestjs/core 308
- @playwright/test 81
- @pulumi/aws 87
- @pulumi/awsx 86
- @pulumi/command 3
- @pulumi/docker 8
- @pulumi/eks 7
- @pulumi/kubernetes 41
- @pulumi/pulumi 883
- @react-pdf/renderer 9
- @sentry/nextjs 339
- @streamdown/cjk 2
- @streamdown/math 2
- @streamdown/mermaid 3
- @tanstack/react-query 29
- @tanstack/react-query-devtools 5
- @tanstack/react-table 4
- @vercel/analytics 9
- @xyflow/react 55
- ai 278
- aiohttp 170
- anyio 98
- astro 819
- asyncpg 26
- attrs 6
- autoprefixer 16
- axios 204
- azure-core 20
- cffi 9
- charset-normalizer 29
- click 65
- date-fns 8
- docx 86
- docx-preview 2
- dompurify 69
- elkjs 2
- eslint 159
- fflate 7
- globals 18
- hono 296
- jose 52
- jotai 26
- js-cookie 5
- jsdom 1460
- knip 730
- ky 69
- lodash 14
- marked 85
- nanoid 21
- next 629
- openapi-typescript-codegen 1
- papaparse 2
- pdfjs-dist 193
- pino 27
- playwright 97
- postcss 42
- posthog-js 825
- prisma 302
- react 51
- react-day-picker 59
- react-dropzone 37
- react-hook-form 224
- react-icons 1
- react-resizable-panels 124
- reactjs-tiptap-editor 52
- sass 52
- sharp 77
- shiki 71
- sonner 5
- streamdown 148
- tailwind-merge 17
- tailwindcss 181
- tsx 39
- turndown 4
- typescript-eslint 183
- valibot 63
- vite 44
- vitest 536
- ws 14
- zod 216