Release/v8.9.0#2720
Conversation
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
Update bugsnag-android to version v6.22.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>
Update bugsnag-android to version v6.23.0
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>
Update bugsnag-cocoa to version v6.35.0
* plat-12013 update cuid version and replace validation * plat-12013 push package.lock changes * plat-12013 fix eslint issue and update changelog.md file
Update bugsnag-cocoa to version v6.36.0
…m-pr-bot Reinstate code coverage check
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)
|
| 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%) |
There was a problem hiding this comment.
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.
| const pairs = queryString.split('&').filter(pair => pair.length > 0) | ||
| pairs.forEach(pair => { | ||
| const [key, value] = pair.split('=') | ||
| params[decodeURIComponent(key)] = decodeURIComponent(value || '') | ||
| }) |
There was a problem hiding this comment.
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).
| 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 | ||
| } |
There was a problem hiding this comment.
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.
| 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() |
There was a problem hiding this comment.
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.
| 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) | ||
|
|
There was a problem hiding this comment.
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.
| - (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) |
There was a problem hiding this comment.
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.
| - (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) |
| // 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]') | ||
| }) | ||
| }) |
There was a problem hiding this comment.
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.
Added
Changed
Fixed