The run time resource usage risks are only one element of deep dependency trees, and certainly the one I worry about least. The biggest risks are the fact that you&#x27;ve handed every person in your dependency tree developer status in your project. That includes not just potential maliciousness, though that is a factor, but potentially disappearing the project entirely, potentially taking it in an unexpected direction, potentially introducing bugs (oh that all projects merely monotonically got better), potentially introducing security vulnerabilities in deep parts of the stack you wouldn&#x27;t even think to audit, diamond dependencies, difficult-to-replicate builds, etc. There are then tools that can strike back at some of these, but there&#x27;s something to be said for avoiding the problem.<p>For that matter, there&#x27;s no guarantee that tree-shaking would even have fixed the referenced issue; if the library preloaded 10MB of stuff, like a Unicode definition table, that you didn&#x27;t use, but the tree shaker couldn&#x27;t quite prove you never would, you&#x27;ll still end up with it loaded at runtime. (For that matter, you may very well be using such code even though you don&#x27;t mean to, if, for instance, you have code that <i>attempts</i> to load the table, and uses it if it loads for something trivial, but will just keep going without it if it is not present. The tree shaker will determine (correctly!) that you&#x27;re using it.)<p>Basically, tree shaking only sort of kind of addresses one particular problem that deep dependencies can introduce, and that one not even necessarily reliably and well.