We recommend keeping automatic updates enabled for all Firefox deployments to ensure that the latest security patches are applied and all features are available, but your specific environment may prevent automatic updates.
Both Firefox Rapid Release and Firefox Extended Support Release can be used in your Enterprise environments. If you're concerned about frequent large updates, we recommend checking out Choose a Firefox update channel to learn more about Firefox Extended Support Release.
| Major update frequency | Major update scope | Minor update frequency | Minor update scope | |
|---|---|---|---|---|
| ESR | Every year | New features delivered and bugs fixed in the last 12 months. | Every 4 weeks or when necessary | Critical stability or security bug fixing |
| RR | Every four weeks | New features delivered and bugs fixed in the last 4 weeks | When necessary in-between major releases | Critical stability or security bug fixing |
Disable Firefox updates
Automatic updates are enabled by default, but you can disable them using the DisableAppUpdate policy.
When updates are enabled, they can be installed silently without user approval by enabling the AppAutoUpdate policy.
Troubleshooting Firefox update issues
If a workstation does not receive Firefox updates, the following PowerShell checks can help identify the root cause.
Check local Group Policy (GPO) registry keys
Run the following command:
Get-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Mozilla\Firefox" |
Select-Object DisableAppUpdate, AppAutoUpdate
Expected values:
| Registry value | Expected value |
|---|---|
DisableAppUpdate
| 0 |
AppAutoUpdate
| 1 |
If these values are not set as expected, Firefox updates may be disabled by local or domain Group Policy.
Check the installed Firefox version
Run the following PowerShell command:
Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" |
Where-Object { $_.PSChildName -like "Mozilla Firefox*" } |
ForEach-Object {
Get-ItemProperty $_.PsPath |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate
}
Compare the installed version with the latest Firefox ESR version available on Mozilla’s website.
Check the scheduled task
Firefox relies on a background scheduled task to download and apply updates.
Run the following PowerShell command:
Get-ScheduledTask |
Where-Object { $_.TaskName -like "*Firefox Background Update*" } |
ForEach-Object { Get-ScheduledTaskInfo $_ }
-> Ensure that:
- The task exists
- The task is enabled
- The task runs successfully without errors
Check Mozilla Maintenance Service
On Windows, Firefox updates may require the Mozilla Maintenance Service to be installed and running. This service allows Firefox to apply updates without requiring administrative privileges.
Check if the service exists and its status
Run the following PowerShell command:
Get-Service -Name MozillaMaintenance -ErrorAction SilentlyContinue |
Select-Object Name, DisplayName, Status, StartType
-> Expected behavior:
- The service exists
- Status is
Running(orStopped, but able to start) -
StartTypeis set toAutomaticorManual - If the service is missing, Firefox may not be able to apply updates automatically.
Start the service manually (if required)
If the service exists but is not running, try starting it. Run the following PowerShell command:
Start-Service -Name MozillaMaintenance
Check again that the service starts without errors.
Reinstall the Mozilla Maintenance Service
If the service is missing or corrupted, it can be reinstalled using the Firefox installer:
- Download the Firefox installer matching your deployment (ESR or standard release).
- Run the installer as Administrator.
- Ensure that Install Mozilla Maintenance Service is selected.
After installation, recheck the service status.
Check BITS transfers (Background Intelligent Transfer Service)
Firefox uses BITS to download updates in the background.
Run the following PowerShell command:
Get-BitsTransfer |
Where-Object { $_.DisplayName -match 'mozilla' -or $_.RemoteName -match 'mozilla' } |
ForEach-Object {
$job = $_
foreach ($file in $job.FileList) {
[PSCustomObject]@{
DisplayName = $job.DisplayName
JobState = $job.JobState
BytesTransferredMB = [math]::Round($file.BytesTransferred / 1MB, 2)
BytesRemainingMB = [math]::Round(($file.BytesTotal - $file.BytesTransferred) / 1MB, 2)
ProgressPercent = if ($file.BytesTotal -gt 0) {
[math]::Round(($file.BytesTransferred / $file.BytesTotal * 100), 2)
} else { 0 }
RemoteURL = $file.RemoteName
LocalPath = $file.LocalName
}
}
}
-> What to check
- JobState shows the current transfer state (transferring, suspended, completed, or error).
- ProgressPercent indicates download progress.
- RemoteURL shows the URL used by Firefox to retrieve the update.
-> If the download is blocked
If progress does not advance or the job fails, verify that the URL shown in RemoteURL is not blocked by your network, firewall, or proxy.
To confirm, copy and paste the URL into a browser and check whether the download starts successfully.
List Firefox-related files in C:\ProgramData
Firefox update files are downloaded and stored in the following location.
Run the following PowerShell command:
Get-ChildItem -Path "C:\ProgramData\Mozilla-*" -Recurse |
Select-Object @{ Name="Path"; Expression={$_.FullName} },
@{ Name="Type"; Expression={ if ($_.PSIsContainer) { "Directory" } else { "File" } } },
@{ Name="Size"; Expression={$_.Length} },
@{ Name="LastModified"; Expression={$_.LastWriteTime}
}
This helps verify whether update files were downloaded and identify incomplete or stalled files.