Blog
Stack Traces SDK Users Can Act On
Show developers the frame they own, the error code, and the next command. Keep your internal frames, but do not lead with them. Store the full trace in the probe, redacted.
2026-10-09 · 6 min read · AethelLayer
Lead with their frame
A twenty-frame trace that starts inside your retry helper teaches nothing. Put the error code and message first, then the first frame that is outside your package, then offer the rest behind --verbose.
Source maps and sourcemaps in release builds matter. A minified one-line stack is how you waste the only report you will get.
Do not dump locals
Frame locals and closure values hold tokens, emails, and request bodies. A trace with variables inlined is a secret-sharing feature. Ship frames and function names. Leave values out unless they are on an allow-list.
The same rule applies to the probe. You want the stack to group similar failures. You do not want a second copy of production secrets in an inbox.
Repeat the next command under the trace
After the frames, print one suggestion: the flag, the login command, or the doc URL for that code. Developers stop reading a trace at the first unfamiliar path. The suggestion has to be where their eyes already are.
If you cannot suggest a fix, say what you need next. 'Re-run with --verbose and keep this code' is a better last line than silence.
You keep the long copy
The developer sees the short form. The probe stores the code, the top frames, and their sentence. When you draft the issue, include the short form in the body so a reviewer recognizes it without a verbose log.
If the top frame is always inside your SDK, the bug is yours. If it is always in their call, the docs for that method are wrong. The inbox should make that split obvious.
Keep reading
Capture the failure before they leave
Capture the failure before they leave. Book early access or talk to sales, then install @aethellayer/sdk when you are onboarded.