Source code
Stability
Performance
Code quality
Security & compliance
Error handling & resilience
What your app does when a dependency stops answering.
Overview
Every outbound call is a place your app can hang or fail silently. lumioguard reads your fetches, database calls, and async boundaries for missing timeouts, swallowed exceptions, and error paths that end nowhere.
What it looks for
- Exceptions caught and discarded on critical paths
- Unhandled promise rejections, and awaits with no try/catch
- No timeout on fetch, HTTP, or database calls
- No retry, backoff, or circuit breaker around external dependencies
- process.exit in library code, thrown string literals, and unvalidated route input
Why it matters
A fetch with no timeout does not fail — it holds a worker until the whole pool is gone, which is how one slow third party becomes your outage. A caught-and-ignored exception in a payment path means the money moved and the record did not.
Rules in this check
| What it reports | Fix path |
|---|---|
| Swallowed exception on a critical path | Pull request |
| Unhandled promise rejection | Pull request |
| await on external call without try/catch | Pull request |
| No timeout on fetch/DB/HTTP | Guide |
| No retries / backoff on external call | Guide |
| No circuit breaker on critical path | Guide |
| Throwing string literal | Pull request |
| process.exit in library code | Pull request |
| No input validation at route boundary | Guide |
How the fixes arrive
Pull requestLow-risk changes arrive as a pull request on a lumioguard branch, with a breakage analysis attached. You review and merge it.
GuideChanges only you can make safely arrive as a step-by-step guide you can follow yourself or hand to your coding agent.
Run them all on your app
Connect your repo and your live services with read-only scopes. The first scan is free, and nothing changes without your approval.