diff --git a/.changeset/khaki-spoons-laugh.md b/.changeset/khaki-spoons-laugh.md new file mode 100644 index 000000000..1fafeace4 --- /dev/null +++ b/.changeset/khaki-spoons-laugh.md @@ -0,0 +1,5 @@ +--- +'@segment/analytics-next': minor +--- + +Update cdn from babel to polyfill.io. Add Auto-polyfill support for opera mini extreme mode and old versions of opera. diff --git a/packages/browser/src/browser/standalone.ts b/packages/browser/src/browser/standalone.ts index c4f4fd4a2..e5fc90d4d 100644 --- a/packages/browser/src/browser/standalone.ts +++ b/packages/browser/src/browser/standalone.ts @@ -75,8 +75,8 @@ if (shouldPolyfill()) { // load polyfills in order to get AJS to work with old browsers const script = document.createElement('script') script.setAttribute( - 'src', - 'https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/7.7.0/polyfill.min.js' + 'src', // this should map to tsconfig lib. gated means "only load polyfill if feature does not exist" + 'https://polyfill.io/v3/polyfill.min.js?features=es5,es2015,es2016,es2017,es2018,es2019,es2020&flags=gated' ) if (document.readyState === 'loading') { diff --git a/packages/browser/src/lib/browser-polyfill.ts b/packages/browser/src/lib/browser-polyfill.ts index 2a46284db..f760d6ab9 100644 --- a/packages/browser/src/lib/browser-polyfill.ts +++ b/packages/browser/src/lib/browser-polyfill.ts @@ -2,8 +2,11 @@ export function shouldPolyfill(): boolean { const browserVersionCompatList: { [browser: string]: number } = { Firefox: 46, Edge: 13, + Opera: 50, } + const isOperaMiniExtremeMode = (window as any).operamini // compression proxy - allows for page() calls. + // Unfortunately IE doesn't follow the same pattern as other browsers, so we // need to check `isIE11` differently. // @ts-expect-error @@ -14,10 +17,8 @@ export function shouldPolyfill(): boolean { return ( isIE11 || + isOperaMiniExtremeMode || (browserVersionCompatList[browser] !== undefined && browserVersionCompatList[browser] >= parseInt(version)) ) } - -// appName = Netscape IE / Edge -// edge 13 Edge/13... same as FF