Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
2eb726d
feat: :sparkles: create new request-tracker package
gingerbenw Dec 15, 2025
4f190eb
remove isActive toggle on request tracker
gingerbenw Dec 15, 2025
973b210
update package.json
gingerbenw Dec 15, 2025
9d447fd
Merge pull request #2640 from bugsnag/PLAT-15268/request-tracker-package
gingerbenw Dec 15, 2025
0cad520
add response to core event type
gingerbenw Dec 15, 2025
44f3e02
feat: add plugin-http-errors package
gingerbenw Dec 15, 2025
8954bc3
test: :white_check_mark: add end to end tests for http errors
gingerbenw Dec 15, 2025
b7538b7
integrate shared tracker
gingerbenw Dec 15, 2025
be68044
test: test xhr requests
gingerbenw Dec 15, 2025
b141dad
handle hxr requests
gingerbenw Dec 16, 2025
ec3e639
fix http errors testing
gingerbenw Dec 16, 2025
7013ce6
enhancement: move helpers to separate modules
gingerbenw Dec 16, 2025
66dac50
handle redacted keys for headers and params
gingerbenw Dec 17, 2025
feee16d
redact query string parameters on URLs
gingerbenw Dec 17, 2025
f253001
skip tests on unsupported browsers
gingerbenw Dec 17, 2025
43b4790
Report and redact request headers
gingerbenw Dec 17, 2025
f10842a
require set
gingerbenw Dec 17, 2025
f1cad91
remove use of Object.entries
gingerbenw Dec 18, 2025
c74c00c
fix unit tests
gingerbenw Dec 18, 2025
f4310e0
use shared tracker in network breadcrumbs package
gingerbenw Dec 18, 2025
2789a37
ensure request tracker files are bundled
gingerbenw Dec 18, 2025
37a91d5
fix react-native fixture generation
gingerbenw Dec 18, 2025
98557f9
change: handle headers in request-tracker
gingerbenw Dec 19, 2025
8f496ca
docs: update README
gingerbenw Dec 19, 2025
961e058
simplify return values from request tracker plugin
gingerbenw Dec 19, 2025
65cd851
Apply suggestion from @Copilot
gingerbenw Dec 19, 2025
d217fdc
Update test/browser/features/http_errors.feature
gingerbenw Dec 19, 2025
7b54288
enhancement: update response state handling order
gingerbenw Dec 19, 2025
1e0a150
enhancement: redact response in events
gingerbenw Dec 19, 2025
af98955
refactor: reorder http errors operations
gingerbenw Dec 19, 2025
172bb79
test: add tests for POST requests
gingerbenw Dec 19, 2025
66ae90d
Merge pull request #2645 from bugsnag/PLAT-15268/network-breadcrumbs-…
gingerbenw Jan 5, 2026
9488d2e
fix: :bug: ensure setRequestHeader monkey patch matches real world usage
gingerbenw Jan 5, 2026
8b97f5a
Merge pull request #2639 from bugsnag/PLAT-12567/http-errors-plugin
gingerbenw Jan 5, 2026
d2b0c48
ensure setRequestHeader monkey patch is restored
gingerbenw Jan 5, 2026
787ed5d
test: add getAllResponseHeaders to mock
gingerbenw Jan 5, 2026
227ca12
fix: allow options to be null
gingerbenw Jan 5, 2026
efc1683
formatting: remove extra line break
gingerbenw Jan 5, 2026
1d7e889
improve query parameter redaction for URLs
gingerbenw Jan 5, 2026
f4acc48
remove ie8 from webpack uglify config (no longer testing on ie8)
gingerbenw Jan 5, 2026
f053e00
fix logic on edge 17
gingerbenw Jan 5, 2026
577e929
ensure headers-to-object is IE11 compatible
gingerbenw Jan 6, 2026
646ae6f
update documentation
gingerbenw Jan 6, 2026
8e45670
Merge pull request #2648 from bugsnag/http-errors-suggestions-and-fixes
gingerbenw Jan 12, 2026
b45aba1
Merge branch 'next' into integration/http-errors
gingerbenw Jan 13, 2026
84f3e8d
Merge pull request #2652 from bugsnag/rename-http-errors-package
gingerbenw Jan 14, 2026
fe28d05
Apply suggestions from code review
gingerbenw Jan 16, 2026
2d3b570
docs: :memo: update http error range docs
gingerbenw Jan 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ packages/**/fixtures
test/browser
test/node
test/react-native-cli/features/fixtures
test/react-native/features/fixtures
test/cloudflare-workers
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@

## [Unreleased]

This release adds support for notitfying failed network requests using the new `plugin-network-instrumentation` package

### Added

(plugin-network-instrumentation) Add new plugin to notify failed network requests [#2647](https://github.com/bugsnag/bugsnag-js/pull/2647)
(plugin-cloudflare-workers): Add initial support for Cloudflare Workers [#2643](https://github.com/bugsnag/bugsnag-js/pull/2643) [#2644](https://github.com/bugsnag/bugsnag-js/pull/2644)

### Fixed
Expand Down
7 changes: 4 additions & 3 deletions bin/local-test-util
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ async function buildNotifiers (notifier) {
async function packNotifiers (notifier) {
const notifiers = notifier
? [ notifier ]
: [ 'js', 'browser', 'node', 'web-worker', 'plugin-angular', 'plugin-react', 'plugin-vue' ]
: [ 'js', 'browser', 'node', 'web-worker', 'plugin-angular', 'plugin-react', 'plugin-vue', 'plugin-network-instrumentation' ]
for (const n of notifiers) {
let packageLocation = `packages/${n}/`
if (n === 'plugin-angular') packageLocation += 'dist/'
Expand All @@ -131,7 +131,7 @@ async function packNotifiers (notifier) {

async function installNotifiers (notifier) {
trace('install notifiers')
if (notifier && ![ 'browser', 'plugin-vue', 'plugin-react', 'web-worker' ].includes(notifier)) return
if (notifier && ![ 'browser', 'plugin-vue', 'plugin-react', 'web-worker', 'plugin-network-instrumentation' ].includes(notifier)) return
await ex(`npm`, [
`install`,
`--no-package-lock`,
Expand All @@ -144,7 +144,8 @@ async function installNotifiers (notifier) {
`../../../../bugsnag-browser-${require('../packages/browser/package.json').version}.tgz`,
`../../../../bugsnag-web-worker-${require('../packages/web-worker/package.json').version}.tgz`,
`../../../../bugsnag-plugin-react-${require('../packages/plugin-react/package.json').version}.tgz`,
`../../../../bugsnag-plugin-vue-${require('../packages/plugin-vue/package.json').version}.tgz`
`../../../../bugsnag-plugin-vue-${require('../packages/plugin-vue/package.json').version}.tgz`,
`../../../../bugsnag-plugin-network-instrumentation-${require('../packages/plugin-network-instrumentation/package.json').version}.tgz`
]
), {
cwd: `${__dirname}/../test/browser/features/fixtures`
Expand Down
5 changes: 3 additions & 2 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ module.exports = {
project('web workers', ['web-worker'], {
testEnvironment: '<rootDir>/jest/FixJSDOMEnvironment.js'
}),
project('shared plugins', ['plugin-app-duration', 'plugin-stackframe-path-normaliser']),
project('shared plugins', ['plugin-app-duration', 'plugin-stackframe-path-normaliser', 'request-tracker']),
project('browser', [
'browser',
'delivery-x-domain-request',
Expand All @@ -50,7 +50,8 @@ module.exports = {
'plugin-inline-script-content',
'plugin-simple-throttle',
'plugin-console-breadcrumbs',
'plugin-browser-session'
'plugin-browser-session',
'plugin-network-instrumentation'
], {
testEnvironment: '<rootDir>/jest/FixJSDOMEnvironment.js'
}),
Expand Down
45 changes: 45 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion packages/core/event.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { App, Device, Event, Request, Breadcrumb, User, Session, FeatureFlag } from './types'
import { App, Device, Event, Request, Response, Breadcrumb, User, Session, FeatureFlag } from './types'
import { Error } from './types/event'

interface HandledState {
Expand Down Expand Up @@ -40,6 +40,7 @@ export default class EventWithInternals extends Event {
app: App
device: Device
request: Request
response: Response
breadcrumbs: Breadcrumb[]
context: string | undefined
correlation: { spanId: string, traceId: string } | undefined
Expand Down
2 changes: 2 additions & 0 deletions packages/core/event.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class Event {
this.app = {}
this.device = {}
this.request = {}
this.response = {}

this.breadcrumbs = []
this.threads = []
Expand Down Expand Up @@ -120,6 +121,7 @@ class Event {
app: this.app,
device: this.device,
request: this.request,
response: this.response,
breadcrumbs: this.breadcrumbs,
context: this.context,
groupingHash: this.groupingHash,
Expand Down
3 changes: 2 additions & 1 deletion packages/core/lib/json-payload.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ const jsonStringify = require('@bugsnag/safe-json-stringify')
const EVENT_REDACTION_PATHS = [
'events.[].metaData',
'events.[].breadcrumbs.[].metaData',
'events.[].request'
'events.[].request',
'events.[].response'
]

module.exports.event = (event, redactedKeys) => {
Expand Down
7 changes: 7 additions & 0 deletions packages/core/types/common.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,13 @@ interface Request {
[key: string]: any
}

interface Response {
statusCode: number
headers: { [key: string]: unknown }
body?: string
bodyLength?: number
}

export interface User {
id?: string
email?: string
Expand Down
2 changes: 2 additions & 0 deletions packages/core/types/event.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import {
App,
Device,
Request,
Response,
Logger,
User,
Thread,
Expand All @@ -23,6 +24,7 @@ declare class Event {
public app: App
public device: Device
public request: Request
public response: Response

public errors: Error[];
public breadcrumbs: Breadcrumb[]
Expand Down
Loading