Crash / Error Reporting
This page explains how to use the feature that sends diagnostic information to the developer — with your consent — when the app stops unexpectedly or an error occurs while rendering the UI.
Overview
GalleonQL has a "crash reporting" feature that can send details to the developer when the app stops unexpectedly or an error occurs while rendering the UI. Keep these three points in mind:
- This feature is disabled (OFF) by default.
- Even when it's enabled, a dialog showing the full content to be sent appears every time before sending. Nothing is sent automatically.
- The destination is a private channel that only the developer can view; it is never made public or shared with third parties.
Prerequisites
- The app is running per Getting started / installing and launching.
What crash reporting is
If GalleonQL stops unexpectedly, or an error occurs while rendering the UI, GalleonQL temporarily saves the details on your device. You always decide whether to send them. Even with the setting enabled, a dialog showing the full content to be sent appears every time before sending.
Steps
1. Enable / disable crash reporting in Settings
- Open Settings (⚙) in the top bar.
- In the "Crash reporting" section, toggle it on / off with the "Send crash reports" checkbox. The default is OFF. Right below it is a "Usage analytics" toggle (Usage Analytics) as well, but it is a separate consent — toggling one has no effect on the other.
While the checkbox is unchecked, crashes themselves are still detected and temporarily saved on your device, but nothing is ever sent without your confirmation.
2. The notice shown on the next launch after a crash
After GalleonQL stops unexpectedly, the next time you launch the app, one of the following is shown depending on the saved content and your setting.
| Situation | Screen shown |
|---|---|
| Setting is OFF and you haven't seen this notice yet | A light "A crash was detected" notice (you can choose to enable and review, or not now) |
| Setting is OFF and you've already seen this notice | Nothing is shown (the saved content remains, but you won't be prompted again until you next turn the setting ON) |
| Setting is ON | A confirmation dialog showing the full content to be sent appears every time |
Choosing "Enable & review" turns the setting ON and proceeds directly to the confirmation dialog for the content to be sent. Choosing "Not now" does nothing this time, and this light notice will no longer appear from then on (nothing is sent).
3. Review the content in the pre-send confirmation dialog
The confirmation dialog shows every item to be sent.
| Item | Content |
|---|---|
| App version | The GalleonQL version |
| OS | The OS and CPU architecture of the runtime environment |
| Occurred at | The date and time the crash / error occurred |
| Type | "App crash" or "UI error" |
| Category (if any) | A brief classification of the error |
| Location (if any) | File name, line number, etc. |
| Message | The full error message |
| Backtrace (if any) | The full stack trace |
| Anonymous ID | An anonymous identifier for this device, not tied to any individual |
The message and backtrace are shown in full after the masking described below is applied. Review the content and choose one of the following:
- "Send": Sends it to the developer. After sending, the saved content is deleted.
- "Don't send (discard)": Deletes the saved content without sending.
Either way, the saved content is cleared, and this dialog won't reappear until a new crash occurs.
What is and isn't sent (masking)
What may be sent: the items in the table above (app version, OS, occurred-at, type, error message, backtrace, anonymous ID, etc.).
What is not sent: your app data itself — request history, saved queries, environment variables, headers, auth tokens, GraphQL variables, and so on — is not included in what's sent. Only a predetermined set of items can be sent.
Masking: An error message or backtrace can contain things like file paths from your runtime environment. Before sending, GalleonQL automatically redacts content such as:
- The user name under your home directory (e.g.
/Users/galleonql/...→<HOME>/...) - URLs (e.g.
https://api.example.com/graphql?token=...→<URL>) - Auth tokens, Bearer tokens, JWTs, and password-like values
- Environment variable placeholders such as
{{token}}
⚠️ Important: This masking is automatic processing based on known patterns and does not guarantee complete anonymization. Information in an unexpected format may remain. For that reason, GalleonQL does not assume "masked, therefore safe"; instead, it always interposes a dialog that lets you review the full content before sending as the final safeguard. If the content includes information you don't recognize or a string that concerns you, don't hesitate to choose "Don't send (discard)."
Crashes that are and aren't covered
| Kind | Covered |
|---|---|
| Abnormal app termination (force quit, launch failure) | Covered |
| Error while rendering the UI (an action leads to an error screen, etc.) | Covered |
| OS-level forced termination (freeze, crash from a forced kill, etc.) | Not covered (not detected or sent at this time) |
When an error occurs while rendering the UI, a reload screen like the following may appear.
- Heading "Something went wrong rendering the UI"
- "Please reload the app. Error details can be reviewed as a crash report on the next launch."
- A "Reload" button
Pressing "Reload" reloads the app, and the error details can be reviewed as a crash report on the next launch.
Troubleshooting
| Symptom | Likely cause | What to do |
|---|---|---|
| Pressing "Send" shows "Failed to send: …" | A network connection problem, or a temporary issue on the destination | Check your network and press "Send" again. The dialog stays open, so the saved content isn't lost |
| A crash should have happened, but nothing appears on the next launch | The setting is OFF and you've already seen this notice once (the same content isn't offered again) | If you want to use it, turn "Send crash reports" ON in Settings |
| After a freeze or forced kill, no crash report notice appears at all | OS-level forced termination is not covered at this time | This is expected behavior. If you have reproduction steps, please contact the developer separately |
| The screen goes blank / unresponsive and the "Something went wrong rendering the UI" screen appears | An error the UI couldn't handle occurred | Reload with the "Reload" button. You can review the error details as a crash report on the next launch |
Related documents
- Usage analytics (a separate feature and separate consent): Usage Analytics
- App layout and how to open Settings (⚙): Getting started / installing and launching
- Term definitions: Key terms
- Manual index: GalleonQL User Manual