Skip to content

Commit

Permalink
feat(browser): Make fetch the default transport for offline (#11209)
Browse files Browse the repository at this point in the history
Now we only have one included transport, this simplifies the vast
majority of use cases:

Before:
```ts
import { init, makeBrowserOfflineTransport, makeFetchTransport } from "@sentry/browser";

init({
  dsn: "__DSN__",
  transport: makeBrowserOfflineTransport(makeFetchTransport)
})
```

After:
```ts
import { init, makeBrowserOfflineTransport } from "@sentry/browser";

init({
  dsn: "__DSN__",
  transport: makeBrowserOfflineTransport()
})
```
  • Loading branch information
timfish committed Mar 21, 2024
1 parent e9c1845 commit 523b006
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 8 deletions.
7 changes: 4 additions & 3 deletions packages/browser/src/transports/offline.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import type { OfflineStore, OfflineTransportOptions } from '@sentry/core';
import { makeOfflineTransport } from '@sentry/core';
import type { Envelope, InternalBaseTransportOptions, Transport } from '@sentry/types';
import type { BaseTransportOptions, Envelope, Transport } from '@sentry/types';
import { parseEnvelope, serializeEnvelope } from '@sentry/utils';
import { makeFetchTransport } from './fetch';

// 'Store', 'promisifyRequest' and 'createStore' were originally copied from the 'idb-keyval' package before being
// modified and simplified: https://github.com/jakearchibald/idb-keyval
Expand Down Expand Up @@ -141,8 +142,8 @@ function makeIndexedDbOfflineTransport<T>(
/**
* Creates a transport that uses IndexedDb to store events when offline.
*/
export function makeBrowserOfflineTransport<T extends InternalBaseTransportOptions>(
createTransport: (options: T) => Transport,
export function makeBrowserOfflineTransport<T extends BaseTransportOptions>(
createTransport: (options: T) => Transport = makeFetchTransport,
): (options: T & BrowserOfflineTransportOptions) => Transport {
return makeIndexedDbOfflineTransport<T>(makeOfflineTransport(createTransport));
}
6 changes: 1 addition & 5 deletions packages/browser/src/transports/types.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
import type { BaseTransportOptions } from '@sentry/types';

import type { BrowserOfflineTransportOptions } from './offline';

type BaseTransportAndOfflineTransportOptions = BaseTransportOptions & BrowserOfflineTransportOptions;

export interface BrowserTransportOptions extends BaseTransportAndOfflineTransportOptions {
export interface BrowserTransportOptions extends BaseTransportOptions {
/** Fetch API init parameters. Used by the FetchTransport */
fetchOptions?: RequestInit;
/** Custom headers for the transport. Used by the XHRTransport and FetchTransport */
Expand Down
1 change: 1 addition & 0 deletions packages/browser/test/unit/transports/offline.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ describe('makeOfflineTransport', () => {
queuedCount += 1;
return true;
},
url: 'http://localhost',
});
const result = await transport.send(ERROR_ENVELOPE);

Expand Down

0 comments on commit 523b006

Please sign in to comment.