From f76b3c89b34dfee2f2fc732d99e2e913f161c717 Mon Sep 17 00:00:00 2001 From: mrleo1nid <43583385+mrleo1nid@users.noreply.github.com> Date: Tue, 20 Oct 2026 02:09:32 +0300 Subject: [PATCH] fix(mobile): hide Gradle outputs inside node_modules from Metro Gradle builds native modules in place, under node_modules//android/ {build,.cxx,.gradle}. The root node_modules is a watch folder, so Metro still crawled and hashed those artifacts and the release bundle step stalled. Co-Authored-By: Claude Opus 5.5 --- apps/mobile/metro.config.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/mobile/metro.config.js b/apps/mobile/metro.config.js index 6a3225d..3d778bd 100644 --- a/apps/mobile/metro.config.js +++ b/apps/mobile/metro.config.js @@ -9,7 +9,10 @@ const config = getDefaultConfig(__dirname); // в release-сборке Metro на них «висит». В JS-бандл из этих папок ничего не попадает. const escape = (p) => p.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); const nativeDirs = ['android', 'ios'].map((d) => new RegExp(`^${escape(path.join(__dirname, d) + path.sep)}.*`)); +// Gradle собирает нативные модули прямо в node_modules/<пакет>/android/{build,.cxx,.gradle}, +// а корневой node_modules тоже в watchFolders. +const nativeBuildOutputs = /[\\/]android[\\/](build|\.cxx|\.gradle)[\\/].*/; -config.resolver.blockList = [...[].concat(config.resolver.blockList ?? []), ...nativeDirs]; +config.resolver.blockList = [...[].concat(config.resolver.blockList ?? []), ...nativeDirs, nativeBuildOutputs]; module.exports = config;