diff --git a/lib/workers/branch/index.js b/lib/workers/branch/index.js
index 4a7bfd3e858004531a7ede7a0b007c1ca757f1c9..2aa1ee0afa0ec389c11351e1b05dfabf77d6a184 100644
--- a/lib/workers/branch/index.js
+++ b/lib/workers/branch/index.js
@@ -177,7 +177,10 @@ async function processBranch(branchConfig) {
       logger.debug('Passing repository-changed error up');
       throw err;
     }
-    logger.error({ err }, `Error updating branch: ${err.message}`);
+    // istanbul ignore if
+    if (err.message !== 'registry-failure') {
+      logger.error({ err }, `Error updating branch: ${err.message}`);
+    }
     // Don't throw here - we don't want to stop the other renovations
     return 'error';
   }
diff --git a/lib/workers/branch/lock-files.js b/lib/workers/branch/lock-files.js
index 7d9cbf309c77c85392518fbbe5af56aed5f9be80..f32a8664cb1df1b9ca51ca8686d7c2bd86ca5372 100644
--- a/lib/workers/branch/lock-files.js
+++ b/lib/workers/branch/lock-files.js
@@ -402,6 +402,22 @@ async function getUpdatedLockFiles(config) {
       'package-lock.json'
     );
     if (res.error) {
+      // istanbul ignore if
+      if (res.stderr && res.stderr.includes('No matching version found for')) {
+        for (const upgrade of config.upgrades) {
+          if (
+            res.stderr.includes(
+              `No matching version found for ${upgrade.depName}`
+            )
+          ) {
+            logger.info(
+              { dependency: upgrade.depName },
+              'npm install failed for the dependency being updated - skipping branch creation'
+            );
+            throw new Error('registry-failure');
+          }
+        }
+      }
       lockFileErrors.push({
         lockFile: lockFileName,
         stderr: res.stderr,
@@ -433,6 +449,22 @@ async function getUpdatedLockFiles(config) {
       'npm-shrinkwrap.json'
     );
     if (res.error) {
+      // istanbul ignore if
+      if (res.stderr && res.stderr.includes('No matching version found for')) {
+        for (const upgrade of config.upgrades) {
+          if (
+            res.stderr.includes(
+              `No matching version found for ${upgrade.depName}`
+            )
+          ) {
+            logger.info(
+              { dependency: upgrade.depName },
+              'npm install failed for the dependency being updated - skipping branch creation'
+            );
+            throw new Error('registry-failure');
+          }
+        }
+      }
       lockFileErrors.push({
         lockFile: lockFileName,
         stderr: res.stderr,
@@ -462,6 +494,24 @@ async function getUpdatedLockFiles(config) {
       env
     );
     if (res.error) {
+      // istanbul ignore if
+      if (res.stderr && res.stderr.includes(`Couldn't find any versions for`)) {
+        for (const upgrade of config.upgrades) {
+          /* eslint-disable no-useless-escape */
+          if (
+            res.stderr.includes(
+              `Couldn't find any versions for \\\"${upgrade.depName}\\\"`
+            )
+          ) {
+            logger.warn(
+              { dependency: upgrade.depName },
+              'yarn install failed for the dependency being updated - skipping branch creation'
+            );
+            throw new Error('registry-failure');
+          }
+          /* eslint-enable no-useless-escape */
+        }
+      }
       lockFileErrors.push({
         lockFile: lockFileName,
         stderr: res.stderr,
@@ -491,6 +541,22 @@ async function getUpdatedLockFiles(config) {
       env
     );
     if (res.error) {
+      // istanbul ignore if
+      if (res.stdout && res.stdout.includes(`No compatible version found:`)) {
+        for (const upgrade of config.upgrades) {
+          if (
+            res.stdout.includes(
+              `No compatible version found: ${upgrade.depName}`
+            )
+          ) {
+            logger.warn(
+              { dependency: upgrade.depName },
+              'pnpm install failed for the dependency being updated - skipping branch creation'
+            );
+            throw new Error('registry-failure');
+          }
+        }
+      }
       lockFileErrors.push({
         lockFile: lockFileName,
         stderr: res.stderr,
diff --git a/lib/workers/branch/npm.js b/lib/workers/branch/npm.js
index 7f2c44848a98a47766d09a58ce633b5d122ed81a..1558d5c93df3599cb150b4798f515513aaada004 100644
--- a/lib/workers/branch/npm.js
+++ b/lib/workers/branch/npm.js
@@ -70,7 +70,7 @@ async function generateLockFile(tmpDir, env, filename) {
       'Generated lockfile'
     );
   } catch (err) /* istanbul ignore next */ {
-    logger.warn(
+    logger.info(
       {
         err,
         stdout,
diff --git a/lib/workers/branch/pnpm.js b/lib/workers/branch/pnpm.js
index f843220c359baf0ee89205b36c7a59a1b21fe973..5f0b3bbbb6eaf3da4ae17870b78456e8049ef161 100644
--- a/lib/workers/branch/pnpm.js
+++ b/lib/workers/branch/pnpm.js
@@ -79,7 +79,7 @@ async function generateLockFile(tmpDir, env) {
       },
       'pnpm install error'
     );
-    return { error: true, stderr: err.stderr };
+    return { error: true, stderr: err.stderr, stdout: err.stdout };
   }
   return { lockFile };
 }
diff --git a/lib/workers/branch/yarn.js b/lib/workers/branch/yarn.js
index 03187adb67d4b5e2f34d87a668102bfe38d448cf..cdc640a3364d708afd92d752ac64d808b21cb8c5 100644
--- a/lib/workers/branch/yarn.js
+++ b/lib/workers/branch/yarn.js
@@ -81,6 +81,8 @@ async function generateLockFile(tmpDir, env) {
     logger.info(
       {
         err,
+        stdout,
+        stderr,
       },
       'yarn install error'
     );