I noticed that react-test-renderer's peer dependency for React gets bumped with every version update (or at least that's what happens in version 15.  v16 is still 16.0.0). Is this required? Could the peer dependency for version 16 not stay at ^16.0.0 even after the versions of each package get bumped to say 16.1?

I ask because this makes it hard for libraries to pull in react-test-renderer so that their end users (who do not use it directly) don't have to pull in a package they never use directly. 

The specific example I have in mind is enzyme. For version 15, it has a peer dependency on `react@^15.5.0`, and a dependency on `react-test-renderer@^15.5.0`. if I have react 15.5 installed and enzyme tries to install the latest react-test-renderer, then it will pull in 15.6.2, which requires `react@^15.6.2`, which 15.5 does not satisfy.

Until recently, they made the test renderer a peer dependency, which was very annoying as a user of the library because you should not have to manually install a package that you don't use directly. We changed that to be a regular dependency, but are now noticing that the peer dependency the test-renderer has on react gets bumped every version change, which causes the above problem.

Is it not possible to leave the peer dependency within the major version? At least for v16 going forward? Or is there another way a library can pull in the test renderer without forcing the user to do it? 
if (semver.lt(json.version, '1.0.0')) {
        json.version = `0.${semver.minor(json.version) + 1}.0`;
      } else {
        json.version = version;
      }
      if (project !== 'react') {
        json.peerDependencies.react = `^${version}`;
      }
      await writeJson(path, json, {spaces: 2});
    };
    await Promise.all(projects.map(updateProjectPackage));
    
    await exec('yarn version-check', {cwd});
    await execUnlessDry(
      `git commit -am "Updating package versions for release ${version}"`,
      {cwd, dry}
    );
  } catch (error) {
    throw Error(
      chalk`
      Failed while updating package versions
      {white ${error.message}}
    `
    );
  }
};
module.exports = async params => {
  return logPromise(update(params), 'Updating package versions');
};