<i>have to specify exact dependency versions in my package.json, and almost every time I update one of them, something goes wrong.</i><p>That&#x27;s where semantic versioning comes in. Most libraries follow it - if the major version number changes, it&#x27;s a breaking change. If it doesn&#x27;t, you&#x27;re safe to upgrade.