Handling mismatched package versions

As your monorepo grows, you may end up with different versions of packages in different workspaces.

For instance, app may use react@18.0.0, but web may use react@17.0.0. This is especially true when you've just migrated from a multi-repo setup.

Mis-matched dependencies in different repositories can mean that code runs unexpectedly. React, for instance, will error if there is more than one version installed.


Our recommended method for handling this problem is with @manypkg/cli (opens in a new tab) - a CLI which can ensure that your dependencies match across your repositories.

Here's a quick example. At the root of your package.json, add a postinstall script.

  "scripts": {
    // This will check your dependencies match
    // after each installation
    "postinstall": "manypkg check"
  "dependencies": {
    // Make sure you install @manypkg/cli
    "@manypkg/cli": "latest"

You can also run manypkg fix to automatically update them throughout your repository.