Browser polyfill for React Native
yarn add @expo/browser-polyfillImport the library into your JavaScript file:
import '@expo/browser-polyfill';DOM is provided with very low support, these are used for libs like pixi.js that validate type.
class Node class Element class Document class HTMLImageElement class Image class ImageBitmap class HTMLVideoElement class Video class HTMLCanvasElement class CanvasImage has support for loading callbacks, however the loaded uri must be passed to the src already.
const image = new Image(); image.src = ''; image.onload = () => { const { src, width, height } = image; }; image.addEventListener('loading', () => {}); image.addEventListener('error', () => {});const element = document.createElement('div'); const fakeContext = element.getContext('');element.clientWidth; element.clientHeight; element.innerWidth; element.innerHeight; element.offsetWidth; element.offsetHeight;element.tagName; element.addEventListener; element.removeEventListener; element.setAttributeNS; element.createElementNS;node.ownerDocument; node.className; node.appendChild; node.insertBefore; node.removeChild; node.setAttributeNS; node.getBoundingClientRect;Some external node.js polyfills are added as well.
global.TextEncoder global.TextDecoder window.DOMParser console.time(label); console.timeEnd(label); console.count(label); For debugging base64 image transformations toggle:
global.__debug_browser_polyfill_image = true;By default global.__debug_browser_polyfill_image is false.