OverviewFilesCommitsIssuesDocsReleasesPeers

favela-android / metro.config.cjs

21 lines · javascript ref:
const { getDefaultConfig } = require('@react-native/metro-config')

/**
 * ⛔ THE WORKLET BUNDLE IS NOT A METRO ASSET. It used to be — `.bundle` was added to `assetExts` and
 * app/worklet.js did `import bundle from './worklet.bundle'`. That does NOT yield the bytes: Metro
 * registers the file in its asset registry and the import evaluates to a NUMBER (the asset id), so
 * bare-kit rejected it on first launch with
 *
 *   TypeError: Source must be a string or TypedArray. Received type number (1)
 *
 * (`react-native-bare-kit/index.js:189` — source must be a string or a TypedArray.)
 *
 * The bundle now ships as an ANDROID asset instead (`android/app/src/main/assets/worklet.bundle`,
 * written there by `npm run pack:worklet`) and app/worklet.js reads its bytes at runtime. Metro never
 * sees it, which is also why nothing here needs to teach Metro about the extension.
 *
 * The seam between the two bundlers (spec/architecture.md §6.2) is therefore the Android asset, not a
 * Metro one: Metro owns the RN tree, bare-pack owns the worklet, and they meet on the filesystem.
 */
module.exports = getDefaultConfig(__dirname)