Every long-lived JS/TS project I've worked on accumulates the same three kinds of rot:
Dependencies in package.json that nothing imports anymore. You added moment, migrated off it, and the line stayed.
Exports nothing consumes. A function was public once, the last caller was deleted, the export is still there advertising an API with no users.
Whole files that fell out of the import graph but never got deleted, so every new engineer reads them trying to understand code that runs nowhere.
None of this breaks the build. That's exactly why it survives. The compiler is happy, the tests pass, and the dead weight compounds quietly until onboarding takes a week and your bundle ships code no user will ever execute.






