diff --git a/CHANGELOG.md b/CHANGELOG.md index 7044b4491463..9583de5de2ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,18 @@ - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott +## 6.10.0-beta.3 + +- ref(nextjs): Small changes to `nextjs` integration test runner (#3819) +- fix(nextjs): Let `flush` finish in API routes (#3811) +- ref(tracing): Remove updated CLS from web-vitals (#3822) - CHERRY PICKED (NOT + MERGED TO MASTER) + +## 6.10.0-beta.2 + +- fix(nextjs): Do not start a navigation if from url is the same (#3814) +- fix(nextjs): Use local copies for all sentry packages when testing on vercel (#3812) +- fix(web-vitals): Check for valid entry in updatedCLS (#3816) ## 6.9.0 diff --git a/lerna.json b/lerna.json index a70455e42534..f61290e59a48 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "lerna": "3.4.0", - "version": "6.9.0", + "version": "6.10.0-beta.3", "packages": "packages/*", "npmClient": "yarn", "useWorkspaces": true diff --git a/packages/angular/package.json b/packages/angular/package.json index 675ce9fd40bf..cd04fb16862d 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Official Sentry SDK for Angular", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular", @@ -21,9 +21,9 @@ "@angular/router": "10.x || 11.x || 12.x" }, "dependencies": { - "@sentry/browser": "6.9.0", - "@sentry/types": "6.9.0", - "@sentry/utils": "6.9.0", + "@sentry/browser": "6.10.0-beta.3", + "@sentry/types": "6.10.0-beta.3", + "@sentry/utils": "6.10.0-beta.3", "rxjs": "^6.6.0", "tslib": "^1.9.3" }, @@ -31,7 +31,7 @@ "@angular/common": "^10.0.3", "@angular/core": "^10.0.3", "@angular/router": "^10.0.3", - "@sentry-internal/eslint-config-sdk": "6.9.0", + "@sentry-internal/eslint-config-sdk": "6.10.0-beta.3", "npm-run-all": "^4.1.2", "prettier": "1.19.0", "rimraf": "^2.6.3", diff --git a/packages/browser/package.json b/packages/browser/package.json index b381b3d4664f..54e6cdaaa9b6 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/browser", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Official Sentry SDK for browsers", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/browser", @@ -16,13 +16,13 @@ "access": "public" }, "dependencies": { - "@sentry/core": "6.9.0", - "@sentry/types": "6.9.0", - "@sentry/utils": "6.9.0", + "@sentry/core": "6.10.0-beta.3", + "@sentry/types": "6.10.0-beta.3", + "@sentry/utils": "6.10.0-beta.3", "tslib": "^1.9.3" }, "devDependencies": { - "@sentry-internal/eslint-config-sdk": "6.9.0", + "@sentry-internal/eslint-config-sdk": "6.10.0-beta.3", "@types/eslint": "^7.2.0", "@types/md5": "2.1.33", "btoa": "^1.2.1", diff --git a/packages/core/package.json b/packages/core/package.json index 56184a802e92..104563bcf6ca 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/core", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Base implementation for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/core", @@ -16,14 +16,14 @@ "access": "public" }, "dependencies": { - "@sentry/hub": "6.9.0", - "@sentry/minimal": "6.9.0", - "@sentry/types": "6.9.0", - "@sentry/utils": "6.9.0", + "@sentry/hub": "6.10.0-beta.3", + "@sentry/minimal": "6.10.0-beta.3", + "@sentry/types": "6.10.0-beta.3", + "@sentry/utils": "6.10.0-beta.3", "tslib": "^1.9.3" }, "devDependencies": { - "@sentry-internal/eslint-config-sdk": "6.9.0", + "@sentry-internal/eslint-config-sdk": "6.10.0-beta.3", "jest": "^24.7.1", "npm-run-all": "^4.1.2", "prettier": "1.19.0", diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index 1f22690a823e..bb63ce5658be 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const SDK_VERSION = '6.9.0'; +export const SDK_VERSION = '6.10.0-beta.3'; diff --git a/packages/ember/package.json b/packages/ember/package.json index 91d888764bb3..951bfcb8b2ac 100644 --- a/packages/ember/package.json +++ b/packages/ember/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/ember", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Official Sentry SDK for Ember.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/ember", @@ -32,10 +32,10 @@ }, "dependencies": { "@embroider/macros": "~0.37.0", - "@sentry/browser": "6.9.0", - "@sentry/tracing": "6.9.0", - "@sentry/types": "6.9.0", - "@sentry/utils": "6.9.0", + "@sentry/browser": "6.10.0-beta.3", + "@sentry/tracing": "6.10.0-beta.3", + "@sentry/types": "6.10.0-beta.3", + "@sentry/utils": "6.10.0-beta.3", "ember-auto-import": "^1.6.0", "ember-cli-babel": "^7.20.5", "ember-cli-htmlbars": "^5.1.2", @@ -46,7 +46,7 @@ "@embroider/test-setup": "~0.37.0", "@glimmer/component": "^1.0.0", "@glimmer/tracking": "^1.0.0", - "@sentry-internal/eslint-config-sdk": "6.9.0", + "@sentry-internal/eslint-config-sdk": "6.10.0-beta.3", "@types/ember": "^3.16.3", "@types/ember-qunit": "^3.4.9", "@types/ember__test-helpers": "^1.7.0", diff --git a/packages/eslint-config-sdk/package.json b/packages/eslint-config-sdk/package.json index a62c62de2b61..96384c899ad5 100644 --- a/packages/eslint-config-sdk/package.json +++ b/packages/eslint-config-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config-sdk", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Official Sentry SDK eslint config", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-config-sdk", @@ -19,8 +19,8 @@ "access": "public" }, "dependencies": { - "@sentry-internal/eslint-plugin-sdk": "6.9.0", - "@sentry-internal/typescript": "6.9.0", + "@sentry-internal/eslint-plugin-sdk": "6.10.0-beta.3", + "@sentry-internal/typescript": "6.10.0-beta.3", "@typescript-eslint/eslint-plugin": "^3.9.0", "@typescript-eslint/parser": "^3.9.0", "eslint-config-prettier": "^6.11.0", diff --git a/packages/eslint-plugin-sdk/package.json b/packages/eslint-plugin-sdk/package.json index 3d0a1a8b4169..2f2024d550fa 100644 --- a/packages/eslint-plugin-sdk/package.json +++ b/packages/eslint-plugin-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-plugin-sdk", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Official Sentry SDK eslint plugin", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-plugin-sdk", diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index b854a1874104..837c2012128b 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/gatsby", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Official Sentry SDK for Gatsby.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/gatsby", @@ -26,14 +26,14 @@ "access": "public" }, "dependencies": { - "@sentry/react": "6.9.0", - "@sentry/tracing": "6.9.0" + "@sentry/react": "6.10.0-beta.3", + "@sentry/tracing": "6.10.0-beta.3" }, "peerDependencies": { "gatsby": "^2.0.0 || ^3.0.0" }, "devDependencies": { - "@sentry-internal/eslint-config-sdk": "6.9.0", + "@sentry-internal/eslint-config-sdk": "6.10.0-beta.3", "@testing-library/react": "^10.4.9", "jest": "^24.7.1", "npm-run-all": "^4.1.2", diff --git a/packages/hub/package.json b/packages/hub/package.json index a93848dabaa6..411dc082a9e0 100644 --- a/packages/hub/package.json +++ b/packages/hub/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/hub", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Sentry hub which handles global state managment.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/hub", @@ -16,12 +16,12 @@ "access": "public" }, "dependencies": { - "@sentry/types": "6.9.0", - "@sentry/utils": "6.9.0", + "@sentry/types": "6.10.0-beta.3", + "@sentry/utils": "6.10.0-beta.3", "tslib": "^1.9.3" }, "devDependencies": { - "@sentry-internal/eslint-config-sdk": "6.9.0", + "@sentry-internal/eslint-config-sdk": "6.10.0-beta.3", "jest": "^24.7.1", "npm-run-all": "^4.1.2", "prettier": "1.19.0", diff --git a/packages/integrations/package.json b/packages/integrations/package.json index da6b41b05b07..ab5ab9aa9132 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/integrations", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Pluggable integrations that can be used to enhance JS SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/integrations", @@ -16,13 +16,13 @@ "module": "esm/index.js", "types": "dist/index.d.ts", "dependencies": { - "@sentry/types": "6.9.0", - "@sentry/utils": "6.9.0", + "@sentry/types": "6.10.0-beta.3", + "@sentry/utils": "6.10.0-beta.3", "localforage": "^1.8.1", "tslib": "^1.9.3" }, "devDependencies": { - "@sentry-internal/eslint-config-sdk": "6.9.0", + "@sentry-internal/eslint-config-sdk": "6.10.0-beta.3", "chai": "^4.1.2", "jest": "^24.7.1", "npm-run-all": "^4.1.2", diff --git a/packages/minimal/package.json b/packages/minimal/package.json index 3268b8b2fced..fbe908e6da53 100644 --- a/packages/minimal/package.json +++ b/packages/minimal/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/minimal", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Sentry minimal library that can be used in other packages", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/minimal", @@ -16,12 +16,12 @@ "access": "public" }, "dependencies": { - "@sentry/hub": "6.9.0", - "@sentry/types": "6.9.0", + "@sentry/hub": "6.10.0-beta.3", + "@sentry/types": "6.10.0-beta.3", "tslib": "^1.9.3" }, "devDependencies": { - "@sentry-internal/eslint-config-sdk": "6.9.0", + "@sentry-internal/eslint-config-sdk": "6.10.0-beta.3", "jest": "^24.7.1", "npm-run-all": "^4.1.2", "prettier": "1.19.0", diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 75e9bb064d33..aa2548a1bd4c 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/nextjs", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Official Sentry SDK for Next.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/nextjs", @@ -17,17 +17,17 @@ "access": "public" }, "dependencies": { - "@sentry/core": "6.9.0", - "@sentry/integrations": "6.9.0", - "@sentry/node": "6.9.0", - "@sentry/react": "6.9.0", - "@sentry/tracing": "6.9.0", - "@sentry/utils": "6.9.0", + "@sentry/core": "6.10.0-beta.3", + "@sentry/integrations": "6.10.0-beta.3", + "@sentry/node": "6.10.0-beta.3", + "@sentry/react": "6.10.0-beta.3", + "@sentry/tracing": "6.10.0-beta.3", + "@sentry/utils": "6.10.0-beta.3", "@sentry/webpack-plugin": "1.15.1", "tslib": "^1.9.3" }, "devDependencies": { - "@sentry/types": "6.9.0", + "@sentry/types": "6.10.0-beta.3", "@types/webpack": "^5.28.0", "eslint": "7.20.0", "next": "10.1.3", diff --git a/packages/node/package.json b/packages/node/package.json index 0db126c2d710..b4be13ce9a65 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Official Sentry SDK for Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node", @@ -16,18 +16,18 @@ "access": "public" }, "dependencies": { - "@sentry/core": "6.9.0", - "@sentry/hub": "6.9.0", - "@sentry/tracing": "6.9.0", - "@sentry/types": "6.9.0", - "@sentry/utils": "6.9.0", + "@sentry/core": "6.10.0-beta.3", + "@sentry/hub": "6.10.0-beta.3", + "@sentry/tracing": "6.10.0-beta.3", + "@sentry/types": "6.10.0-beta.3", + "@sentry/utils": "6.10.0-beta.3", "cookie": "^0.4.1", "https-proxy-agent": "^5.0.0", "lru_map": "^0.3.3", "tslib": "^1.9.3" }, "devDependencies": { - "@sentry-internal/eslint-config-sdk": "6.9.0", + "@sentry-internal/eslint-config-sdk": "6.10.0-beta.3", "@types/cookie": "0.3.2", "@types/express": "^4.17.2", "@types/lru-cache": "^5.1.0", diff --git a/packages/react/package.json b/packages/react/package.json index a8791440f123..d3ba3efcc003 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/react", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Official Sentry SDK for React.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/react", @@ -16,10 +16,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "6.9.0", - "@sentry/minimal": "6.9.0", - "@sentry/types": "6.9.0", - "@sentry/utils": "6.9.0", + "@sentry/browser": "6.10.0-beta.3", + "@sentry/minimal": "6.10.0-beta.3", + "@sentry/types": "6.10.0-beta.3", + "@sentry/utils": "6.10.0-beta.3", "hoist-non-react-statics": "^3.3.2", "tslib": "^1.9.3" }, @@ -27,7 +27,7 @@ "react": "15.x || 16.x || 17.x" }, "devDependencies": { - "@sentry-internal/eslint-config-sdk": "6.9.0", + "@sentry-internal/eslint-config-sdk": "6.10.0-beta.3", "@testing-library/react": "^11.2.6", "@testing-library/react-hooks": "^5.1.1", "@types/history-4": "npm:@types/history@4.7.8", diff --git a/packages/serverless/package.json b/packages/serverless/package.json index b7f1d4dfb148..948d3f763b99 100644 --- a/packages/serverless/package.json +++ b/packages/serverless/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/serverless", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Official Sentry SDK for various serverless solutions", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/serverless", @@ -16,11 +16,11 @@ "access": "public" }, "dependencies": { - "@sentry/minimal": "6.9.0", - "@sentry/node": "6.9.0", - "@sentry/tracing": "6.9.0", - "@sentry/types": "6.9.0", - "@sentry/utils": "6.9.0", + "@sentry/minimal": "6.10.0-beta.3", + "@sentry/node": "6.10.0-beta.3", + "@sentry/tracing": "6.10.0-beta.3", + "@sentry/types": "6.10.0-beta.3", + "@sentry/utils": "6.10.0-beta.3", "@types/aws-lambda": "^8.10.62", "@types/express": "^4.17.2", "tslib": "^1.9.3" @@ -30,7 +30,7 @@ "@google-cloud/common": "^3.4.1", "@google-cloud/functions-framework": "^1.7.1", "@google-cloud/pubsub": "^2.5.0", - "@sentry-internal/eslint-config-sdk": "6.9.0", + "@sentry-internal/eslint-config-sdk": "6.10.0-beta.3", "@types/node": "^14.6.4", "aws-sdk": "^2.765.0", "find-up": "^5.0.0", diff --git a/packages/tracing/package.json b/packages/tracing/package.json index 90ab74ba624b..935075aa57b7 100644 --- a/packages/tracing/package.json +++ b/packages/tracing/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/tracing", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Extensions for Sentry AM", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing", @@ -16,15 +16,15 @@ "access": "public" }, "dependencies": { - "@sentry/hub": "6.9.0", - "@sentry/minimal": "6.9.0", - "@sentry/types": "6.9.0", - "@sentry/utils": "6.9.0", + "@sentry/hub": "6.10.0-beta.3", + "@sentry/minimal": "6.10.0-beta.3", + "@sentry/types": "6.10.0-beta.3", + "@sentry/utils": "6.10.0-beta.3", "tslib": "^1.9.3" }, "devDependencies": { - "@sentry-internal/eslint-config-sdk": "6.9.0", - "@sentry/browser": "6.9.0", + "@sentry-internal/eslint-config-sdk": "6.10.0-beta.3", + "@sentry/browser": "6.10.0-beta.3", "@types/express": "^4.17.1", "@types/jsdom": "^16.2.3", "jest": "^24.7.1", diff --git a/packages/tracing/src/browser/metrics.ts b/packages/tracing/src/browser/metrics.ts index 94e14272dbb3..d7bfd434ba5c 100644 --- a/packages/tracing/src/browser/metrics.ts +++ b/packages/tracing/src/browser/metrics.ts @@ -9,7 +9,6 @@ import { msToSec } from '../utils'; import { getCLS, LayoutShift } from './web-vitals/getCLS'; import { getFID } from './web-vitals/getFID'; import { getLCP, LargestContentfulPaint } from './web-vitals/getLCP'; -import { getUpdatedCLS } from './web-vitals/getUpdatedCLS'; import { getVisibilityWatcher } from './web-vitals/lib/getVisibilityWatcher'; import { NavigatorDeviceMemory, NavigatorNetworkInformation } from './web-vitals/types'; @@ -22,7 +21,6 @@ export class MetricsInstrumentation { private _performanceCursor: number = 0; private _lcpEntry: LargestContentfulPaint | undefined; private _clsEntry: LayoutShift | undefined; - private _updatedClsEntry: LayoutShift | undefined; public constructor() { if (!isNodeEnv() && global?.performance) { @@ -189,10 +187,10 @@ export class MetricsInstrumentation { }); } - // If FCP is not recorded we should not record the updated cls value + // If FCP is not recorded we should not record the cls value // according to the new definition of CLS. if (!('fcp' in this._measurements)) { - delete this._measurements['updated-cls']; + delete this._measurements.cls; } transaction.setMeasurements(this._measurements); @@ -229,17 +227,13 @@ export class MetricsInstrumentation { transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)), ); } - - if (this._updatedClsEntry && this._updatedClsEntry.sources) { - logger.log('[Measurements] Adding Updated CLS Data'); - this._updatedClsEntry.sources.forEach((source, index) => - transaction.setTag(`updated-cls.source.${index + 1}`, htmlTreeAsString(source.node)), - ); - } } /** Starts tracking the Cumulative Layout Shift on the current page. */ private _trackCLS(): void { + // See: + // https://web.dev/evolving-cls/ + // https://web.dev/cls-web-tooling/ getCLS(metric => { const entry = metric.entries.pop(); if (!entry) { @@ -250,20 +244,6 @@ export class MetricsInstrumentation { this._measurements['cls'] = { value: metric.value }; this._clsEntry = entry as LayoutShift; }); - - // See: - // https://web.dev/evolving-cls/ - // https://web.dev/cls-web-tooling/ - getUpdatedCLS(metric => { - const entry = metric.entries.pop(); - if (!entry) { - return; - } - - logger.log('[Measurements] Adding Updated CLS'); - this._measurements['updated-cls'] = { value: metric.value }; - this._updatedClsEntry = entry as LayoutShift; - }); } /** diff --git a/packages/tracing/src/browser/web-vitals/getCLS.ts b/packages/tracing/src/browser/web-vitals/getCLS.ts index 7e3307ce3115..ef73ceb3aee0 100644 --- a/packages/tracing/src/browser/web-vitals/getCLS.ts +++ b/packages/tracing/src/browser/web-vitals/getCLS.ts @@ -38,12 +38,40 @@ export const getCLS = (onReport: ReportHandler, reportAllChanges?: boolean): voi const metric = initMetric('CLS', 0); let report: ReturnType; + let sessionValue = 0; + let sessionEntries: PerformanceEntry[] = []; + const entryHandler = (entry: LayoutShift): void => { + // Only count layout shifts without recent user input. + // TODO: Figure out why entry can be undefined if (entry && !entry.hadRecentInput) { - (metric.value as number) += entry.value; - metric.entries.push(entry); - if (report) { - report(); + const firstSessionEntry = sessionEntries[0]; + const lastSessionEntry = sessionEntries[sessionEntries.length - 1]; + + // If the entry occurred less than 1 second after the previous entry and + // less than 5 seconds after the first entry in the session, include the + // entry in the current session. Otherwise, start a new session. + if ( + sessionValue && + sessionEntries.length !== 0 && + entry.startTime - lastSessionEntry.startTime < 1000 && + entry.startTime - firstSessionEntry.startTime < 5000 + ) { + sessionValue += entry.value; + sessionEntries.push(entry); + } else { + sessionValue = entry.value; + sessionEntries = [entry]; + } + + // If the current session value is larger than the current CLS value, + // update CLS and the entries contributing to it. + if (sessionValue > metric.value) { + metric.value = sessionValue; + metric.entries = sessionEntries; + if (report) { + report(); + } } } }; diff --git a/packages/tracing/src/browser/web-vitals/getUpdatedCLS.ts b/packages/tracing/src/browser/web-vitals/getUpdatedCLS.ts deleted file mode 100644 index 5f5673a67ae1..000000000000 --- a/packages/tracing/src/browser/web-vitals/getUpdatedCLS.ts +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { bindReporter } from './lib/bindReporter'; -import { initMetric } from './lib/initMetric'; -import { observe, PerformanceEntryHandler } from './lib/observe'; -import { onHidden } from './lib/onHidden'; -import { ReportHandler } from './types'; - -// https://wicg.github.io/layout-instability/#sec-layout-shift -export interface LayoutShift extends PerformanceEntry { - value: number; - hadRecentInput: boolean; - sources: Array; - toJSON(): Record; -} - -export interface LayoutShiftAttribution { - node?: Node; - previousRect: DOMRectReadOnly; - currentRect: DOMRectReadOnly; -} - -export const getUpdatedCLS = (onReport: ReportHandler, reportAllChanges?: boolean): void => { - const metric = initMetric('UpdatedCLS', 0); - let report: ReturnType; - - let sessionValue = 0; - let sessionEntries: PerformanceEntry[] = []; - - const entryHandler = (entry: LayoutShift): void => { - // Only count layout shifts without recent user input. - // TODO: Figure out why entry can be undefined - if (entry && !entry.hadRecentInput) { - const firstSessionEntry = sessionEntries[0]; - const lastSessionEntry = sessionEntries[sessionEntries.length - 1]; - - // If the entry occurred less than 1 second after the previous entry and - // less than 5 seconds after the first entry in the session, include the - // entry in the current session. Otherwise, start a new session. - if ( - sessionValue && - sessionEntries.length !== 0 && - entry.startTime - lastSessionEntry.startTime < 1000 && - entry.startTime - firstSessionEntry.startTime < 5000 - ) { - sessionValue += entry.value; - sessionEntries.push(entry); - } else { - sessionValue = entry.value; - sessionEntries = [entry]; - } - - // If the current session value is larger than the current CLS value, - // update CLS and the entries contributing to it. - if (sessionValue > metric.value) { - metric.value = sessionValue; - metric.entries = sessionEntries; - if (report) { - report(); - } - } - } - }; - - const po = observe('layout-shift', entryHandler as PerformanceEntryHandler); - if (po) { - report = bindReporter(onReport, metric, reportAllChanges); - - onHidden(() => { - po.takeRecords().map(entryHandler as PerformanceEntryHandler); - report(true); - }); - } -}; diff --git a/packages/types/package.json b/packages/types/package.json index 1f755827a0f5..0053fda288c9 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/types", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Types for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/types", @@ -16,7 +16,7 @@ "access": "public" }, "devDependencies": { - "@sentry-internal/eslint-config-sdk": "6.9.0", + "@sentry-internal/eslint-config-sdk": "6.10.0-beta.3", "npm-run-all": "^4.1.2", "prettier": "1.19.0", "typescript": "3.7.5" diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 4fd973199350..bb643ea6f4cf 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/typescript", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Typescript configuration used at Sentry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/typescript", diff --git a/packages/utils/package.json b/packages/utils/package.json index cd443cbfa2f3..d6453f7381e1 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/utils", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Utilities for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/utils", @@ -16,11 +16,11 @@ "access": "public" }, "dependencies": { - "@sentry/types": "6.9.0", + "@sentry/types": "6.10.0-beta.3", "tslib": "^1.9.3" }, "devDependencies": { - "@sentry-internal/eslint-config-sdk": "6.9.0", + "@sentry-internal/eslint-config-sdk": "6.10.0-beta.3", "chai": "^4.1.2", "jest": "^24.7.1", "jsdom": "^16.2.2", diff --git a/packages/vue/package.json b/packages/vue/package.json index f4dda435b588..bca1dbb470ea 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vue", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Official Sentry SDK for Vue.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vue", @@ -16,11 +16,11 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "6.9.0", - "@sentry/core": "6.9.0", - "@sentry/minimal": "6.9.0", - "@sentry/types": "6.9.0", - "@sentry/utils": "6.9.0", + "@sentry/browser": "6.10.0-beta.3", + "@sentry/core": "6.10.0-beta.3", + "@sentry/minimal": "6.10.0-beta.3", + "@sentry/types": "6.10.0-beta.3", + "@sentry/utils": "6.10.0-beta.3", "tslib": "^1.9.3" }, "peerDependencies": { @@ -28,7 +28,7 @@ "vue-router": "3.x || 4.x" }, "devDependencies": { - "@sentry-internal/eslint-config-sdk": "6.9.0", + "@sentry-internal/eslint-config-sdk": "6.10.0-beta.3", "jest": "^24.7.1", "jsdom": "^16.2.2", "npm-run-all": "^4.1.2", diff --git a/packages/wasm/package.json b/packages/wasm/package.json index 6e871cbb8974..6b3945d3ca49 100644 --- a/packages/wasm/package.json +++ b/packages/wasm/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/wasm", - "version": "6.9.0", + "version": "6.10.0-beta.3", "description": "Support for WASM.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/wasm", @@ -16,12 +16,12 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "6.9.0", - "@sentry/types": "6.9.0", + "@sentry/browser": "6.10.0-beta.3", + "@sentry/types": "6.10.0-beta.3", "tslib": "^1.9.3" }, "devDependencies": { - "@sentry-internal/eslint-config-sdk": "6.9.0", + "@sentry-internal/eslint-config-sdk": "6.10.0-beta.3", "@types/jest-environment-puppeteer": "^4.4.0", "@types/puppeteer": "^5.4.0", "express": "^4.17.1",