Polyfills
Required polyfills for Expo runtime compatibility
Polyfills
Several functions that are internally used by the AI SDK might not available in the Expo runtime depending on your configuration and the target platform.
First, install the following packages:
pnpm add @ungap/structured-clone @stardazed/streams-text-encodingThen create a new file in the root of your project with the following polyfills:
import { Platform } from 'react-native';
import structuredClone from '@ungap/structured-clone';
if (Platform.OS !== 'web') {
(async () => {
const { polyfillGlobal } = await import(
'react-native/Libraries/Utilities/PolyfillFunctions'
);
const { TextEncoderStream, TextDecoderStream } = await import(
'@stardazed/streams-text-encoding'
);
if (!('structuredClone' in global)) {
polyfillGlobal('structuredClone', () => structuredClone);
}
polyfillGlobal('TextEncoderStream', () => TextEncoderStream);
polyfillGlobal('TextDecoderStream', () => TextDecoderStream);
})();
}
export {};Finally, import the polyfills in your root _layout.tsx:
import '@/polyfills';