We turned on inlineRequires on a large production app and the startup profile barely moved. The reason: eager aggregators — modules that require dozens of others at init time, which the transform structurally cannot defer.
What inlineRequires actually does to your bundle — before/after Metro output, why Expo keeps it off by default, why default imports defeat it on stock RN, and what rnx-kit's tree shaking really changes.
A Hermes CPU profile showed our Android app spending 2.8 seconds on module resolution alone. That one finding kicked off a full investigation into inlined requires, eager aggregators, and how Expo Router handles this by default.