Skip to content

Commit 909e300

Browse files
committed
update size limit, update bundles
1 parent b8424ee commit 909e300

17 files changed

+215
-16
lines changed

.size-limit.js

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,25 @@
11
module.exports = [
22
// Main browser webpack builds
3+
{
4+
name: '@sentry/browser (incl. Tracing, Replay, Feedback) - Webpack (gzipped)',
5+
path: 'packages/browser/build/npm/esm/index.js',
6+
import: '{ init, Replay, BrowserTracing, Feedback }',
7+
gzip: true,
8+
limit: '75 KB',
9+
},
310
{
411
name: '@sentry/browser (incl. Tracing, Replay) - Webpack (gzipped)',
512
path: 'packages/browser/build/npm/esm/index.js',
613
import: '{ init, Replay, BrowserTracing }',
714
gzip: true,
8-
limit: '90 KB',
15+
limit: '75 KB',
916
},
1017
{
1118
name: '@sentry/browser (incl. Tracing, Replay) - Webpack with treeshaking flags (gzipped)',
1219
path: 'packages/browser/build/npm/esm/index.js',
1320
import: '{ init, Replay, BrowserTracing }',
1421
gzip: true,
15-
limit: '90 KB',
22+
limit: '75 KB',
1623
modifyWebpackConfig: function (config) {
1724
const webpack = require('webpack');
1825
config.plugins.push(
@@ -33,6 +40,13 @@ module.exports = [
3340
gzip: true,
3441
limit: '35 KB',
3542
},
43+
{
44+
name: '@sentry/browser (incl. Feedback) - Webpack (gzipped)',
45+
path: 'packages/browser/build/npm/esm/index.js',
46+
import: '{ init, Feedback }',
47+
gzip: true,
48+
limit: '35 KB',
49+
},
3650
{
3751
name: '@sentry/browser - Webpack (gzipped)',
3852
path: 'packages/browser/build/npm/esm/index.js',
@@ -42,11 +56,17 @@ module.exports = [
4256
},
4357

4458
// Browser CDN bundles (ES6)
59+
{
60+
name: '@sentry/browser (incl. Tracing, Replay, Feedback) - ES6 CDN Bundle (gzipped)',
61+
path: 'packages/browser/build/bundles/bundle.tracing.replay.feedback.min.js',
62+
gzip: true,
63+
limit: '75 KB',
64+
},
4565
{
4666
name: '@sentry/browser (incl. Tracing, Replay) - ES6 CDN Bundle (gzipped)',
4767
path: 'packages/browser/build/bundles/bundle.tracing.replay.min.js',
4868
gzip: true,
49-
limit: '90 KB',
69+
limit: '75 KB',
5070
},
5171
{
5272
name: '@sentry/browser (incl. Tracing) - ES6 CDN Bundle (gzipped)',
@@ -96,7 +116,7 @@ module.exports = [
96116
path: 'packages/react/build/esm/index.js',
97117
import: '{ init, BrowserTracing, Replay }',
98118
gzip: true,
99-
limit: '90 KB',
119+
limit: '75 KB',
100120
},
101121
{
102122
name: '@sentry/react - Webpack (gzipped)',

packages/browser/rollup.bundle.config.js

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ targets.forEach(jsVersion => {
2929
});
3030

3131
if (targets.includes('es6')) {
32-
// Replay bundles only available for es6
32+
// Replay/Feedback bundles only available for es6
3333
const replayBaseBundleConfig = makeBaseBundleConfig({
3434
bundleType: 'standalone',
3535
entrypoints: ['src/index.bundle.replay.ts'],
@@ -38,6 +38,14 @@ if (targets.includes('es6')) {
3838
outputFileBase: () => 'bundles/bundle.replay',
3939
});
4040

41+
const feedbackBaseBundleConfig = makeBaseBundleConfig({
42+
bundleType: 'standalone',
43+
entrypoints: ['src/index.bundle.feedback.ts'],
44+
jsVersion: 'es6',
45+
licenseTitle: '@sentry/browser & @sentry/feedback',
46+
outputFileBase: () => 'bundles/bundle.feedback',
47+
});
48+
4149
const tracingReplayBaseBundleConfig = makeBaseBundleConfig({
4250
bundleType: 'standalone',
4351
entrypoints: ['src/index.bundle.tracing.replay.ts'],
@@ -46,9 +54,19 @@ if (targets.includes('es6')) {
4654
outputFileBase: () => 'bundles/bundle.tracing.replay',
4755
});
4856

57+
const tracingReplayFeedbackBaseBundleConfig = makeBaseBundleConfig({
58+
bundleType: 'standalone',
59+
entrypoints: ['src/index.bundle.tracing.replay.feedback.ts'],
60+
jsVersion: 'es6',
61+
licenseTitle: '@sentry/browser & @sentry/tracing & @sentry/replay & @sentry/feedback',
62+
outputFileBase: () => 'bundles/bundle.tracing.replay.feedback',
63+
});
64+
4965
builds.push(
5066
...makeBundleConfigVariants(replayBaseBundleConfig),
67+
...makeBundleConfigVariants(feedbackBaseBundleConfig),
5168
...makeBundleConfigVariants(tracingReplayBaseBundleConfig),
69+
...makeBundleConfigVariants(tracingReplayFeedbackBaseBundleConfig),
5270
);
5371
}
5472

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// This is exported so the loader does not fail when switching off Replay/Tracing
2+
import { addTracingExtensions, BrowserTracing, Replay } from '@sentry-internal/integration-shims';
3+
import { Feedback } from '@sentry-internal/feedback';
4+
5+
import * as Sentry from './index.bundle.base';
6+
7+
// TODO (v8): Remove this as it was only needed for backwards compatibility
8+
Sentry.Integrations.Replay = Replay;
9+
10+
Sentry.Integrations.BrowserTracing = BrowserTracing;
11+
12+
export * from './index.bundle.base';
13+
export { BrowserTracing, addTracingExtensions, Replay, Feedback };
14+
// Note: We do not export a shim for `Span` here, as that is quite complex and would blow up the bundle

packages/browser/src/index.bundle.replay.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// This is exported so the loader does not fail when switching off Replay/Tracing
2-
import { addTracingExtensions, BrowserTracing } from '@sentry-internal/integration-shims';
2+
import { addTracingExtensions, BrowserTracing, Feedback } from '@sentry-internal/integration-shims';
33
import { Replay } from '@sentry/replay';
44

55
import * as Sentry from './index.bundle.base';
@@ -10,5 +10,5 @@ Sentry.Integrations.Replay = Replay;
1010
Sentry.Integrations.BrowserTracing = BrowserTracing;
1111

1212
export * from './index.bundle.base';
13-
export { BrowserTracing, addTracingExtensions, Replay };
13+
export { BrowserTracing, addTracingExtensions, Replay, Feedback };
1414
// Note: We do not export a shim for `Span` here, as that is quite complex and would blow up the bundle
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { Feedback } from '@sentry-internal/feedback';
2+
import { addExtensionMethods, BrowserTracing, Span } from '@sentry-internal/tracing';
3+
import { Replay } from '@sentry/replay';
4+
5+
import * as Sentry from './index.bundle.base';
6+
7+
// TODO (v8): Remove this as it was only needed for backwards compatibility
8+
// We want replay to be available under Sentry.Replay, to be consistent
9+
// with the NPM package version.
10+
Sentry.Integrations.Replay = Replay;
11+
12+
Sentry.Integrations.BrowserTracing = BrowserTracing;
13+
14+
// We are patching the global object with our hub extension methods
15+
addExtensionMethods();
16+
17+
export { Feedback, Replay, BrowserTracing, Span, addExtensionMethods };
18+
export * from './index.bundle.base';

packages/browser/src/index.bundle.tracing.replay.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { Feedback } from '@sentry-internal/feedback';
12
import { addExtensionMethods, BrowserTracing, Span } from '@sentry-internal/tracing';
23
import { Replay } from '@sentry/replay';
34

@@ -13,5 +14,5 @@ Sentry.Integrations.BrowserTracing = BrowserTracing;
1314
// We are patching the global object with our hub extension methods
1415
addExtensionMethods();
1516

16-
export { Replay, BrowserTracing, Span, addExtensionMethods };
17+
export { Feedback, Replay, BrowserTracing, Span, addExtensionMethods };
1718
export * from './index.bundle.base';

packages/browser/src/index.bundle.tracing.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
// This is exported so the loader does not fail when switching off Replay
2-
import { Replay } from '@sentry-internal/integration-shims';
1+
// This is exported so the loader does not fail when switching off Replay/Feedback
2+
import { Feedback, Replay } from '@sentry-internal/integration-shims';
33
import { addExtensionMethods, BrowserTracing, Span } from '@sentry-internal/tracing';
44

55
import * as Sentry from './index.bundle.base';
@@ -14,5 +14,5 @@ Sentry.Integrations.BrowserTracing = BrowserTracing;
1414
// We are patching the global object with our hub extension methods
1515
addExtensionMethods();
1616

17-
export { Replay, BrowserTracing, Span, addExtensionMethods };
17+
export { Feedback, Replay, BrowserTracing, Span, addExtensionMethods };
1818
export * from './index.bundle.base';

packages/browser/src/index.bundle.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// This is exported so the loader does not fail when switching off Replay/Tracing
2-
import { addTracingExtensions, BrowserTracing, Replay } from '@sentry-internal/integration-shims';
2+
import { addTracingExtensions, BrowserTracing, Feedback, Replay } from '@sentry-internal/integration-shims';
33

44
import * as Sentry from './index.bundle.base';
55

@@ -9,5 +9,5 @@ Sentry.Integrations.Replay = Replay;
99
Sentry.Integrations.BrowserTracing = BrowserTracing;
1010

1111
export * from './index.bundle.base';
12-
export { BrowserTracing, addTracingExtensions, Replay };
12+
export { BrowserTracing, addTracingExtensions, Replay, Feedback };
1313
// Note: We do not export a shim for `Span` here, as that is quite complex and would blow up the bundle
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { BrowserTracing as BrowserTracingShim, Replay as ReplayShim } from '@sentry-internal/integration-shims';
2+
import { Feedback } from '@sentry/browser';
3+
4+
import * as TracingReplayBundle from '../../src/index.bundle.feedback';
5+
6+
describe('index.bundle.feedback', () => {
7+
it('has correct exports', () => {
8+
Object.keys(TracingReplayBundle.Integrations).forEach(key => {
9+
// Skip BrowserTracing because it doesn't have a static id field.
10+
if (key === 'BrowserTracing') {
11+
return;
12+
}
13+
14+
expect((TracingReplayBundle.Integrations[key] as any).id).toStrictEqual(expect.any(String));
15+
});
16+
17+
expect(TracingReplayBundle.Integrations.Replay).toBe(ReplayShim);
18+
expect(TracingReplayBundle.Replay).toBe(ReplayShim);
19+
20+
expect(TracingReplayBundle.Integrations.BrowserTracing).toBe(BrowserTracingShim);
21+
expect(TracingReplayBundle.BrowserTracing).toBe(BrowserTracingShim);
22+
23+
expect(TracingReplayBundle.Feedback).toBe(Feedback);
24+
});
25+
);

packages/browser/test/unit/index.bundle.replay.test.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { BrowserTracing as BrowserTracingShim } from '@sentry-internal/integration-shims';
1+
import { BrowserTracing as BrowserTracingShim, Feedback as FeedbackShim} from '@sentry-internal/integration-shims';
22
import { Replay } from '@sentry/browser';
33

44
import * as TracingReplayBundle from '../../src/index.bundle.replay';
@@ -19,5 +19,7 @@ describe('index.bundle.replay', () => {
1919

2020
expect(TracingReplayBundle.Integrations.BrowserTracing).toBe(BrowserTracingShim);
2121
expect(TracingReplayBundle.BrowserTracing).toBe(BrowserTracingShim);
22+
23+
expect(TracingReplayBundle.Feedback).toBe(FeedbackShim);
2224
});
2325
});

packages/browser/test/unit/index.bundle.test.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { BrowserTracing as BrowserTracingShim, Replay as ReplayShim } from '@sentry-internal/integration-shims';
1+
import { BrowserTracing as BrowserTracingShim, Feedback as FeedbackShim, Replay as ReplayShim } from '@sentry-internal/integration-shims';
22

33
import * as TracingBundle from '../../src/index.bundle';
44

@@ -18,5 +18,7 @@ describe('index.bundle', () => {
1818

1919
expect(TracingBundle.Integrations.BrowserTracing).toBe(BrowserTracingShim);
2020
expect(TracingBundle.BrowserTracing).toBe(BrowserTracingShim);
21+
22+
expect(TracingBundle.Feedback).toBe(FeedbackShim);
2123
});
2224
});
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { BrowserTracing } from '@sentry-internal/tracing';
2+
import { Feedback, Replay } from '@sentry/browser';
3+
4+
import * as TracingReplayFeedbackBundle from '../../src/index.bundle.tracing.replay';
5+
6+
describe('index.bundle.tracing.replay.feedback', () => {
7+
it('has correct exports', () => {
8+
Object.keys(TracingReplayFeedbackBundle.Integrations).forEach(key => {
9+
// Skip BrowserTracing because it doesn't have a static id field.
10+
if (key === 'BrowserTracing') {
11+
return;
12+
}
13+
14+
expect((TracingReplayFeedbackBundle.Integrations[key] as any).id).toStrictEqual(expect.any(String));
15+
});
16+
17+
expect(TracingReplayFeedbackBundle.Integrations.Replay).toBe(Replay);
18+
expect(TracingReplayFeedbackBundle.Replay).toBe(Replay);
19+
20+
expect(TracingReplayFeedbackBundle.Integrations.BrowserTracing).toBe(BrowserTracing);
21+
expect(TracingReplayFeedbackBundle.BrowserTracing).toBe(BrowserTracing);
22+
23+
expect(TracingReplayFeedbackBundle.Feedback).toBe(Feedback);
24+
});
25+
});

packages/browser/test/unit/index.bundle.tracing.replay.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import {Feedback as FeedbackShim} from '@sentry-internal/integration-shims'
12
import { BrowserTracing } from '@sentry-internal/tracing';
23
import { Replay } from '@sentry/browser';
34

@@ -19,5 +20,7 @@ describe('index.bundle.tracing.replay', () => {
1920

2021
expect(TracingReplayBundle.Integrations.BrowserTracing).toBe(BrowserTracing);
2122
expect(TracingReplayBundle.BrowserTracing).toBe(BrowserTracing);
23+
24+
expect(TracingReplayBundle.Feedback).toBe(FeedbackShim);
2225
});
2326
});

packages/browser/test/unit/index.bundle.tracing.test.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Replay as ReplayShim } from '@sentry-internal/integration-shims';
1+
import { Feedback as FeedbackShim, Replay as ReplayShim } from '@sentry-internal/integration-shims';
22
import { BrowserTracing } from '@sentry-internal/tracing';
33

44
import * as TracingBundle from '../../src/index.bundle.tracing';
@@ -19,5 +19,7 @@ describe('index.bundle.tracing', () => {
1919

2020
expect(TracingBundle.Integrations.BrowserTracing).toBe(BrowserTracing);
2121
expect(TracingBundle.BrowserTracing).toBe(BrowserTracing);
22+
23+
expect(TracingBundle.Feedback).toBe(FeedbackShim);
2224
});
2325
});
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import type { Integration } from '@sentry/types';
2+
3+
/**
4+
* This is a shim for the Feedback integration.
5+
* It is needed in order for the CDN bundles to continue working when users add/remove feedback
6+
* from it, without changing their config. This is necessary for the loader mechanism.
7+
*/
8+
class FeedbackShim implements Integration {
9+
/**
10+
* @inheritDoc
11+
*/
12+
public static id: string = 'Feedback';
13+
14+
/**
15+
* @inheritDoc
16+
*/
17+
public name: string;
18+
19+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
20+
public constructor(_options: any) {
21+
this.name = FeedbackShim.id;
22+
23+
// eslint-disable-next-line no-console
24+
console.error('You are using new Feedback() even though this bundle does not include Feedback.');
25+
}
26+
27+
/** jsdoc */
28+
public setupOnce(): void {
29+
// noop
30+
}
31+
32+
/** jsdoc */
33+
public openDialog(): void {
34+
// noop
35+
}
36+
37+
/** jsdoc */
38+
public closeDialog(): void {
39+
// noop
40+
}
41+
42+
/** jsdoc */
43+
public attachTo(): void {
44+
// noop
45+
}
46+
47+
/** jsdoc */
48+
public createWidget(): void {
49+
// noop
50+
}
51+
52+
/** jsdoc */
53+
public removeWidget(): void {
54+
// noop
55+
}
56+
57+
/** jsdoc */
58+
public getWidget(): void {
59+
// noop
60+
}
61+
/** jsdoc */
62+
public remove(): void {
63+
// noop
64+
}
65+
}
66+
67+
export { FeedbackShim as Feedback };
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1+
export { Feedback } from './Feedback';
12
export { Replay } from './Replay';
23
export { BrowserTracing, addTracingExtensions } from './BrowserTracing';

packages/tracing-internal/tsconfig.types.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
// level.
77
"exclude": [
88
"src/index.bundle.ts",
9+
"src/index.bundle.feedback.ts",
910
"src/index.bundle.replay.ts"
1011
],
1112
"compilerOptions": {

0 commit comments

Comments
 (0)