browsh-org/browsh · error

Installed Firefox version is too old. Firefox 57 or newer i

Error message

Installed Firefox version  is too old. Firefox 57 or newer is needed.

What it means

Windows counterpart of the unix version check: `ensureFirefoxVersion` gets a version string via the registry (`getWindowsFirefoxVersionString`), takes the first whitespace token, and compares ordinally against 57. Firefox older than 57 lacks the WebExtension APIs browsh needs, so it shuts down. An empty parsed token (registry lookup returned nothing useful) also yields the 'version is too old' message with a double space.

Source

Thrown at interfacer/src/browsh/firefox_windows.go:106

			flavor = "Nightly"
		}
		defer k.Close()
	}

	if flavor == "null" {
		Shutdown(errors.New("Could not find Firefox on your registry"))
	}
	return flavor
}

func ensureFirefoxVersion(path string) {
	versionString := getWindowsFirefoxVersionString()
	pieces := strings.Split(versionString, " ")
	version := pieces[0]
	if versionOrdinal(version) < versionOrdinal("57") {
		message := "Installed Firefox version " + version + " is too old. " +
			"Firefox 57 or newer is needed."
		Shutdown(errors.New(message))
	}
}

View on GitHub (pinned to 499ef386d4)

Solutions

  1. Upgrade the installed Firefox to 57+ via the built-in updater or a fresh installer from mozilla.org.
  2. If the version string is empty, check the registry version keys under `SOFTWARE\Mozilla\Mozilla Firefox` and repair/reinstall Firefox so version info is populated.
  3. Remove or upgrade old Firefox ESR builds that the registry points to.
  4. Verify the 'Main' version value under the Firefox registry key matches the actually installed binary.

Example fix

# before
Registry 'Mozilla Firefox' Main version = 52.9.0 -> too old
// after: upgrade Firefox, then verify
> reg query "HKLM\SOFTWARE\Mozilla\Mozilla Firefox" /v CurrentVersion
# installed version must be >= 57
Defensive patterns

Strategy: validation

Validate before calling

const { execSync } = require('child_process');
const v = execSync('reg query "HKLM\\SOFTWARE\\Mozilla\\Mozilla Firefox" /v CurrentVersion').toString();
const major = parseInt(v.match(/\d+/)[0], 10);
if (!(major >= 57)) throw new Error(`Registered Firefox ${major} too old; need 57+`);

Try / catch

try {
  startBrowsh();
} catch (e) {
  if (/is too old/.test(e.message)) {
    console.error('Upgrade the registered Firefox install to 57+');
  } else { throw e; }
}

Prevention

When it happens

Trigger: `getWindowsFirefoxVersionString` returns a string whose first token's ordinal < 57 (old Firefox), or an empty/unexpected string so `pieces[0]` is empty and fails the comparison.

Common situations: Old pre-Quantum Firefox installs; registry version value missing so parsing yields an empty version; multiple Firefoxes installed and the registry-resolved one is outdated; corporate machines pinning old Firefox ESR.

Related errors


AI-assisted analysis of browsh-org/browsh@499ef386d4 (2026-09-02). Data as JSON: /api/errors/7da6be279d025aa5. Report an issue: GitHub.