/** @type {import('@expo/fingerprint').Config} */ const config = { /* * Expo 58 changed the default to 'balanced', which hashes autolinked native * modules and config plugins by their package.json version and ignores * eas.json and app version changes. Stick with the historical 'strict' * behaviour so any change to native sources changes the fingerprint. */ preset: 'strict', /* * The worklets Babel plugin writes generated JS into this directory whenever * Metro bundles, which would otherwise change the fingerprint of any checkout * that has run Metro and make EAS build cache lookups miss. Only `*.js` is * ignored so the shipped `dummy.md` keeps clean-install hashes unchanged. */ ignorePaths: [ '**/node_modules/react-native-worklets/.worklets/*.js', /* * app.config.js loads the share platform catalog, which would make every * catalog edit look native. The only native parts, its iOS schemes and * Android packages, are already hashed as part of the resolved Expo config, * so ignoring the file still catches the changes that need a native build. */ 'src/components/ShareDialog/catalog.ts', ], /* * The nano icon fonts are linked into the native binary, but the fingerprint * only sees the plugin config, not the icons. Without this, adding or * changing an icon would ship as an OTA update to binaries whose font lacks * the new glyphs, and those icons would render blank. */ extraSources: ['ui', 'brands', 'community'].map(lane => ({ type: 'file', filePath: `assets/nano-icons/nanoicons/icons-${lane}.ttf`, reasons: ['react-native-nano-icons font'], })), } module.exports = config