Your node_modules has a browser in it

Paste a package.json, or name a public repo. Every line the platform can delete, what it weighs, and whether it is safe yet.

  • Remove"framer-motion"62.3 kB

    Use instead@starting-style with transition-behavior: allow-discrete Newly available

  • Remove"@mui/x-date-pickers"58.1 kB

    Use instead<input type="date"> and <input type="time"> Safe today

  • Remove"animejs"40.3 kB

    Use insteadelement.animate() Safe today

  • Remove"@ng-select/ng-select"33.2 kB

    Use insteadappearance: base-select on <select> Bleeding edge

  • Remove"@floating-ui/react"30.8 kB

    Use insteadThe Popover API with CSS anchor positioning Bleeding edge

  • Remove"react-virtualized"27.9 kB

    Use insteadcontent-visibility: auto Newly available

Where the catalog stands

Baseline widely available
In every major engine for years. Use these without a fallback.
Baseline newly available
In every major engine, but recently. Check your support target.
Limited availability
Missing from at least one engine. These need a fallback.
64
264
36
12

56% widely available, 25% newly available, 19% limited.

Start here

The rules with a worked demo behind them.

All 64 rules

What this does not claim

A dependency being in your package.json is not proof of what you use it for. Someone installs Framer Motion for layout animations, not for fade-ins. So every finding here is a conditional, and it arrives with the cases where the library is still the better choice.

Sizes describe the whole package, so a total assumes a full replacement that may not apply to you. That is why the number always says "up to".

How this is measured

Your dependency names are matched against the catalog. Version ranges are ignored, nothing else in the file is read, and nothing is stored: the report is encoded in its own URL.

Support status is resolved from web-features@3.36.0, captured 2026-09-12. A rule reports the status of its least-supported required feature, so a rule needing two features is only as available as the worse one.

Sizes are minified and gzipped, from bundlephobia, captured 2026-09-12. They describe a whole package, so a total assumes a full replacement. That is why every figure says "up to".

A dependency being installed is not proof of what it is used for. Read each finding's conditions before changing anything.

Or run it where the code is

npx youmightnotneed

Same catalog, same conditions, no paste. Add --verbose to print every condition, or --json for scripts and agents.

Or hand it to an agent

Paste this into Claude Code, Cursor, Copilot or anything that runs commands. Matching is exact, so nothing guesses at what your packages do.

Or install it for good. MCP server v0.3.2, or the skill:

claude mcp add youmightnotneed -- npx -y youmightnotneed-mcp
npx skills add jomaendle/youmightnotneed