Fix excessive framework noise in error stack traces
Problem
Users reported excessive framework noise in Slack error alerts, making debugging difficult. Issue #2097 shows stack traces cluttered with trigger.dev internals like:
-
_RunTimelineMetricsAPI.measureMetric -
ConsoleInterceptor.intercept -
taskExecutor.tsinternal calls
Solution
Applied existing correctErrorStackTrace filtering to BUILT_IN_ERROR case in createJsonErrorObject - it was the only error type returning raw stack traces without filtering.
Changes:
- Wrap
enhancedError.stackTracewith correctErrorStackTrace() for filtering stack traces - Add
AsyncLocalStoragepattern toLINES_TO_IGNOREto remove OpenTelemetry noise
Impact
Cleaner error experiences across all user-facing error contexts using createJsonErrorObject:
- ✅ Slack alerts (primary issue resolved)
- ✅ Email notifications
- ✅ API responses
- ✅ Run streams
Closes #2097
✅ Checklist
- ✅ I have followed every step in the contributing guide
- ✅ The PR title follows the convention.
- ✅ I ran and tested the code works
Testing
- Manual: Verified Slack alerts now show clean stack traces with only user code
- Unit: Added test for framework noise filtering in stack traces
Changelog
Improve user-facing error readability by filtering framework noise from stack traces
Screenshots
N/A
🦋 Changeset detected
Latest commit: e16f8934bb75388f61711a38ba7219d62551e84d
The changes in this PR will be included in the next version bump.
This PR includes changesets to release 23 packages
| Name | Type |
|---|---|
| @trigger.dev/core | Patch |
| @trigger.dev/build | Patch |
| trigger.dev | Patch |
| @trigger.dev/python | Patch |
| @trigger.dev/redis-worker | Patch |
| @trigger.dev/schema-to-json | Patch |
| @trigger.dev/sdk | Patch |
| @internal/cache | Patch |
| @internal/clickhouse | Patch |
| @internal/redis | Patch |
| @internal/replication | Patch |
| @internal/run-engine | Patch |
| @internal/schedule-engine | Patch |
| @internal/testcontainers | Patch |
| @internal/tracing | Patch |
| @internal/zod-worker | Patch |
| d3-chat | Patch |
| references-d3-openai-agents | Patch |
| references-nextjs-realtime | Patch |
| @trigger.dev/react-hooks | Patch |
| @trigger.dev/rsc | Patch |
| @trigger.dev/database | Patch |
| @trigger.dev/otlp-importer | Patch |
Not sure what this means? Click here to learn what changesets are.
Click here if you're a maintainer who wants to add another changeset to this PR
Walkthrough
Reworks stack-trace handling in packages/core/src/v3/errors.ts: BUILT_IN_ERROR now generates its stackTrace via correctErrorStackTrace(enhancedError.stackTrace, undefined, { removeFirstLine: false }) so the first line is preserved while per-line normalization and frame filtering run; AsyncLocalStorage frames are added to the ignore list. Adds a unit test at packages/core/test/errors.test.ts that asserts user frames are preserved and internal/framework frames (including AsyncLocalStorage and internal modules) are filtered from createJsonErrorObject output. Adds a changeset bumping @trigger.dev/core with a note about improved stack-trace readability. No public API changes.
Estimated code review effort
🎯 3 (Moderate) | ⏱️ ~20 minutes
✨ Finishing Touches
- [ ] 📝 Generate Docstrings
🧪 Generate unit tests
- [ ] Create PR with unit tests
- [ ] Post copyable unit tests in a comment
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
🪧 Tips
Chat
There are 3 ways to chat with CodeRabbit:
- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
-
I pushed a fix in commit <commit_id>, please review it. -
Open a follow-up GitHub issue for this discussion.
-
- Files and specific lines of code (under the "Files changed" tab): Tag
@coderabbitaiin a new review comment at the desired location with your query. - PR comments: Tag
@coderabbitaiin a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:-
@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase. -
@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
-
Support
Need help? Create a ticket on our support page for assistance with any issues or questions.
CodeRabbit Commands (Invoked using PR/Issue comments)
Type @coderabbitai help to get the list of available commands.
Other keywords and placeholders
- Add
@coderabbitai ignoreor@coderabbit ignoreanywhere in the PR description to prevent this PR from being reviewed. - Add
@coderabbitai summaryto generate the high-level summary at a specific location in the PR description. - Add
@coderabbitaianywhere in the PR title to generate the title automatically.
CodeRabbit Configuration File (.coderabbit.yaml)
- You can programmatically configure CodeRabbit by adding a
.coderabbit.yamlfile to the root of your repository. - Please see the configuration documentation for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation:
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
Status, Documentation and Community
- Visit our Status Page to check the current availability of CodeRabbit.
- Visit our Documentation for detailed information on how to use CodeRabbit.
- Join our Discord Community to get help, request features, and share feedback.
- Follow us on X/Twitter for updates and announcements.