Skip to content

Release/v8.9.0#2720

Merged
SB-priyankap merged 82 commits intomainfrom
release/v8.9.0
Apr 8, 2026
Merged

Release/v8.9.0#2720
SB-priyankap merged 82 commits intomainfrom
release/v8.9.0

Conversation

@SB-priyankap
Copy link
Copy Markdown
Contributor

Added

  • (delivery-react-native) Handle request and response parameters #2667

Changed

  • (plugin-inline-script-content) Add support for additional event target constructors including MediaSource, MediaRecorder, ServiceWorker, RTCPeerConnection, and others #2700
  • (plugin-network-instrumentation) Manually parse URLs to improve React Native compatibility #2674
  • (plugin-network-instrumentation) Refactor URL parsing to improve performance #2667

Fixed

dependabot Bot and others added 30 commits December 15, 2025 03:12
Bumps [actions/cache](https://github.com/actions/cache) from 4.3.0 to 5.0.1.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@0057852...9255dc7)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 5.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@1af3b93...8e8c483)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.7 to 4.31.8.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@cf1bb45...1b168cd)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.31.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.269.0 to 1.270.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](ruby/setup-ruby@d697be2...ac793fd)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.270.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5.0.0 to 6.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@330a01c...b7c566a)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Post release merge v8.8.1
* Set Content Type header

* Use latest MR image

---------

Co-authored-by: Steve Kirkland <steve.kirkland@smartbear.com>
…ns/cache-5.0.1

build(deps): bump actions/cache from 4.3.0 to 5.0.1
…ns/checkout-6.0.1

build(deps): bump actions/checkout from 6.0.0 to 6.0.1
…b/codeql-action-4.31.8

build(deps): bump github/codeql-action from 4.31.7 to 4.31.8
…setup-ruby-1.270.0

build(deps): bump ruby/setup-ruby from 1.269.0 to 1.270.0
…ns/upload-artifact-6.0.0

build(deps): bump actions/upload-artifact from 5.0.0 to 6.0.0
Bumps [actions/cache](https://github.com/actions/cache) from 5.0.1 to 5.0.3.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@9255dc7...cdf6c1f)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 5.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Mark HTTP errors as handled instead of unhandled
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@395ad32...6044e13)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.270.0 to 1.287.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](ruby/setup-ruby@ac793fd...8d27f39)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.287.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [gradle/actions](https://github.com/gradle/actions) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/gradle/actions/releases)
- [Commits](gradle/actions@4d9f0ba...f29f5a9)

---
updated-dependencies:
- dependency-name: gradle/actions
  dependency-version: 5.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@8e8c483...de0fac2)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* test: ✅ fix react native test, removing need for polyfill

* refactor: ♻️ update query parameter parsing

* remove use of url.search

* remove URLSearchParams

* Find the earliest occurrence of '/', '?', or '#' to determine the domain boundary

* docs: add CHANGELOG entry
* build(deps): bump actions/checkout from 6.0.1 to 6.0.2 (#2672)

Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@8e8c483...de0fac2)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Manually parse urls (#2674)

* test: ✅ fix react native test, removing need for polyfill

* refactor: ♻️ update query parameter parsing

* remove use of url.search

* remove URLSearchParams

* Find the earliest occurrence of '/', '?', or '#' to determine the domain boundary

* docs: add CHANGELOG entry

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.8 to 4.32.2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@1b168cd...45cbd0c)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.32.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.287.0 to 1.288.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](ruby/setup-ruby@8d27f39...09a7688)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.288.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumpsnag bot and others added 18 commits March 26, 2026 17:08
* plat-12013 update cuid version and replace validation

* plat-12013 push package.lock changes

* plat-12013 fix eslint issue and update changelog.md file
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.6 to 4.35.1.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@0d579ff...c10b806)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.35.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.290.0 to 1.299.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](ruby/setup-ruby@6ca151f...3ff19f5)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.299.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [gradle/actions](https://github.com/gradle/actions) from 5.0.2 to 6.0.1.
- [Release notes](https://github.com/gradle/actions/releases)
- [Commits](gradle/actions@0723195...39e147c)

---
updated-dependencies:
- dependency-name: gradle/actions
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
…esponse

Handle request and response objects in @bugsnag/delivery-react-native package
…ns/cache-5.0.4

build(deps): bump actions/cache from 5.0.3 to 5.0.4
…b/codeql-action-4.35.1

build(deps): bump github/codeql-action from 4.32.6 to 4.35.1
…setup-ruby-1.299.0

build(deps): bump ruby/setup-ruby from 1.290.0 to 1.299.0
…e/actions-6.0.1

build(deps): bump gradle/actions from 5.0.2 to 6.0.1
Update ci to use lts version of node (22)
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 7, 2026

@bugsnag/browser bundle size diff

Minified Minfied + Gzipped
Before 50.69 kB 15.03 kB
After 51.65 kB 15.26 kB
± ⚠️ +957 bytes ⚠️ +234 bytes

code coverage diff

Ok File Lines Branches Functions Statements
/home/runner/work/bugsnag-js/bugsnag-js/packages/delivery-react-native/delivery.js 96.29%
(+2.96%)
88%
(+6.19%)
66.66%
(+6.66%)
96.66%
(+2.55%)
🔴 /home/runner/work/bugsnag-js/bugsnag-js/packages/plugin-network-instrumentation/network-instrumentation.js 96.92%
(-0.09%)
88.57%
(+0%)
100%
(+0%)
97.01%
(-0.09%)
/home/runner/work/bugsnag-js/bugsnag-js/packages/plugin-network-instrumentation/lib/parse-query-string.js 100%
(+100%)
100%
(+100%)
100%
(+100%)
100%
(+100%)
/home/runner/work/bugsnag-js/bugsnag-js/packages/plugin-network-instrumentation/lib/parse-url.js 93.33%
(+93.33%)
96.42%
(+96.42%)
100%
(+100%)
93.33%
(+93.33%)

Total:

Lines Branches Functions Statements
84.95%(-0.18%) 77.16%(+0.19%) 85.17%(-0.08%) 84.23%(-0.19%)

Generated by 🚫 dangerJS against 356222b

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Release v8.9.0 updates React Native delivery/native parsing, improves network instrumentation behavior (URL parsing, HTTP error handling/redaction), and refreshes CI/test infrastructure (Node 22, Maze Runner v11, workflows).

Changes:

  • React Native: include request/response in native delivery and improve native “cause” stack handling; add/adjust e2e fixtures/features.
  • Network instrumentation: replace URL/param handling with manual parsing, move query into request.params, mark HTTP errors handled, and omit stacktraces.
  • Tooling/infra: bump Node images to 22, update GitHub Actions/Buildkite pipelines, bump Maze Runner, add coverage diff reporting, and update dependencies (e.g. @bugsnag/cuid).

Reviewed changes

Copilot reviewed 75 out of 78 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
test/react-native/Gemfile Maze Runner v11 for RN tests
test/react-native/features/onerror_callback.feature New RN callback feature coverage
test/react-native/features/native-stack-ios.feature New iOS native stack scenarios
test/react-native/features/native-stack-android.feature Adjust Android native stack scenarios/tags
test/react-native/features/http_errors.feature New RN HTTP error feature scenarios
test/react-native/features/fixtures/scenario-launcher/scenarios/core/OnErrorCallbackScenario.js New RN fixture scenario
test/react-native/features/fixtures/scenario-launcher/scenarios/core/NetworkRequestScenario.js New RN HTTP error fixture scenario
test/react-native/features/fixtures/scenario-launcher/scenarios/core/NetworkBreadcrumbsJsScenario.js New RN network breadcrumb fixture
test/react-native/features/fixtures/scenario-launcher/scenarios/core/index.js Export new RN fixture scenarios
test/react-native/features/fixtures/scenario-launcher/scenarios/core/AddOnErrorCallbackScenario.js New RN addOnError fixture scenario
test/react-native/features/fixtures/expected_http_errors/500/response.json Expected RN HTTP error response fixture
test/react-native/features/fixtures/expected_http_errors/500/request.json Expected RN HTTP error request fixture
test/react-native/features/fixtures/expected_http_errors/500/exceptions.json Expected RN HTTP error exception fixture
test/react-native/features/fixtures/expected_http_errors/401/response.json Expected RN HTTP error response fixture
test/react-native/features/fixtures/expected_http_errors/401/request.json Expected RN HTTP error request fixture
test/react-native/features/fixtures/expected_http_errors/401/exceptions.json Expected RN HTTP error exception fixture
test/react-native/features/fixtures/expected_breadcrumbs/NetworkJsScenario.json Expected RN network breadcrumb fixture
test/react-native/features/breadcrumbs.feature Add RN network breadcrumb scenario
test/react-native-cli/Gemfile Maze Runner v11 for RN CLI tests
test/node/Gemfile Maze Runner v11 for node maze tests
test/node/features/steps/server_fixture_request_steps.rb Set Content-Type for URL-encoded POST step
test/local-npm-config.yml Allow local proxying for @bugsnag/cli
test/cloudflare-workers/Gemfile Maze Runner v11 for workers tests
test/browser/features/http_errors.feature Update browser HTTP error expectations (handled + empty stack)
test/aws-lambda/Gemfile Maze Runner v11 for lambda tests
scripts/generate-react-native-fixture.js Ensure plugin-network-instrumentation installed in RN fixture
packages/react-native/test/index.test.ts Add unit test for addOnError callbacks
packages/react-native/prepare-android-vendor.config Bump vendored Android version to 6.25.0
packages/react-native/ios/BugsnagReactNative/BugsnagEventDeserializer.m Deserialize multiple errors + request/response; native stack handling
packages/react-native/CONTRIBUTING.md Update local npm (verdaccio) dev workflow
packages/react-native/android/build.gradle Bump bugsnag-android/plugin-react-native to 6.25.0
packages/plugin-network-instrumentation/test/redact-query-parameters.test.ts Remove URL redaction tests (behavior changed)
packages/plugin-network-instrumentation/test/parse-url.test.ts New parseUrl unit tests
packages/plugin-network-instrumentation/test/parse-query-string.test.ts New parseQueryString unit tests
packages/plugin-network-instrumentation/test/network-instrumentation.test.ts Update/add tests for redaction, URL changes, handled state, stack omission
packages/plugin-network-instrumentation/test/network-instrumentation-xhr.test.ts Update XHR tests for handled state/stack omission; remove redaction test
packages/plugin-network-instrumentation/network-instrumentation.js Manual URL parsing; params redaction; handled HTTP errors; omit stacktraces
packages/plugin-network-instrumentation/lib/redact-query-parameters.js Remove URLSearchParams-based redaction helper
packages/plugin-network-instrumentation/lib/parse-url.js Add manual URL parsing helper
packages/plugin-network-instrumentation/lib/parse-query-string.js Add manual query parsing helper
packages/plugin-network-instrumentation/lib/parse-query-params.js Remove URL-based query param parser
packages/plugin-network-instrumentation/lib/extract-domain.js Remove URL-based domain extraction
packages/plugin-inline-script-content/inline-script-content.js Expand supported event target constructors
packages/plugin-electron-ipc/preload.js Wrap preload in IIFE + formatting cleanup
packages/plugin-browser-device/package.json Bump @bugsnag/cuid dependency
packages/plugin-browser-device/device.js Use cuid.isCuid and hoist require
packages/plugin-aws-lambda/test/serverless-express.test.js Silence console.debug in tests
packages/node/test/notifier.test.ts Add console.log spy + listener cleanup in tests
packages/in-flight/package.json Bump @bugsnag/cuid dependency
packages/delivery-react-native/test/delivery.test.ts Add request/response + native cause stack tests
packages/delivery-react-native/delivery.js Attach native stack to specific error; include request/response in payload
packages/core/package.json Bump @bugsnag/cuid dependency
package.json Update verdaccio config path; local npm scripts
package-lock.json Lockfile updates for dependency bumps + metadata
jest.config.js Ignore verdaccio/dist/examples/fixtures in module resolution
dockerfiles/Dockerfile.release Update base image to Node 22
dockerfiles/Dockerfile.node Update builder Node 22; Maze Runner v11 image
dockerfiles/Dockerfile.ci Update CI base image to Node 22
dockerfiles/Dockerfile.browser Update builder Node 22; Maze Runner v11 image
docker-compose.yml Use Maze Runner v11 images for RN
dangerfile.js Enable coverage diff output via coverage-diff
CHANGELOG.md Add 8.9.0 release notes + formatting changes
.github/workflows/update-dependencies.yml Bump pinned action SHAs
.github/workflows/test-electron.yml Run electron tests on Node 22; bump action SHAs
.github/workflows/scorecard.yml Bump pinned action SHAs
.github/workflows/pr-diff.yml Add coverage capture; run on Node 22
.github/workflows/codeql.yml Bump CodeQL + checkout action SHAs
.github/workflows/aws-lambda.yml Run lambda workflow on Node 22; bump action SHAs
.buildkite/pipeline.yml Move mac queues/env to Node 22
.buildkite/package_manifest.json Add plugin-network-instrumentation to manifests
.buildkite/basic/react-native-ios-pipeline.yml Update RN matrix + set Node 22
.buildkite/basic/react-native-ios-full-pipeline.yml Update RN matrix + set Node 22
.buildkite/basic/react-native-cli-pipeline.yml Update RN matrix versions
.buildkite/basic/react-native-android-pipeline.yml Update RN matrix + set Node 22
.buildkite/basic/react-native-android-full-pipeline.yml Update RN matrix + move queues/env to Node 22
.buildkite/basic/node-pipeline.yml Add Node 22 to test matrix
.buildkite/basic/electron-pipeline.yml Run electron pipeline on Node 22

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +12 to +16
const pairs = queryString.split('&').filter(pair => pair.length > 0)
pairs.forEach(pair => {
const [key, value] = pair.split('=')
params[decodeURIComponent(key)] = decodeURIComponent(value || '')
})
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

parseQueryString splits on every "=" and only uses the first two parts, which will truncate values that themselves contain "=" (e.g. base64/JWT payloads). It also calls decodeURIComponent without guarding against malformed percent-encoding, which can throw and break HTTP error reporting. Consider splitting on the first "=" only and wrapping decoding in a try/catch (falling back to the raw substring on decode errors).

Copilot uses AI. Check for mistakes.
Comment on lines 96 to 102
const requestObj = {
url: startContext.url,
httpMethod: startContext.method,
url,
httpMethod: method,
headers: startContext.headers,
params: requestParams
params: redactValues(requestParams, client._config.redactedKeys),
bodyLength: startContext.body ? startContext.body.length : undefined
}
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

client._config.redactedKeys can include RegExp entries (per core config validation in packages/core/config.js:148-155), but redactValues assumes every key is a string (calls toLowerCase()), which will throw if a regex is present. Either filter redactedKeys to strings here or update redactValues to support regexes to avoid crashing the plugin at runtime.

Copilot uses AI. Check for mistakes.
Comment on lines +15 to +21
afterEach(() => {
// Clean up process listeners to prevent MaxListenersExceeded warning
// The unhandledRejection and uncaughtException plugins register listeners
// but don't have destroy methods called automatically
process.removeAllListeners('unhandledRejection')
process.removeAllListeners('uncaughtException')
jest.clearAllMocks()
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

process.removeAllListeners('unhandledRejection'|'uncaughtException') will also remove Jest's own listeners (and any other listeners registered by the test runner), which can cause tests to silently miss failures or behave inconsistently across files. Prefer removing only the listeners added by Bugsnag (e.g. snapshot process.listeners(...) before start and restore the difference, or call a plugin/client teardown API if available) instead of clearing all listeners.

Copilot uses AI. Check for mistakes.
Comment on lines +40 to 72
The proxy of choice is [verdaccio](https://verdaccio.org/). This is already included as a dev dependency in the bugsnag-js repository, along with a config file at `test/local-npm.config.yml`.

```sh
# install it globally on your system
npm i -g verdaccio
To start the verdaccio server, run the `local-npm:start` npm script from the repo root:

# starts the on the default port
verdaccio

# log in to the registry
# (you can enter anything, just be sure to remember them when
# your session times out and you need to "sign in" again)
npm adduser --registry http://localhost:4873
```
npm run local-npm:start
```

This will start verdaccio running on port `5539`. You will need to keep this running for the following steps.

On the project you want to install the development notifier, create an a `.npmrc` file at the project root alongside `package.json`:
In the project where you want to install the development notifier, create an a `.npmrc` file at the project root alongside `package.json` and set the local registry URL:

```
registry=http://localhost:4873
registry=http://localhost:5539
```

Alternatively you can just supply the `--registry=http://localhost:4873` to each npm/yarn command you issue.
Alternatively you can just supply the `--registry=http://localhost:5539` to each npm/yarn command you issue.

#### Installing the development notifier on a React Native project
#### Installing the development notifier in a React Native project

1. Make changes.
2. Run the following command to publish to the local registry:
2. In a new terminal window, from the repo root, run the `local-npm:publish-all` npm script to publish to the local registry:

```
npx lerna publish v99.99.99-canary.`git rev-parse HEAD` --no-push --exact --no-git-tag-version --registry http://localhost:4873/
VERSION_IDENTIFIER=8.99.99 npm run local-npm:publish-all
```

This should prompt you for each module that has changed since the last proper publish.
This will publish all of the packages in the repo to verdaccio with the specified version.

Note: You'll need to ensure you publish using the same major version as is currently in the repository. This is because some packages declare a peer dependency on `@bugsnag/core`, and lerna does not update peer dependencies when versioning, so changing the major version will mean the packages fail to install (since the peer dependency cannot be resolved from the local registry).

4. Reset the changes that were made to `lerna.json` and `package-lock.json`s `git reset --hard HEAD` (we don't want to store these throwaway versions)
4. Reset the changes that were made to `package.json`, `lerna.json` and `package-lock.json` files with `git reset --hard HEAD` (we don't want to commit these throwaway versions)

Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section references test/local-npm.config.yml, but the repo uses test/local-npm-config.yml (dash, not dot), so following the instructions will fail. Also there are a couple of typos/format issues: "create an a .npmrc" and the numbered steps jump from 2 to 4.

Copilot uses AI. Check for mistakes.
Comment thread CHANGELOG.md
Comment on lines +19 to +28
- (react-native) Report error cause with native stacktrace for Turbo Module exceptions [#2686] (https://github.com/bugsnag/bugsnag-js/pull/2686)

### Dependencies

- Update @bugsnag/cuid to [v3.2.1] (https://github.com/bugsnag/cuid/releases/tag/v3.2.1) [#2706](https://github.com/bugsnag/bugsnag-js/pull/2706)
- Update bugsnag-cocoa to [v6.35.0](https//github.com/bugsnag/bugsnag-cocoa/releases/tag/v6.35.0) [#2663](https://github.com/bugsnag/bugsnag-js/pull/2663)
- Update bugsnag-android to [v6.22.0](https//github.com/bugsnag/bugsnag-android/releases/tag/v6.22.0) [#2656](https://github.com/bugsnag/bugsnag-js/pull/2656)
- Update bugsnag-android to [v6.23.0](https//github.com/bugsnag/bugsnag-android/releases/tag/v6.23.0) [#2673](https://github.com/bugsnag/bugsnag-js/pull/2673)
- Update bugsnag-android to [v6.25.0](https//github.com/bugsnag/bugsnag-android/releases/tag/v6.25.0) [#2689](https://github.com/bugsnag/bugsnag-js/pull/2689)
- Update bugsnag-cocoa to [v6.36.0](https//github.com/bugsnag/bugsnag-cocoa/releases/tag/v6.36.0) [#2707](https://github.com/bugsnag/bugsnag-js/pull/2707)
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Several markdown links in the new 8.9.0 changelog section are malformed: there is an extra space between ] and ( (e.g. [#2686] ( ... )), and multiple dependency links use https// instead of https://, which will render as broken links.

Suggested change
- (react-native) Report error cause with native stacktrace for Turbo Module exceptions [#2686] (https://github.com/bugsnag/bugsnag-js/pull/2686)
### Dependencies
- Update @bugsnag/cuid to [v3.2.1] (https://github.com/bugsnag/cuid/releases/tag/v3.2.1) [#2706](https://github.com/bugsnag/bugsnag-js/pull/2706)
- Update bugsnag-cocoa to [v6.35.0](https//github.com/bugsnag/bugsnag-cocoa/releases/tag/v6.35.0) [#2663](https://github.com/bugsnag/bugsnag-js/pull/2663)
- Update bugsnag-android to [v6.22.0](https//github.com/bugsnag/bugsnag-android/releases/tag/v6.22.0) [#2656](https://github.com/bugsnag/bugsnag-js/pull/2656)
- Update bugsnag-android to [v6.23.0](https//github.com/bugsnag/bugsnag-android/releases/tag/v6.23.0) [#2673](https://github.com/bugsnag/bugsnag-js/pull/2673)
- Update bugsnag-android to [v6.25.0](https//github.com/bugsnag/bugsnag-android/releases/tag/v6.25.0) [#2689](https://github.com/bugsnag/bugsnag-js/pull/2689)
- Update bugsnag-cocoa to [v6.36.0](https//github.com/bugsnag/bugsnag-cocoa/releases/tag/v6.36.0) [#2707](https://github.com/bugsnag/bugsnag-js/pull/2707)
- (react-native) Report error cause with native stacktrace for Turbo Module exceptions [#2686](https://github.com/bugsnag/bugsnag-js/pull/2686)
### Dependencies
- Update @bugsnag/cuid to [v3.2.1](https://github.com/bugsnag/cuid/releases/tag/v3.2.1) [#2706](https://github.com/bugsnag/bugsnag-js/pull/2706)
- Update bugsnag-cocoa to [v6.35.0](https://github.com/bugsnag/bugsnag-cocoa/releases/tag/v6.35.0) [#2663](https://github.com/bugsnag/bugsnag-js/pull/2663)
- Update bugsnag-android to [v6.22.0](https://github.com/bugsnag/bugsnag-android/releases/tag/v6.22.0) [#2656](https://github.com/bugsnag/bugsnag-js/pull/2656)
- Update bugsnag-android to [v6.23.0](https://github.com/bugsnag/bugsnag-android/releases/tag/v6.23.0) [#2673](https://github.com/bugsnag/bugsnag-js/pull/2673)
- Update bugsnag-android to [v6.25.0](https://github.com/bugsnag/bugsnag-android/releases/tag/v6.25.0) [#2689](https://github.com/bugsnag/bugsnag-js/pull/2689)
- Update bugsnag-cocoa to [v6.36.0](https://github.com/bugsnag/bugsnag-cocoa/releases/tag/v6.36.0) [#2707](https://github.com/bugsnag/bugsnag-js/pull/2707)

Copilot uses AI. Check for mistakes.
Comment on lines 209 to 213
// Network errors typically don't generate HTTP error events in this plugin
// since they don't have status codes, but let's verify the behavior
expect(notifyCallbacks.length).toBe(0)
})

it('should redact specified query parameters in XHR URLs', async () => {
const notifyCallbacks: Event[] = []

plugin = createPlugin({
httpErrorCodes: { min: 400, max: 499 }
})

const client = new Client({ apiKey: 'api_key', plugins: [plugin], redactedKeys: ['token', 'userId'] })
client._setDelivery(createMockDelivery(notifyCallbacks))

const xhr = new XMLHttpRequest() as any
xhr.status = 403
xhr.statusText = 'Forbidden'
xhr.response = 'Forbidden'

xhr.open('GET', 'https://api.example.com/data?userId=42')
xhr.send()

await new Promise(resolve => setTimeout(resolve, 20))

expect(notifyCallbacks.length).toBe(1)
const event = notifyCallbacks[0].toJSON()

// Verify that sensitive query parameters are redacted
expect(event.request.url).toBe('https://api.example.com/data?userId=[REDACTED]')
})
})
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The XHR suite no longer has any assertions covering query-param redaction (config.redactedKeys) after removing the previous test. Since URL handling has changed (query string now moved into request.params), it would be good to add an XHR-specific test that verifies sensitive params are redacted in event.request.params for parity with the fetch tests.

Copilot uses AI. Check for mistakes.
hamudi-ahmed
hamudi-ahmed previously approved these changes Apr 7, 2026
@SB-priyankap SB-priyankap merged commit 09c7af9 into main Apr 8, 2026
125 checks passed
@SB-priyankap SB-priyankap deleted the release/v8.9.0 branch April 8, 2026 13:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants