Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions packages/analytics-browser/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

## [2.43.1-SR-4497-custom-transport-hooks.0](https://github.com/amplitude/Amplitude-TypeScript/compare/@amplitude/analytics-browser@2.43.0...@amplitude/analytics-browser@2.43.1-SR-4497-custom-transport-hooks.0) (2026-06-09)

**Note:** Version bump only for package @amplitude/analytics-browser





# [2.43.0](https://github.com/amplitude/Amplitude-TypeScript/compare/@amplitude/analytics-browser@2.42.5...@amplitude/analytics-browser@2.43.0) (2026-06-05)


Expand Down
2 changes: 1 addition & 1 deletion packages/analytics-browser/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ This SDK is also available through CDN. Copy the script loader below and paste b
<!-- README_SNIPPET_BLOCK -->
```html
<script type="text/javascript">
!function(){"use strict";!function(e,t){var r=e.amplitude||{_q:[],_iq:{}};if(r.invoked)e.console&&console.error&&console.error("Amplitude snippet has been loaded.");else{var n=function(e,t){e.prototype[t]=function(){return this._q.push({name:t,args:Array.prototype.slice.call(arguments,0)}),this}},s=function(e,t,r){return function(n){e._q.push({name:t,args:Array.prototype.slice.call(r,0),resolve:n})}},o=function(e,t,r){e[t]=function(){if(r)return{promise:new Promise(s(e,t,Array.prototype.slice.call(arguments)))};!function(e,t,r){e._q.push({name:t,args:Array.prototype.slice.call(r,0)})}(e,t,Array.prototype.slice.call(arguments))}},i=function(e){for(var t=0;t<y.length;t++)o(e,y[t],!1);for(var r=0;r<g.length;r++)o(e,g[r],!0)};r.invoked=!0;var c=t.createElement("script");c.type="text/javascript",c.integrity="sha384-WhHYGd9Ls3uobdx1SdciXqGhvP64TxZQTKlmT3USH2RJXo/3NGxdsZ0w+9IbzP66",c.crossOrigin="anonymous",c.async=!0,c.src="https://cdn.amplitude.com/libs/analytics-browser-2.43.0-min.js.gz",c.onload=function(){e.amplitude.runQueuedFunctions||console.log("[Amplitude] Error: could not load SDK")};var a=t.getElementsByTagName("script")[0];a.parentNode.insertBefore(c,a);for(var u=function(){return this._q=[],this},l=["add","append","clearAll","prepend","set","setOnce","unset","preInsert","postInsert","remove","getUserProperties"],p=0;p<l.length;p++)n(u,l[p]);r.Identify=u;for(var d=function(){return this._q=[],this},f=["getEventProperties","setProductId","setQuantity","setPrice","setRevenue","setRevenueType","setReceipt","setReceiptSig","setCurrency","setEventProperties"],v=0;v<f.length;v++)n(d,f[v]);r.Revenue=d;var y=["getDeviceId","setDeviceId","getSessionId","setSessionId","getUserId","setUserId","setOptOut","setTransport","reset","extendSession"],g=["init","add","remove","track","logEvent","identify","groupIdentify","setGroup","revenue","flush"];i(r),r.createInstance=function(e){return r._iq[e]={_q:[]},i(r._iq[e]),r._iq[e]},e.amplitude=r}}(window,document)}();
!function(){"use strict";!function(e,t){var r=e.amplitude||{_q:[],_iq:{}};if(r.invoked)e.console&&console.error&&console.error("Amplitude snippet has been loaded.");else{var n=function(e,t){e.prototype[t]=function(){return this._q.push({name:t,args:Array.prototype.slice.call(arguments,0)}),this}},s=function(e,t,r){return function(n){e._q.push({name:t,args:Array.prototype.slice.call(r,0),resolve:n})}},o=function(e,t,r){e[t]=function(){if(r)return{promise:new Promise(s(e,t,Array.prototype.slice.call(arguments)))};!function(e,t,r){e._q.push({name:t,args:Array.prototype.slice.call(r,0)})}(e,t,Array.prototype.slice.call(arguments))}},i=function(e){for(var t=0;t<y.length;t++)o(e,y[t],!1);for(var r=0;r<g.length;r++)o(e,g[r],!0)};r.invoked=!0;var c=t.createElement("script");c.type="text/javascript",c.integrity="sha384-Gf1GelKwbzPhAITvs9YQgeDlCdi7GJJzNoV1HatGXZhyxD3oKHtz0wdLcICbtAjU",c.crossOrigin="anonymous",c.async=!0,c.src="https://cdn.amplitude.com/libs/analytics-browser-2.43.1-SR-4497-custom-transport-hooks.0-min.js.gz",c.onload=function(){e.amplitude.runQueuedFunctions||console.log("[Amplitude] Error: could not load SDK")};var a=t.getElementsByTagName("script")[0];a.parentNode.insertBefore(c,a);for(var u=function(){return this._q=[],this},l=["add","append","clearAll","prepend","set","setOnce","unset","preInsert","postInsert","remove","getUserProperties"],p=0;p<l.length;p++)n(u,l[p]);r.Identify=u;for(var d=function(){return this._q=[],this},f=["getEventProperties","setProductId","setQuantity","setPrice","setRevenue","setRevenueType","setReceipt","setReceiptSig","setCurrency","setEventProperties"],v=0;v<f.length;v++)n(d,f[v]);r.Revenue=d;var y=["getDeviceId","setDeviceId","getSessionId","setSessionId","getUserId","setUserId","setOptOut","setTransport","reset","extendSession"],g=["init","add","remove","track","logEvent","identify","groupIdentify","setGroup","revenue","flush"];i(r),r.createInstance=function(e){return r._iq[e]={_q:[]},i(r._iq[e]),r._iq[e]},e.amplitude=r}}(window,document)}();

amplitude.init("<YOUR_API_KEY>");
</script>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,10 @@
s.parentNode.insertBefore(autoTrackingPluginScript, s);
var as = document.createElement('script');
as.type = 'text/javascript';
as.integrity = 'sha384-WhHYGd9Ls3uobdx1SdciXqGhvP64TxZQTKlmT3USH2RJXo/3NGxdsZ0w+9IbzP66';
as.integrity = 'sha384-Gf1GelKwbzPhAITvs9YQgeDlCdi7GJJzNoV1HatGXZhyxD3oKHtz0wdLcICbtAjU';
as.crossOrigin = 'anonymous';
as.async = false;
as.src = 'https://cdn.amplitude.com/libs/analytics-browser-2.43.0-min.js.gz';
as.src = 'https://cdn.amplitude.com/libs/analytics-browser-2.43.1-SR-4497-custom-transport-hooks.0-min.js.gz';
as.onload = function () {
if (!window.amplitude.runQueuedFunctions) {
console.log('[Amplitude] Error: could not load SDK');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,10 @@
amplitude.invoked = true;
var as = document.createElement('script');
as.type = 'text/javascript';
as.integrity = 'sha384-5Yjh4ozGLdtXGK6BEfp4kfEPOrIcC4Ey5rqDb5rRq5mFgQ0RLWtUFNzbaWpddvHg';
as.integrity = 'sha384-LbxddfOBzP1yX+4LLhdczuebyilHlYa74Q6e9GuTi1CyqAGvfZZNo20rIuSqbYMa';
as.crossOrigin = 'anonymous';
as.async = true;
as.src = 'https://cdn.amplitude.com/libs/analytics-browser-gtm-2.43.0-min.js.gz';
as.src = 'https://cdn.amplitude.com/libs/analytics-browser-gtm-2.43.1-SR-4497-custom-transport-hooks.0-min.js.gz';
as.onload = function () {
if (!window.amplitudeGTM.runQueuedFunctions) {
console.log('[Amplitude] Error: could not load SDK');
Expand Down
4 changes: 2 additions & 2 deletions packages/analytics-browser/generated/amplitude-snippet.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,10 @@
amplitude.invoked = true;
var as = document.createElement('script');
as.type = 'text/javascript';
as.integrity = 'sha384-WhHYGd9Ls3uobdx1SdciXqGhvP64TxZQTKlmT3USH2RJXo/3NGxdsZ0w+9IbzP66';
as.integrity = 'sha384-Gf1GelKwbzPhAITvs9YQgeDlCdi7GJJzNoV1HatGXZhyxD3oKHtz0wdLcICbtAjU';
as.crossOrigin = 'anonymous';
as.async = true;
as.src = 'https://cdn.amplitude.com/libs/analytics-browser-2.43.0-min.js.gz';
as.src = 'https://cdn.amplitude.com/libs/analytics-browser-2.43.1-SR-4497-custom-transport-hooks.0-min.js.gz';
as.onload = function () {
if (!window.amplitude.runQueuedFunctions) {
console.log('[Amplitude] Error: could not load SDK');
Expand Down
2 changes: 1 addition & 1 deletion packages/analytics-browser/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@amplitude/analytics-browser",
"version": "2.43.0",
"version": "2.43.1-SR-4497-custom-transport-hooks.0",
"description": "Official Amplitude SDK for Web",
"keywords": [
"analytics",
Expand Down
2 changes: 1 addition & 1 deletion packages/analytics-browser/src/version.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export const VERSION = '2.43.0';
export const VERSION = '2.43.1-SR-4497-custom-transport-hooks.0';
8 changes: 8 additions & 0 deletions packages/analytics-client-common/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

## [2.4.50-SR-4497-custom-transport-hooks.0](https://github.com/amplitude/Amplitude-TypeScript/compare/@amplitude/analytics-client-common@2.4.49...@amplitude/analytics-client-common@2.4.50-SR-4497-custom-transport-hooks.0) (2026-06-09)

**Note:** Version bump only for package @amplitude/analytics-client-common





## [2.4.49](https://github.com/amplitude/Amplitude-TypeScript/compare/@amplitude/analytics-client-common@2.4.48...@amplitude/analytics-client-common@2.4.49) (2026-06-05)

**Note:** Version bump only for package @amplitude/analytics-client-common
Expand Down
2 changes: 1 addition & 1 deletion packages/analytics-client-common/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@amplitude/analytics-client-common",
"version": "2.4.49",
"version": "2.4.50-SR-4497-custom-transport-hooks.0",
"description": "",
"author": "Amplitude Inc",
"homepage": "https://github.com/amplitude/Amplitude-TypeScript",
Expand Down
11 changes: 11 additions & 0 deletions packages/analytics-core/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,17 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

# [2.50.0-SR-4497-custom-transport-hooks.0](https://github.com/amplitude/Amplitude-TypeScript/compare/@amplitude/analytics-core@2.49.0...@amplitude/analytics-core@2.50.0-SR-4497-custom-transport-hooks.0) (2026-06-09)


### Features

* **session-replay-browser:** custom transport hooks for authenticated proxies (SR-4497) ([ecb7041](https://github.com/amplitude/Amplitude-TypeScript/commit/ecb704128f6861a4e2b77c0baf0f0de742ccb328))





# [2.49.0](https://github.com/amplitude/Amplitude-TypeScript/compare/@amplitude/analytics-core@2.48.2...@amplitude/analytics-core@2.49.0) (2026-06-05)


Expand Down
2 changes: 1 addition & 1 deletion packages/analytics-core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@amplitude/analytics-core",
"version": "2.49.0",
"version": "2.50.0-SR-4497-custom-transport-hooks.0",
"description": "",
"author": "Amplitude Inc",
"homepage": "https://github.com/amplitude/Amplitude-TypeScript",
Expand Down
9 changes: 8 additions & 1 deletion packages/analytics-core/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,14 @@ export {
MIN_GZIP_UPLOAD_BODY_SIZE_BYTES,
} from './transports/gzip';

export { RemoteConfigClient, IRemoteConfigClient, RemoteConfig, Source } from './remote-config/remote-config';
export {
RemoteConfigClient,
IRemoteConfigClient,
RemoteConfig,
Source,
RemoteConfigFetchRequest,
RemoteConfigCustomFetch,
} from './remote-config/remote-config';

export { LogLevel } from './types/loglevel';
export { AMPLITUDE_PREFIX, STORAGE_PREFIX } from './types/constants';
Expand Down
52 changes: 43 additions & 9 deletions packages/analytics-core/src/remote-config/remote-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,26 @@ export type DeliveryMode = 'all' | { timeout: number };
*/
export type Source = 'cache' | 'remote';

/**
* The fully-formed remote-config request handed to a custom transport. Consumers that need to
* own the network call (e.g. to attach auth headers and route through a proxy) supply a
* {@link RemoteConfigCustomFetch} via the client constructor; the client builds this request
* (resolved URL, headers, abort signal) and the callback executes it.
*/
export interface RemoteConfigFetchRequest {
url: string;
method: 'GET';
headers: Record<string, string>;
/** Abort signal the client uses to enforce the fetch timeout; honor it in your fetch call. */
signal?: AbortSignal;
}

/**
* Custom transport for the remote-config fetch. Must return a `Response`. Retry/backoff stays
* in the client around this callback, so it is invoked once per attempt.
*/
export type RemoteConfigCustomFetch = (request: RemoteConfigFetchRequest) => Promise<Response>;

export const US_SERVER_URL = 'https://sr-client-cfg.amplitude.com/config';
export const EU_SERVER_URL = 'https://sr-client-cfg.eu.amplitude.com/config';
export const DEFAULT_MAX_RETRIES = 3;
Expand Down Expand Up @@ -128,12 +148,22 @@ export class RemoteConfigClient implements IRemoteConfigClient {
fetchPromise: Promise<RemoteConfigInfo> | null = null;
// Used to skip periodic updateConfigs calls when API key is invalid.
isLastFetchInvalidApiKey = false;

constructor(apiKey: string, logger: ILogger, serverZone: ServerZoneType = 'US', serverUrl?: string) {
// Optional custom transport. When provided, it replaces the internal fetch for the config GET
// (e.g. to attach auth and route through a proxy). Retry stays in the client around it.
readonly customFetch?: RemoteConfigCustomFetch;

constructor(
apiKey: string,
logger: ILogger,
serverZone: ServerZoneType = 'US',
serverUrl?: string,
customFetch?: RemoteConfigCustomFetch,
) {
this.apiKey = apiKey;
this.serverUrl = serverUrl || (serverZone === 'US' ? US_SERVER_URL : EU_SERVER_URL);
this.logger = logger;
this.storage = new RemoteConfigLocalStorage(apiKey, logger);
this.customFetch = customFetch;
}

subscribe(key: string | undefined, deliveryMode: DeliveryMode, callback: RemoteConfigCallback): string {
Expand Down Expand Up @@ -344,13 +374,17 @@ export class RemoteConfigClient implements IRemoteConfigClient {
const timeoutId = setTimeout(() => abortController.abort(), timeout);

try {
const res = await fetch(this.getUrlParams(), {
method: 'GET',
headers: {
Accept: '*/*',
},
signal: abortController.signal,
});
const url = this.getUrlParams();
const headers: Record<string, string> = { Accept: '*/*' };
// When a custom transport is configured, hand it the fully-formed request and let it own
// the network call; otherwise use the built-in fetch. Retry/response handling is identical.
const res = this.customFetch
? await this.customFetch({ url, method: 'GET', headers, signal: abortController.signal })
: await fetch(url, {
method: 'GET',
headers,
signal: abortController.signal,
});

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Config fetch requires ok property

Medium Severity

RemoteConfigClient treats custom handleFetchConfig responses as failures when res.ok is missing, even if status is 2xx. Event uploads use status only, so the same Response-like adapter can succeed for handleSendEvents while remote config never applies and capture may stay on defaults.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit d77ed33. Configure here.


// Handle unsuccessful fetch
if (!res.ok) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1112,6 +1112,52 @@ describe('RemoteConfigClient', () => {
});
});

describe('customFetch (custom transport)', () => {
test('invokes the custom transport with a fully-formed request instead of fetch', async () => {
global.fetch = jest.fn();
const customFetch = jest.fn(
(_request: { url: string; method: string; headers: Record<string, string>; signal?: AbortSignal }) =>
Promise.resolve({ ok: true, json: () => Promise.resolve({ key: 'value' }) } as Response),
);
const customClient = new RemoteConfigClient(mockApiKey, mockLogger, 'US', undefined, customFetch);

const result = await customClient.fetch();

expect(global.fetch).not.toHaveBeenCalled();
expect(customFetch).toHaveBeenCalledTimes(1);
const request = customFetch.mock.calls[0][0];
expect(request.method).toBe('GET');
expect(request.url).toContain('/config/test-api-key');
expect(request.headers.Accept).toBe('*/*');
expect(request.signal).toBeInstanceOf(AbortSignal);
expect(result.remoteConfig).toEqual({ key: 'value' });
});

test('falls back to the built-in fetch when no custom transport is provided', async () => {
global.fetch = jest.fn(() =>
Promise.resolve({ ok: true, json: () => Promise.resolve({ key: 'value' }) } as Response),
);
const result = await client.fetch();

expect(global.fetch).toHaveBeenCalledTimes(1);
expect(result.remoteConfig).toEqual({ key: 'value' });
});

test('retry stays in the client around the custom transport (5xx then 200)', async () => {
global.fetch = jest.fn();
const customFetch = jest
.fn()
.mockResolvedValueOnce({ ok: false, status: 500, text: () => Promise.resolve('err') } as Response)
.mockResolvedValueOnce({ ok: true, json: () => Promise.resolve({ key: 'value' }) } as Response);
const customClient = new RemoteConfigClient(mockApiKey, mockLogger, 'US', undefined, customFetch);

const result = await customClient.fetch(2);

expect(customFetch).toHaveBeenCalledTimes(2);
expect(result.remoteConfig).toEqual({ key: 'value' });
});
});

describe('getUrlParams', () => {
test('should generate correct US URL', () => {
const expectedUrl = `https://sr-client-cfg.amplitude.com/config/test-api-key?config_group=browser`;
Expand Down
8 changes: 8 additions & 0 deletions packages/analytics-node/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

## [1.5.60-SR-4497-custom-transport-hooks.0](https://github.com/amplitude/Amplitude-TypeScript/compare/@amplitude/analytics-node@1.5.59...@amplitude/analytics-node@1.5.60-SR-4497-custom-transport-hooks.0) (2026-06-09)

**Note:** Version bump only for package @amplitude/analytics-node





## [1.5.59](https://github.com/amplitude/Amplitude-TypeScript/compare/@amplitude/analytics-node@1.5.58...@amplitude/analytics-node@1.5.59) (2026-06-05)

**Note:** Version bump only for package @amplitude/analytics-node
Expand Down
2 changes: 1 addition & 1 deletion packages/analytics-node/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@amplitude/analytics-node",
"version": "1.5.59",
"version": "1.5.60-SR-4497-custom-transport-hooks.0",
"description": "Official Amplitude SDK for NodeJS",
"author": "Amplitude Inc",
"homepage": "https://github.com/amplitude/Amplitude-TypeScript",
Expand Down
2 changes: 1 addition & 1 deletion packages/analytics-node/src/version.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export const VERSION = '1.5.59';
export const VERSION = '1.5.60-SR-4497-custom-transport-hooks.0';
8 changes: 8 additions & 0 deletions packages/analytics-react-native/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

## [1.5.57-SR-4497-custom-transport-hooks.0](https://github.com/amplitude/Amplitude-TypeScript/compare/@amplitude/analytics-react-native@1.5.56...@amplitude/analytics-react-native@1.5.57-SR-4497-custom-transport-hooks.0) (2026-06-09)

**Note:** Version bump only for package @amplitude/analytics-react-native





## [1.5.56](https://github.com/amplitude/Amplitude-TypeScript/compare/@amplitude/analytics-react-native@1.5.55...@amplitude/analytics-react-native@1.5.56) (2026-06-05)

**Note:** Version bump only for package @amplitude/analytics-react-native
Expand Down
2 changes: 1 addition & 1 deletion packages/analytics-react-native/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@amplitude/analytics-react-native",
"version": "1.5.56",
"version": "1.5.57-SR-4497-custom-transport-hooks.0",
"description": "Official React Native SDK",
"keywords": [
"analytics",
Expand Down
2 changes: 1 addition & 1 deletion packages/analytics-react-native/src/version.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export const VERSION = '1.5.56';
export const VERSION = '1.5.57-SR-4497-custom-transport-hooks.0';
8 changes: 8 additions & 0 deletions packages/plugin-autocapture-browser/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

## [1.27.4-SR-4497-custom-transport-hooks.0](https://github.com/amplitude/Amplitude-TypeScript/compare/@amplitude/plugin-autocapture-browser@1.27.3...@amplitude/plugin-autocapture-browser@1.27.4-SR-4497-custom-transport-hooks.0) (2026-06-09)

**Note:** Version bump only for package @amplitude/plugin-autocapture-browser





## [1.27.3](https://github.com/amplitude/Amplitude-TypeScript/compare/@amplitude/plugin-autocapture-browser@1.27.2...@amplitude/plugin-autocapture-browser@1.27.3) (2026-06-05)

**Note:** Version bump only for package @amplitude/plugin-autocapture-browser
Expand Down
2 changes: 1 addition & 1 deletion packages/plugin-autocapture-browser/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@amplitude/plugin-autocapture-browser",
"version": "1.27.3",
"version": "1.27.4-SR-4497-custom-transport-hooks.0",
"description": "",
"author": "Amplitude Inc",
"homepage": "https://github.com/amplitude/Amplitude-TypeScript",
Expand Down
2 changes: 1 addition & 1 deletion packages/plugin-autocapture-browser/src/version.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export const VERSION = '1.27.3';
export const VERSION = '1.27.4-SR-4497-custom-transport-hooks.0';
8 changes: 8 additions & 0 deletions packages/plugin-custom-enrichment-browser/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

## [0.1.11-SR-4497-custom-transport-hooks.0](https://github.com/amplitude/Amplitude-TypeScript/compare/@amplitude/plugin-custom-enrichment-browser@0.1.10...@amplitude/plugin-custom-enrichment-browser@0.1.11-SR-4497-custom-transport-hooks.0) (2026-06-09)

**Note:** Version bump only for package @amplitude/plugin-custom-enrichment-browser





## [0.1.10](https://github.com/amplitude/Amplitude-TypeScript/compare/@amplitude/plugin-custom-enrichment-browser@0.1.9...@amplitude/plugin-custom-enrichment-browser@0.1.10) (2026-06-05)

**Note:** Version bump only for package @amplitude/plugin-custom-enrichment-browser
Expand Down
2 changes: 1 addition & 1 deletion packages/plugin-custom-enrichment-browser/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@amplitude/plugin-custom-enrichment-browser",
"version": "0.1.10",
"version": "0.1.11-SR-4497-custom-transport-hooks.0",
"description": "",
"author": "Amplitude Inc",
"homepage": "https://github.com/amplitude/Amplitude-TypeScript",
Expand Down
Loading