Your top crash, fixed by morning.
CrashFix takes your worst crashes from Crashlytics, finds the line in your Unity or native code, writes a fix and proves it with a test. Then it opens the pull request, starts the build, and tells you when players stop crashing.
A Mac app for macOS 14 or later. It works with your own Claude, ChatGPT or Gemini key, and your code never touches a CrashFix server.
NullReferenceException: Object reference not set at libil2cpp.so 0x00000000004a2f3c at WaveController.NextWave () WaveController.cs:132 at UnityEngine.Events.InvokableCall.Invoke ()
Root cause: spawn points are destroyed when a level unloads, but the wave timer calls Spawn for one more frame.
- ✕New test
SpawnAfterUnloadfails on the old code as it should - ✓It passes with the fix, and so do the other 214 tests
One crash, all the way to gone.
Explaining a stack trace is the easy part. CrashFix does the rest of the job too, and keeps going after the fix ships.
-
Find
It reads your top issues from Crashlytics or your crash service, picks the repository that matches the app, and names unsymbolicated frames from your dSYMs, mapping files and IL2CPP symbols. It also tells you when a crash looks like one you've already fixed.
-
Fix
Your AI of choice reads the trace, the device logs and the code around the crash. You get the root cause, the exact lines, steps to reproduce, and a fix branch with the change committed.
-
Prove
It builds the project in Unity batch mode, Xcode or Gradle and writes a regression test. The fix counts as verified only when that test fails on the old code and passes with the fix.
-
Ship
It pushes the branch, opens the pull request with the verification attached, starts your Jenkins build and picks up the Firebase App Distribution link for QA. Jira and Trello tickets come with it.
-
Watch
After the release, it watches that crash in the new version. When it stays gone, CrashFix closes the tickets and says so on the PR, with the numbers. If it comes back, it reopens them.
Wake up to fixes, not alerts.
Each night CrashFix takes the top crashes of every game you link, analyzes each one, and tries a fix branch it verifies with your tests. The results are waiting when you come in.
- Nothing is pushed. Fixes are made in a separate worktree, so your checkout and your uncommitted work are never touched.
- Ranked by players affected and how sure the analysis is, so the first one you open is the one worth opening.
- A spending cap per night and a monthly budget, because every analysis uses your AI key.
- The digest also goes to Slack and a notification, if you want it there.
Morning digest
Tuesday, 07:00
- IndexOutOfRange in InventoryGrid.Sort3,410 playersRacer for Android, high confidenceVerified fix
- SIGABRT in AdMediation.LoadBanner980 playersRacer for iOS, medium confidenceTests pass
- Out of memory loading Level_07412 playersRacer for iOS, needs a personAnalysis only
Fits into the tools you already use.
No new dashboard to keep open. CrashFix reads from where crashes land and writes to where your team already works.
Crash reports from
- Firebase Crashlytics
- Sentry
- BugSnag
- Backtrace
- Google Play Android vitals
- App Store Connect
- Crash files .ips, .xccrashpoint
Fixes and tickets go to
- GitHub branches, PRs
- Jira
- Trello with a QA bot
- Jenkins
- Firebase App Distribution
- Slack morning digest
Analyzed by your choice of
- Claude
- Claude Code edits in your repo
- ChatGPT
- Gemini
Not sure about an answer? Ask a second engine and compare the two side by side.
Your code stays yours.
Game studios don't send their source code to strangers, and CrashFix doesn't ask you to.
Your key, your provider
Crash data and the code around a crash go straight from your Mac to the AI provider you pick, with your own API key, under your agreement with them.
No CrashFix cloud
There's no CrashFix server between you and your code. The app's only network call of its own is checking for updates. License keys are checked offline.
You press the buttons
Fixes land on their own branch. Nothing reaches your main branch unless you open and merge the pull request yourself.
Try it with your studio.
I'm starting with a small group of mobile game studios. You get CrashFix free during the pilot and a direct line to me. I get your honest feedback, and if it works for you, a number I can quote.
I'm Giorgi, and I make CrashFix. I answer every request myself, usually within a day.
Questions studios ask.
What does it cost?
Nothing during the pilot. Pricing comes after, and pilot studios hear it first. The AI itself is billed by your provider on your own key; CrashFix shows what each analysis cost and can stop at a monthly budget.
Do you see my code or my crashes?
No. Everything happens on your Mac, and code goes only to the AI provider you choose with your own key. There's no CrashFix account and no CrashFix server in the loop.
Which crashes can it handle?
Unity (IL2CPP and Mono), native iOS and macOS, Android Java and Kotlin, Android NDK and Unreal C++ stack traces. It names unsymbolicated frames from dSYMs, Android mapping files and IL2CPP symbol files before analyzing.
Will it change my code without asking?
It never touches your main branch. Fixes are committed to their own branch, and nothing is pushed until you press Push or open a pull request. The overnight run doesn't push at all.
Is there a Windows version?
Not yet. CrashFix is a Mac app, partly because it builds and tests iOS projects. For CI, its command-line mode runs on macOS runners, with a ready-made GitHub Action.
How is this different from asking an AI chat?
A chat explains one trace. CrashFix finds the crashes worth fixing, works in the right repository with your symbols, proves the fix with a test, ships it through your pull requests and CI, and checks afterwards that players stopped crashing. It also remembers every crash it has seen.