Skip to content

[UX] Download known fixes even before downloading a game - #5409

Merged
arielj merged 1 commit into
mainfrom
known-fixes-before-install
Sep 13, 2026
Merged

arielj merged 1 commit into
mainfrom
known-fixes-before-install

Conversation

@arielj

@arielj arielj commented Mar 14, 2026 •

Copy link
Copy Markdown
Collaborator

This PR changes the logic used to fetch game known fixes. Instead of downloading the info per-game during the game's installation, we now download a json file with all the known fixes at boot from https://github.com/Heroic-Games-Launcher/known-fixes/blob/main/known_fixes.json (it's only 16kb and it's only updated eventually only if we add new fixes, so nothing to worry at this point)

This has a lot of advantages both for the end user and for us:

  • we can display the wiki links even for games that are not installed, this is really useful so users can find important information before installing a game (like if they want to install a Rockstar game on Mac, they can read they'll need the paid Crossover, so they can avoid downloading the game if they don't have it)
  • we don't need to add extra code to the download manager, and we also don't need to remove the file when uninstalling a game
  • now with the new method to get releases info from a single repo that reduces the number of requests we do at boot, this file will only be updated if needed based on the md5 of the local file and the md5 of the latest version (before we were trying to download a known fixes file for every game installation and we didn't know if there was a fix or not until we tried)
  • with the previous logic, users would only get the known fixes updated for a game by reinstalling the game, now they get the fixes updated when they open heroic if there's anything new
  • the pattern is more consistent with how we handle anticheat data (that is kinda similar metadata for games from another source) and the code is more contained in it's own module now
  • this also solves a bug where Heroic wouldn't download known fixes for imported games!

Use the following Checklist if you have changed something on the Backend or Frontend:

  • Tested the feature and it's working on a current and clean install.
  • Tested the main App features and they are still working on a current and clean install. (Login, Install, Play, Uninstall, Move games, etc.)
  • Created / Updated Tests (If necessary)
  • Created / Updated documentation (If necessary)

@arielj
arielj requested review from a team, BananaWorks07, CommandMC, biliesilva, flavioislima and imLinguin and removed request for a team March 14, 2026 02:03
@arielj arielj added the pr:ready-for-review Feature-complete, ready for the grind! :P label Mar 14, 2026
rStream.pipe(hash)
await finished(rStream)
return hash.digest('hex')
}

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I moved this to utils/releases.ts so it can be shared between modules, since it's only used to check md5 for this releases feature only

}
}

async function downloadFixesFor(appName: string, runner: Runner) {

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we don't need any of that now during the game download

if (existsSync(fixFilePath)) {
rmSync(fixFilePath)
}
}

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we don't need to delete any file now during uninstall

Comment thread src/common/types/ipc.ts
InstallParams,
InstallPlatform,
KnowFixesInfo,
KnownFixesInfo,

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there was a typo before


export const hasKnownFixes = (appName: string, runner: Runner) => {
const [knownFixes, setKnownFixes] = useState<KnowFixesInfo | null>(null)
export const useKnownFixes = (appName: string, runner: Runner) => {

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

react was complaining about this name

Comment thread src/frontend/hooks/hasKnownFixes.ts
Comment thread src/backend/known_fixes/utils.ts Outdated
Comment thread src/backend/known_fixes/utils.ts Outdated
Comment thread src/backend/utils/releases.ts Outdated
@arielj
arielj requested a review from CommandMC April 4, 2026 17:14
@arielj
arielj force-pushed the known-fixes-before-install branch from 2387375 to a69d7fd Compare September 11, 2026 03:13
@arielj
arielj requested a review from a team as a code owner September 11, 2026 03:13
@arielj
arielj merged commit 2061ff9 into main Sep 13, 2026
10 checks passed
@arielj
arielj deleted the known-fixes-before-install branch September 13, 2026 16:53
@Heroic-Games-Launcher Heroic-Games-Launcher locked and limited conversation to collaborators Sep 13, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

pr:ready-for-review Feature-complete, ready for the grind! :P

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants