Crashes Happen. Let’s Make Them Happen Less.
A practical, engineering-focused guide for building stable, resilient .NET MAUI applications.
This repository contains a long-form playbook on reducing crashes and ANRs, improving observability, triaging production incidents, and preventing regressions with better engineering practices.
- Full guide: Crashless.md
This repo also includes ready-to-use Copilot prompt files for running reliability audits:
-
Command prompt: .claude/commands/stability-audit.md
- Defines a full .NET MAUI stability audit flow (ask mode, scan all relevant files, prioritize findings, and optionally apply fixes).
- Best when you want a strict, command-style audit workflow.
-
Skill prompt: .github/prompts/project-stability-audit.prompt.md
- Defines a reusable “Project Stability Audit” skill with operating modes, reporting format, and editing guardrails.
- Best when you want a standardized audit template for Copilot conversations.
Use prompts like:
- "Run Project Stability Audit in analyze-only mode."
- "Run Project Stability Audit and suggest fixes for P0/P1 only."
- "Run Project Stability Audit and apply safe fixes for async, cancellation, and null-safety issues."
The guide covers:
- Common causes of crashes and ANRs in .NET MAUI
- Global exception safety nets and startup hardening
- Production observability and release health
- Practical triage for inherited unstable apps
- Resilient coding patterns for async, navigation, and lifecycle
- Trimming/AOT pitfalls and how to avoid silent breakage
- Testing strategies to catch crashes before users do
- Team-level practices for long-term stability
- Mobile engineers working with .NET MAUI
- Tech leads improving app reliability
- Teams inheriting crash-heavy mobile codebases
- Start with Crashless.md.
- Use the table of contents to jump to your current problem area.
- Apply checklist items during development, release, and postmortems.
- .NET MAUI, Native AOT, and trimming behavior evolve quickly.
- Always validate platform-specific setup against current official documentation before shipping.
Improvements are welcome. If you spot outdated guidance or want to add practical examples, open an issue or pull request.