diff --git a/node_modules/@changesets/assemble-release-plan/dist/assemble-release-plan.cjs.dev.js b/node_modules/@changesets/assemble-release-plan/dist/assemble-release-plan.cjs.dev.js
index e1376ca..eb5038b 100644
--- a/node_modules/@changesets/assemble-release-plan/dist/assemble-release-plan.cjs.dev.js
+++ b/node_modules/@changesets/assemble-release-plan/dist/assemble-release-plan.cjs.dev.js
@@ -138,16 +138,52 @@ function determineDependents({
         } of dependencyVersionRanges) {
           if (nextRelease.type === "none") {
             continue;
-          } else if (shouldBumpMajor({
-            dependent,
+          }
+
+          if (depType === "peerDependencies" && !config.autoBumpPeerDependentsInSameChangeset) {
+            continue;
+          }
+
+          if (shouldBumpsForPeerDeps({
             depType,
             versionRange,
-            releases,
             nextRelease,
             preInfo,
-            onlyUpdatePeerDependentsWhenOutOfRange: config.___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH.onlyUpdatePeerDependentsWhenOutOfRange
+            onlyUpdatePeerDependentsWhenOutOfRange: config.autoBumpPeerDependentsCondition === "out-of-range"
           })) {
-            type = "major";
+            if (config.autoBumpPeerDependentsStrategy === "major") {
+              if (nextRelease.type === "patch") {
+                if (!semverSatisfies__default['default'](incrementVersion(nextRelease, preInfo), versionRange)) {
+                  type = "patch";
+                }
+              } // bump major only if the dependent doesn't already have a major release.
+              else if (!releases.has(dependent) || releases.has(dependent) && releases.get(dependent).type !== "major") type = "major";
+            } else {
+              // autoBumpPeerDependentsStrategy is "follow"
+              if (!releases.has(dependent)) {
+                type = nextRelease.type;
+              } else {
+                switch (releases.get(dependent).type) {
+                  case "none":
+                    type = nextRelease.type;
+                    break;
+
+                  case "patch":
+                    if (nextRelease.type !== "patch") {
+                      type = nextRelease.type;
+                    }
+
+                    break;
+
+                  case "minor":
+                    if (nextRelease.type === "major") {
+                      type = nextRelease.type;
+                    }
+
+                    break;
+                }
+              }
+            }
           } else if ((!releases.has(dependent) || releases.get(dependent).type === "none") && (config.___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH.updateInternalDependents === "always" || !semverSatisfies__default['default'](incrementVersion(nextRelease, preInfo), versionRange))) {
             switch (depType) {
               case "dependencies":
@@ -245,20 +281,17 @@ function getDependencyVersionRanges(dependentPkgJSON, dependencyRelease) {
   return dependencyVersionRanges;
 }
 
-function shouldBumpMajor({
-  dependent,
+function shouldBumpsForPeerDeps({
   depType,
   versionRange,
-  releases,
   nextRelease,
   preInfo,
   onlyUpdatePeerDependentsWhenOutOfRange
 }) {
   // we check if it is a peerDependency because if it is, our dependent bump type might need to be major.
-  return depType === "peerDependencies" && nextRelease.type !== "none" && nextRelease.type !== "patch" && ( // 1. If onlyUpdatePeerDependentsWhenOutOfRange set to true, bump major if the version is leaving the range.
+  return depType === "peerDependencies" && nextRelease.type !== "none" && ( // 1. If onlyUpdatePeerDependentsWhenOutOfRange set to true, bump major if the version is leaving the range.
   // 2. If onlyUpdatePeerDependentsWhenOutOfRange set to false, bump major regardless whether or not the version is leaving the range.
-  !onlyUpdatePeerDependentsWhenOutOfRange || !semverSatisfies__default['default'](incrementVersion(nextRelease, preInfo), versionRange)) && ( // bump major only if the dependent doesn't already has a major release.
-  !releases.has(dependent) || releases.has(dependent) && releases.get(dependent).type !== "major");
+  !onlyUpdatePeerDependentsWhenOutOfRange || !semverSatisfies__default['default'](incrementVersion(nextRelease, preInfo), versionRange));
 }
 
 // This function takes in changesets and returns one release per
diff --git a/node_modules/@changesets/assemble-release-plan/dist/assemble-release-plan.cjs.prod.js b/node_modules/@changesets/assemble-release-plan/dist/assemble-release-plan.cjs.prod.js
index 3a83720..80731a2 100644
--- a/node_modules/@changesets/assemble-release-plan/dist/assemble-release-plan.cjs.prod.js
+++ b/node_modules/@changesets/assemble-release-plan/dist/assemble-release-plan.cjs.prod.js
@@ -70,15 +70,24 @@ function determineDependents({releases: releases, packagesByName: packagesByName
       if (!dependentPackage) throw new Error("Dependency map is incorrect");
       if (config.ignore.includes(dependent)) type = "none"; else {
         const dependencyVersionRanges = getDependencyVersionRanges(dependentPackage.packageJson, nextRelease);
-        for (const {depType: depType, versionRange: versionRange} of dependencyVersionRanges) if ("none" !== nextRelease.type) if (shouldBumpMajor({
-          dependent: dependent,
+        for (const {depType: depType, versionRange: versionRange} of dependencyVersionRanges) if ("none" !== nextRelease.type && ("peerDependencies" !== depType || config.autoBumpPeerDependentsInSameChangeset)) if (shouldBumpsForPeerDeps({
           depType: depType,
           versionRange: versionRange,
-          releases: releases,
           nextRelease: nextRelease,
           preInfo: preInfo,
-          onlyUpdatePeerDependentsWhenOutOfRange: config.___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH.onlyUpdatePeerDependentsWhenOutOfRange
-        })) type = "major"; else if (!(releases.has(dependent) && "none" !== releases.get(dependent).type || "always" !== config.___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH.updateInternalDependents && semverSatisfies__default.default(incrementVersion(nextRelease, preInfo), versionRange))) switch (depType) {
+          onlyUpdatePeerDependentsWhenOutOfRange: "out-of-range" === config.autoBumpPeerDependentsCondition
+        })) if ("major" === config.autoBumpPeerDependentsStrategy) "patch" === nextRelease.type ? semverSatisfies__default.default(incrementVersion(nextRelease, preInfo), versionRange) || (type = "patch") : (!releases.has(dependent) || releases.has(dependent) && "major" !== releases.get(dependent).type) && (type = "major"); else if (releases.has(dependent)) switch (releases.get(dependent).type) {
+         case "none":
+          type = nextRelease.type;
+          break;
+
+         case "patch":
+          "patch" !== nextRelease.type && (type = nextRelease.type);
+          break;
+
+         case "minor":
+          "major" === nextRelease.type && (type = nextRelease.type);
+        } else type = nextRelease.type; else if (!(releases.has(dependent) && "none" !== releases.get(dependent).type || "always" !== config.___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH.updateInternalDependents && semverSatisfies__default.default(incrementVersion(nextRelease, preInfo), versionRange))) switch (depType) {
          case "dependencies":
          case "optionalDependencies":
          case "peerDependencies":
@@ -129,8 +138,8 @@ function getDependencyVersionRanges(dependentPkgJSON, dependencyRelease) {
   return dependencyVersionRanges;
 }
 
-function shouldBumpMajor({dependent: dependent, depType: depType, versionRange: versionRange, releases: releases, nextRelease: nextRelease, preInfo: preInfo, onlyUpdatePeerDependentsWhenOutOfRange: onlyUpdatePeerDependentsWhenOutOfRange}) {
-  return "peerDependencies" === depType && "none" !== nextRelease.type && "patch" !== nextRelease.type && (!onlyUpdatePeerDependentsWhenOutOfRange || !semverSatisfies__default.default(incrementVersion(nextRelease, preInfo), versionRange)) && (!releases.has(dependent) || releases.has(dependent) && "major" !== releases.get(dependent).type);
+function shouldBumpsForPeerDeps({depType: depType, versionRange: versionRange, nextRelease: nextRelease, preInfo: preInfo, onlyUpdatePeerDependentsWhenOutOfRange: onlyUpdatePeerDependentsWhenOutOfRange}) {
+  return !("peerDependencies" !== depType || "none" === nextRelease.type || onlyUpdatePeerDependentsWhenOutOfRange && semverSatisfies__default.default(incrementVersion(nextRelease, preInfo), versionRange));
 }
 
 function flattenReleases(changesets, packagesByName, ignoredPackages) {
diff --git a/node_modules/@changesets/assemble-release-plan/dist/assemble-release-plan.esm.js b/node_modules/@changesets/assemble-release-plan/dist/assemble-release-plan.esm.js
index 62891eb..2ed7a07 100644
--- a/node_modules/@changesets/assemble-release-plan/dist/assemble-release-plan.esm.js
+++ b/node_modules/@changesets/assemble-release-plan/dist/assemble-release-plan.esm.js
@@ -127,16 +127,52 @@ function determineDependents({
         } of dependencyVersionRanges) {
           if (nextRelease.type === "none") {
             continue;
-          } else if (shouldBumpMajor({
-            dependent,
+          }
+
+          if (depType === "peerDependencies" && !config.autoBumpPeerDependentsInSameChangeset) {
+            continue;
+          }
+
+          if (shouldBumpsForPeerDeps({
             depType,
             versionRange,
-            releases,
             nextRelease,
             preInfo,
-            onlyUpdatePeerDependentsWhenOutOfRange: config.___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH.onlyUpdatePeerDependentsWhenOutOfRange
+            onlyUpdatePeerDependentsWhenOutOfRange: config.autoBumpPeerDependentsCondition === "out-of-range"
           })) {
-            type = "major";
+            if (config.autoBumpPeerDependentsStrategy === "major") {
+              if (nextRelease.type === "patch") {
+                if (!semverSatisfies(incrementVersion(nextRelease, preInfo), versionRange)) {
+                  type = "patch";
+                }
+              } // bump major only if the dependent doesn't already have a major release.
+              else if (!releases.has(dependent) || releases.has(dependent) && releases.get(dependent).type !== "major") type = "major";
+            } else {
+              // autoBumpPeerDependentsStrategy is "follow"
+              if (!releases.has(dependent)) {
+                type = nextRelease.type;
+              } else {
+                switch (releases.get(dependent).type) {
+                  case "none":
+                    type = nextRelease.type;
+                    break;
+
+                  case "patch":
+                    if (nextRelease.type !== "patch") {
+                      type = nextRelease.type;
+                    }
+
+                    break;
+
+                  case "minor":
+                    if (nextRelease.type === "major") {
+                      type = nextRelease.type;
+                    }
+
+                    break;
+                }
+              }
+            }
           } else if ((!releases.has(dependent) || releases.get(dependent).type === "none") && (config.___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH.updateInternalDependents === "always" || !semverSatisfies(incrementVersion(nextRelease, preInfo), versionRange))) {
             switch (depType) {
               case "dependencies":
@@ -234,20 +270,17 @@ function getDependencyVersionRanges(dependentPkgJSON, dependencyRelease) {
   return dependencyVersionRanges;
 }
 
-function shouldBumpMajor({
-  dependent,
+function shouldBumpsForPeerDeps({
   depType,
   versionRange,
-  releases,
   nextRelease,
   preInfo,
   onlyUpdatePeerDependentsWhenOutOfRange
 }) {
   // we check if it is a peerDependency because if it is, our dependent bump type might need to be major.
-  return depType === "peerDependencies" && nextRelease.type !== "none" && nextRelease.type !== "patch" && ( // 1. If onlyUpdatePeerDependentsWhenOutOfRange set to true, bump major if the version is leaving the range.
+  return depType === "peerDependencies" && nextRelease.type !== "none" && ( // 1. If onlyUpdatePeerDependentsWhenOutOfRange set to true, bump major if the version is leaving the range.
   // 2. If onlyUpdatePeerDependentsWhenOutOfRange set to false, bump major regardless whether or not the version is leaving the range.
-  !onlyUpdatePeerDependentsWhenOutOfRange || !semverSatisfies(incrementVersion(nextRelease, preInfo), versionRange)) && ( // bump major only if the dependent doesn't already has a major release.
-  !releases.has(dependent) || releases.has(dependent) && releases.get(dependent).type !== "major");
+  !onlyUpdatePeerDependentsWhenOutOfRange || !semverSatisfies(incrementVersion(nextRelease, preInfo), versionRange));
 }
 
 // This function takes in changesets and returns one release per
