ccache isn't used by iOS builds because CCACHE_BINARY is missing #55381

Description

@Nezz

Description

Even if ccache is enabled for iOS builds, it's never actually used. The issue seems to originate from this PR:
#48257

The CCACHE_BINARY user-defined setting was added to Xcode, which the shell scripts will try to use as an env var. However, none of the user-defined settings become an env var, therefore ccache is never invoked (as of Xcode 26.2).

You can test the env vars by adding the following line to ccache-clang.sh:

env > ~/ccache.log

Steps to reproduce

  1. Install ccache brew install ccache
  2. Zero the ccache stats ccache -z
  3. Check out the minimal repro project
  4. Set up iOS dependencies cd ios && bundle install && bundle exec pod install
  5. Build iOS using npm run ios or by opening the Xcode project

Expected outcome:
ccache is used and ccache -s contains stats

Actual outcome:
ccache is never called

React Native Version

0.83.1"

Affected Platforms

Runtime - iOS, Build - MacOS

Output of npx @react-native-community/cli info

info Fetching system and libraries information...
System:
OS: macOS 26.2
CPU: (14) arm64 Apple M4 Max
Memory: 632.27 MB / 36.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 25.5.0
path: /opt/homebrew/bin/node
Yarn: Not Found
npm:
version: 11.8.0
path: /opt/homebrew/bin/npm
Watchman: Not Found
Managers:
CocoaPods:
version: 1.16.2
path: /opt/homebrew/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 25.2
- iOS 26.2
- macOS 26.2
- tvOS 26.2
- visionOS 26.2
- watchOS 26.2
Android SDK: Not Found
IDEs:
Android Studio: 2025.1 AI-251.26094.121.2513.14007798
Xcode:
version: 26.2/17C52
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.17
path: /usr/bin/javac
Ruby:
version: 4.0.1
path: /opt/homebrew/opt/ruby/bin/ruby
npmPackages:
"@react-native-community/cli":
installed: 20.0.0
wanted: 20.0.0
react:
installed: 19.2.0
wanted: 19.2.0
react-native:
installed: 0.83.1
wanted: 0.83.1
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: true
newArchEnabled: true

Stacktrace or Logs

The ccache stats don't show any information other than size because it has never been hit:
Local storage:
Cache size (GiB): 0.3 / 5.0 ( 5.80%)
Expected stats:
Cacheable calls: 0 / 1 ( 0.00%)
Hits: 0
Direct: 0
Preprocessed: 0
Misses: 0
Uncacheable calls: 1 / 1 (100.0%)

MANDATORY Reproducer

https://github.com/Nezz/react-native-repro/tree/repro/Ccache

Screenshots and Videos

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
       blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
      }
      } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
      })();
      (function(){
      try {
      var __m = "github.com";
      var __re = new RegExp('^' + "github\\.com" + '
      
      Skip to content

      ccache isn't used by iOS builds because CCACHE_BINARY is missing #55381

      Description

      @Nezz

      Description

      Even if ccache is enabled for iOS builds, it's never actually used. The issue seems to originate from this PR:
      #48257

      The CCACHE_BINARY user-defined setting was added to Xcode, which the shell scripts will try to use as an env var. However, none of the user-defined settings become an env var, therefore ccache is never invoked (as of Xcode 26.2).

      You can test the env vars by adding the following line to ccache-clang.sh:

      env > ~/ccache.log
      

      Steps to reproduce

      1. Install ccache brew install ccache
      2. Zero the ccache stats ccache -z
      3. Check out the minimal repro project
      4. Set up iOS dependencies cd ios && bundle install && bundle exec pod install
      5. Build iOS using npm run ios or by opening the Xcode project

      Expected outcome:
      ccache is used and ccache -s contains stats

      Actual outcome:
      ccache is never called

      React Native Version

      0.83.1"

      Affected Platforms

      Runtime - iOS, Build - MacOS

      Output of npx @react-native-community/cli info

      info Fetching system and libraries information...
      System:
      OS: macOS 26.2
      CPU: (14) arm64 Apple M4 Max
      Memory: 632.27 MB / 36.00 GB
      Shell:
      version: "5.9"
      path: /bin/zsh
      Binaries:
      Node:
      version: 25.5.0
      path: /opt/homebrew/bin/node
      Yarn: Not Found
      npm:
      version: 11.8.0
      path: /opt/homebrew/bin/npm
      Watchman: Not Found
      Managers:
      CocoaPods:
      version: 1.16.2
      path: /opt/homebrew/bin/pod
      SDKs:
      iOS SDK:
      Platforms:
      - DriverKit 25.2
      - iOS 26.2
      - macOS 26.2
      - tvOS 26.2
      - visionOS 26.2
      - watchOS 26.2
      Android SDK: Not Found
      IDEs:
      Android Studio: 2025.1 AI-251.26094.121.2513.14007798
      Xcode:
      version: 26.2/17C52
      path: /usr/bin/xcodebuild
      Languages:
      Java:
      version: 17.0.17
      path: /usr/bin/javac
      Ruby:
      version: 4.0.1
      path: /opt/homebrew/opt/ruby/bin/ruby
      npmPackages:
      "@react-native-community/cli":
      installed: 20.0.0
      wanted: 20.0.0
      react:
      installed: 19.2.0
      wanted: 19.2.0
      react-native:
      installed: 0.83.1
      wanted: 0.83.1
      react-native-macos: Not Found
      npmGlobalPackages:
      "*react-native*": Not Found
      Android:
      hermesEnabled: true
      newArchEnabled: true
      iOS:
      hermesEnabled: true
      newArchEnabled: true
      

      Stacktrace or Logs

      The ccache stats don't show any information other than size because it has never been hit:
      Local storage:
      Cache size (GiB): 0.3 / 5.0 ( 5.80%)
      Expected stats:
      Cacheable calls: 0 / 1 ( 0.00%)
      Hits: 0
      Direct: 0
      Preprocessed: 0
      Misses: 0
      Uncacheable calls: 1 / 1 (100.0%)
      

      MANDATORY Reproducer

      https://github.com/Nezz/react-native-repro/tree/repro/Ccache

      Screenshots and Videos

      No response

      Activity

      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

      Metadata

      Metadata

      Assignees

      No one assigned

        Type

        No type

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
          Skip to content

          ccache isn't used by iOS builds because CCACHE_BINARY is missing #55381

          Description

          @Nezz

          Description

          Even if ccache is enabled for iOS builds, it's never actually used. The issue seems to originate from this PR:
          #48257

          The CCACHE_BINARY user-defined setting was added to Xcode, which the shell scripts will try to use as an env var. However, none of the user-defined settings become an env var, therefore ccache is never invoked (as of Xcode 26.2).

          You can test the env vars by adding the following line to ccache-clang.sh:

          env > ~/ccache.log
          

          Steps to reproduce

          1. Install ccache brew install ccache
          2. Zero the ccache stats ccache -z
          3. Check out the minimal repro project
          4. Set up iOS dependencies cd ios && bundle install && bundle exec pod install
          5. Build iOS using npm run ios or by opening the Xcode project

          Expected outcome:
          ccache is used and ccache -s contains stats

          Actual outcome:
          ccache is never called

          React Native Version

          0.83.1"

          Affected Platforms

          Runtime - iOS, Build - MacOS

          Output of npx @react-native-community/cli info

          info Fetching system and libraries information...
          System:
          OS: macOS 26.2
          CPU: (14) arm64 Apple M4 Max
          Memory: 632.27 MB / 36.00 GB
          Shell:
          version: "5.9"
          path: /bin/zsh
          Binaries:
          Node:
          version: 25.5.0
          path: /opt/homebrew/bin/node
          Yarn: Not Found
          npm:
          version: 11.8.0
          path: /opt/homebrew/bin/npm
          Watchman: Not Found
          Managers:
          CocoaPods:
          version: 1.16.2
          path: /opt/homebrew/bin/pod
          SDKs:
          iOS SDK:
          Platforms:
          - DriverKit 25.2
          - iOS 26.2
          - macOS 26.2
          - tvOS 26.2
          - visionOS 26.2
          - watchOS 26.2
          Android SDK: Not Found
          IDEs:
          Android Studio: 2025.1 AI-251.26094.121.2513.14007798
          Xcode:
          version: 26.2/17C52
          path: /usr/bin/xcodebuild
          Languages:
          Java:
          version: 17.0.17
          path: /usr/bin/javac
          Ruby:
          version: 4.0.1
          path: /opt/homebrew/opt/ruby/bin/ruby
          npmPackages:
          "@react-native-community/cli":
          installed: 20.0.0
          wanted: 20.0.0
          react:
          installed: 19.2.0
          wanted: 19.2.0
          react-native:
          installed: 0.83.1
          wanted: 0.83.1
          react-native-macos: Not Found
          npmGlobalPackages:
          "*react-native*": Not Found
          Android:
          hermesEnabled: true
          newArchEnabled: true
          iOS:
          hermesEnabled: true
          newArchEnabled: true
          

          Stacktrace or Logs

          The ccache stats don't show any information other than size because it has never been hit:
          Local storage:
          Cache size (GiB): 0.3 / 5.0 ( 5.80%)
          Expected stats:
          Cacheable calls: 0 / 1 ( 0.00%)
          Hits: 0
          Direct: 0
          Preprocessed: 0
          Misses: 0
          Uncacheable calls: 1 / 1 (100.0%)
          

          MANDATORY Reproducer

          https://github.com/Nezz/react-native-repro/tree/repro/Ccache

          Screenshots and Videos

          No response

          Activity

          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

          Metadata

          Metadata

          Assignees

          No one assigned

            Type

            No type

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              ccache isn't used by iOS builds because CCACHE_BINARY is missing #55381

              Description

              @Nezz

              Description

              Even if ccache is enabled for iOS builds, it's never actually used. The issue seems to originate from this PR:
              #48257

              The CCACHE_BINARY user-defined setting was added to Xcode, which the shell scripts will try to use as an env var. However, none of the user-defined settings become an env var, therefore ccache is never invoked (as of Xcode 26.2).

              You can test the env vars by adding the following line to ccache-clang.sh:

              env > ~/ccache.log
              

              Steps to reproduce

              1. Install ccache brew install ccache
              2. Zero the ccache stats ccache -z
              3. Check out the minimal repro project
              4. Set up iOS dependencies cd ios && bundle install && bundle exec pod install
              5. Build iOS using npm run ios or by opening the Xcode project

              Expected outcome:
              ccache is used and ccache -s contains stats

              Actual outcome:
              ccache is never called

              React Native Version

              0.83.1"

              Affected Platforms

              Runtime - iOS, Build - MacOS

              Output of npx @react-native-community/cli info

              info Fetching system and libraries information...
              System:
              OS: macOS 26.2
              CPU: (14) arm64 Apple M4 Max
              Memory: 632.27 MB / 36.00 GB
              Shell:
              version: "5.9"
              path: /bin/zsh
              Binaries:
              Node:
              version: 25.5.0
              path: /opt/homebrew/bin/node
              Yarn: Not Found
              npm:
              version: 11.8.0
              path: /opt/homebrew/bin/npm
              Watchman: Not Found
              Managers:
              CocoaPods:
              version: 1.16.2
              path: /opt/homebrew/bin/pod
              SDKs:
              iOS SDK:
              Platforms:
              - DriverKit 25.2
              - iOS 26.2
              - macOS 26.2
              - tvOS 26.2
              - visionOS 26.2
              - watchOS 26.2
              Android SDK: Not Found
              IDEs:
              Android Studio: 2025.1 AI-251.26094.121.2513.14007798
              Xcode:
              version: 26.2/17C52
              path: /usr/bin/xcodebuild
              Languages:
              Java:
              version: 17.0.17
              path: /usr/bin/javac
              Ruby:
              version: 4.0.1
              path: /opt/homebrew/opt/ruby/bin/ruby
              npmPackages:
              "@react-native-community/cli":
              installed: 20.0.0
              wanted: 20.0.0
              react:
              installed: 19.2.0
              wanted: 19.2.0
              react-native:
              installed: 0.83.1
              wanted: 0.83.1
              react-native-macos: Not Found
              npmGlobalPackages:
              "*react-native*": Not Found
              Android:
              hermesEnabled: true
              newArchEnabled: true
              iOS:
              hermesEnabled: true
              newArchEnabled: true
              

              Stacktrace or Logs

              The ccache stats don't show any information other than size because it has never been hit:
              Local storage:
              Cache size (GiB): 0.3 / 5.0 ( 5.80%)
              Expected stats:
              Cacheable calls: 0 / 1 ( 0.00%)
              Hits: 0
              Direct: 0
              Preprocessed: 0
              Misses: 0
              Uncacheable calls: 1 / 1 (100.0%)
              

              MANDATORY Reproducer

              https://github.com/Nezz/react-native-repro/tree/repro/Ccache

              Screenshots and Videos

              No response

              Activity

              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

              Metadata

              Metadata

              Assignees

              No one assigned

                Type

                No type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions

                  , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
                  Skip to content

                  ccache isn't used by iOS builds because CCACHE_BINARY is missing #55381

                  Description

                  @Nezz

                  Description

                  Even if ccache is enabled for iOS builds, it's never actually used. The issue seems to originate from this PR:
                  #48257

                  The CCACHE_BINARY user-defined setting was added to Xcode, which the shell scripts will try to use as an env var. However, none of the user-defined settings become an env var, therefore ccache is never invoked (as of Xcode 26.2).

                  You can test the env vars by adding the following line to ccache-clang.sh:

                  env > ~/ccache.log
                  

                  Steps to reproduce

                  1. Install ccache brew install ccache
                  2. Zero the ccache stats ccache -z
                  3. Check out the minimal repro project
                  4. Set up iOS dependencies cd ios && bundle install && bundle exec pod install
                  5. Build iOS using npm run ios or by opening the Xcode project

                  Expected outcome:
                  ccache is used and ccache -s contains stats

                  Actual outcome:
                  ccache is never called

                  React Native Version

                  0.83.1"

                  Affected Platforms

                  Runtime - iOS, Build - MacOS

                  Output of npx @react-native-community/cli info

                  info Fetching system and libraries information...
                  System:
                  OS: macOS 26.2
                  CPU: (14) arm64 Apple M4 Max
                  Memory: 632.27 MB / 36.00 GB
                  Shell:
                  version: "5.9"
                  path: /bin/zsh
                  Binaries:
                  Node:
                  version: 25.5.0
                  path: /opt/homebrew/bin/node
                  Yarn: Not Found
                  npm:
                  version: 11.8.0
                  path: /opt/homebrew/bin/npm
                  Watchman: Not Found
                  Managers:
                  CocoaPods:
                  version: 1.16.2
                  path: /opt/homebrew/bin/pod
                  SDKs:
                  iOS SDK:
                  Platforms:
                  - DriverKit 25.2
                  - iOS 26.2
                  - macOS 26.2
                  - tvOS 26.2
                  - visionOS 26.2
                  - watchOS 26.2
                  Android SDK: Not Found
                  IDEs:
                  Android Studio: 2025.1 AI-251.26094.121.2513.14007798
                  Xcode:
                  version: 26.2/17C52
                  path: /usr/bin/xcodebuild
                  Languages:
                  Java:
                  version: 17.0.17
                  path: /usr/bin/javac
                  Ruby:
                  version: 4.0.1
                  path: /opt/homebrew/opt/ruby/bin/ruby
                  npmPackages:
                  "@react-native-community/cli":
                  installed: 20.0.0
                  wanted: 20.0.0
                  react:
                  installed: 19.2.0
                  wanted: 19.2.0
                  react-native:
                  installed: 0.83.1
                  wanted: 0.83.1
                  react-native-macos: Not Found
                  npmGlobalPackages:
                  "*react-native*": Not Found
                  Android:
                  hermesEnabled: true
                  newArchEnabled: true
                  iOS:
                  hermesEnabled: true
                  newArchEnabled: true
                  

                  Stacktrace or Logs

                  The ccache stats don't show any information other than size because it has never been hit:
                  Local storage:
                  Cache size (GiB): 0.3 / 5.0 ( 5.80%)
                  Expected stats:
                  Cacheable calls: 0 / 1 ( 0.00%)
                  Hits: 0
                  Direct: 0
                  Preprocessed: 0
                  Misses: 0
                  Uncacheable calls: 1 / 1 (100.0%)
                  

                  MANDATORY Reproducer

                  https://github.com/Nezz/react-native-repro/tree/repro/Ccache

                  Screenshots and Videos

                  No response

                  Activity

                  Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    Type

                    No type

                    Projects

                    No projects

                      Milestone

                      No milestone

                      Relationships

                      None yet

                      Development

                      No branches or pull requests

                      Issue actions

                      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                      Skip to content

                      ccache isn't used by iOS builds because CCACHE_BINARY is missing #55381

                      Description

                      @Nezz

                      Description

                      Even if ccache is enabled for iOS builds, it's never actually used. The issue seems to originate from this PR:
                      #48257

                      The CCACHE_BINARY user-defined setting was added to Xcode, which the shell scripts will try to use as an env var. However, none of the user-defined settings become an env var, therefore ccache is never invoked (as of Xcode 26.2).

                      You can test the env vars by adding the following line to ccache-clang.sh:

                      env > ~/ccache.log
                      

                      Steps to reproduce

                      1. Install ccache brew install ccache
                      2. Zero the ccache stats ccache -z
                      3. Check out the minimal repro project
                      4. Set up iOS dependencies cd ios && bundle install && bundle exec pod install
                      5. Build iOS using npm run ios or by opening the Xcode project

                      Expected outcome:
                      ccache is used and ccache -s contains stats

                      Actual outcome:
                      ccache is never called

                      React Native Version

                      0.83.1"

                      Affected Platforms

                      Runtime - iOS, Build - MacOS

                      Output of npx @react-native-community/cli info

                      info Fetching system and libraries information...
                      System:
                      OS: macOS 26.2
                      CPU: (14) arm64 Apple M4 Max
                      Memory: 632.27 MB / 36.00 GB
                      Shell:
                      version: "5.9"
                      path: /bin/zsh
                      Binaries:
                      Node:
                      version: 25.5.0
                      path: /opt/homebrew/bin/node
                      Yarn: Not Found
                      npm:
                      version: 11.8.0
                      path: /opt/homebrew/bin/npm
                      Watchman: Not Found
                      Managers:
                      CocoaPods:
                      version: 1.16.2
                      path: /opt/homebrew/bin/pod
                      SDKs:
                      iOS SDK:
                      Platforms:
                      - DriverKit 25.2
                      - iOS 26.2
                      - macOS 26.2
                      - tvOS 26.2
                      - visionOS 26.2
                      - watchOS 26.2
                      Android SDK: Not Found
                      IDEs:
                      Android Studio: 2025.1 AI-251.26094.121.2513.14007798
                      Xcode:
                      version: 26.2/17C52
                      path: /usr/bin/xcodebuild
                      Languages:
                      Java:
                      version: 17.0.17
                      path: /usr/bin/javac
                      Ruby:
                      version: 4.0.1
                      path: /opt/homebrew/opt/ruby/bin/ruby
                      npmPackages:
                      "@react-native-community/cli":
                      installed: 20.0.0
                      wanted: 20.0.0
                      react:
                      installed: 19.2.0
                      wanted: 19.2.0
                      react-native:
                      installed: 0.83.1
                      wanted: 0.83.1
                      react-native-macos: Not Found
                      npmGlobalPackages:
                      "*react-native*": Not Found
                      Android:
                      hermesEnabled: true
                      newArchEnabled: true
                      iOS:
                      hermesEnabled: true
                      newArchEnabled: true
                      

                      Stacktrace or Logs

                      The ccache stats don't show any information other than size because it has never been hit:
                      Local storage:
                      Cache size (GiB): 0.3 / 5.0 ( 5.80%)
                      Expected stats:
                      Cacheable calls: 0 / 1 ( 0.00%)
                      Hits: 0
                      Direct: 0
                      Preprocessed: 0
                      Misses: 0
                      Uncacheable calls: 1 / 1 (100.0%)
                      

                      MANDATORY Reproducer

                      https://github.com/Nezz/react-native-repro/tree/repro/Ccache

                      Screenshots and Videos

                      No response

                      Activity

                      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        Type

                        No type

                        Projects

                        No projects

                          Milestone

                          No milestone

                          Relationships

                          None yet

                          Development

                          No branches or pull requests

                          Issue actions

                          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                          Skip to content

                          ccache isn't used by iOS builds because CCACHE_BINARY is missing #55381

                          Description

                          @Nezz

                          Description

                          Even if ccache is enabled for iOS builds, it's never actually used. The issue seems to originate from this PR:
                          #48257

                          The CCACHE_BINARY user-defined setting was added to Xcode, which the shell scripts will try to use as an env var. However, none of the user-defined settings become an env var, therefore ccache is never invoked (as of Xcode 26.2).

                          You can test the env vars by adding the following line to ccache-clang.sh:

                          env > ~/ccache.log
                          

                          Steps to reproduce

                          1. Install ccache brew install ccache
                          2. Zero the ccache stats ccache -z
                          3. Check out the minimal repro project
                          4. Set up iOS dependencies cd ios && bundle install && bundle exec pod install
                          5. Build iOS using npm run ios or by opening the Xcode project

                          Expected outcome:
                          ccache is used and ccache -s contains stats

                          Actual outcome:
                          ccache is never called

                          React Native Version

                          0.83.1"

                          Affected Platforms

                          Runtime - iOS, Build - MacOS

                          Output of npx @react-native-community/cli info

                          info Fetching system and libraries information...
                          System:
                          OS: macOS 26.2
                          CPU: (14) arm64 Apple M4 Max
                          Memory: 632.27 MB / 36.00 GB
                          Shell:
                          version: "5.9"
                          path: /bin/zsh
                          Binaries:
                          Node:
                          version: 25.5.0
                          path: /opt/homebrew/bin/node
                          Yarn: Not Found
                          npm:
                          version: 11.8.0
                          path: /opt/homebrew/bin/npm
                          Watchman: Not Found
                          Managers:
                          CocoaPods:
                          version: 1.16.2
                          path: /opt/homebrew/bin/pod
                          SDKs:
                          iOS SDK:
                          Platforms:
                          - DriverKit 25.2
                          - iOS 26.2
                          - macOS 26.2
                          - tvOS 26.2
                          - visionOS 26.2
                          - watchOS 26.2
                          Android SDK: Not Found
                          IDEs:
                          Android Studio: 2025.1 AI-251.26094.121.2513.14007798
                          Xcode:
                          version: 26.2/17C52
                          path: /usr/bin/xcodebuild
                          Languages:
                          Java:
                          version: 17.0.17
                          path: /usr/bin/javac
                          Ruby:
                          version: 4.0.1
                          path: /opt/homebrew/opt/ruby/bin/ruby
                          npmPackages:
                          "@react-native-community/cli":
                          installed: 20.0.0
                          wanted: 20.0.0
                          react:
                          installed: 19.2.0
                          wanted: 19.2.0
                          react-native:
                          installed: 0.83.1
                          wanted: 0.83.1
                          react-native-macos: Not Found
                          npmGlobalPackages:
                          "*react-native*": Not Found
                          Android:
                          hermesEnabled: true
                          newArchEnabled: true
                          iOS:
                          hermesEnabled: true
                          newArchEnabled: true
                          

                          Stacktrace or Logs

                          The ccache stats don't show any information other than size because it has never been hit:
                          Local storage:
                          Cache size (GiB): 0.3 / 5.0 ( 5.80%)
                          Expected stats:
                          Cacheable calls: 0 / 1 ( 0.00%)
                          Hits: 0
                          Direct: 0
                          Preprocessed: 0
                          Misses: 0
                          Uncacheable calls: 1 / 1 (100.0%)
                          

                          MANDATORY Reproducer

                          https://github.com/Nezz/react-native-repro/tree/repro/Ccache

                          Screenshots and Videos

                          No response

                          Activity

                          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            Type

                            No type

                            Projects

                            No projects

                              Milestone

                              No milestone

                              Relationships

                              None yet

                              Development

                              No branches or pull requests

                              Issue actions

                              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                              Skip to content

                              ccache isn't used by iOS builds because CCACHE_BINARY is missing #55381

                              Description

                              @Nezz

                              Description

                              Even if ccache is enabled for iOS builds, it's never actually used. The issue seems to originate from this PR:
                              #48257

                              The CCACHE_BINARY user-defined setting was added to Xcode, which the shell scripts will try to use as an env var. However, none of the user-defined settings become an env var, therefore ccache is never invoked (as of Xcode 26.2).

                              You can test the env vars by adding the following line to ccache-clang.sh:

                              env > ~/ccache.log
                              

                              Steps to reproduce

                              1. Install ccache brew install ccache
                              2. Zero the ccache stats ccache -z
                              3. Check out the minimal repro project
                              4. Set up iOS dependencies cd ios && bundle install && bundle exec pod install
                              5. Build iOS using npm run ios or by opening the Xcode project

                              Expected outcome:
                              ccache is used and ccache -s contains stats

                              Actual outcome:
                              ccache is never called

                              React Native Version

                              0.83.1"

                              Affected Platforms

                              Runtime - iOS, Build - MacOS

                              Output of npx @react-native-community/cli info

                              info Fetching system and libraries information...
                              System:
                              OS: macOS 26.2
                              CPU: (14) arm64 Apple M4 Max
                              Memory: 632.27 MB / 36.00 GB
                              Shell:
                              version: "5.9"
                              path: /bin/zsh
                              Binaries:
                              Node:
                              version: 25.5.0
                              path: /opt/homebrew/bin/node
                              Yarn: Not Found
                              npm:
                              version: 11.8.0
                              path: /opt/homebrew/bin/npm
                              Watchman: Not Found
                              Managers:
                              CocoaPods:
                              version: 1.16.2
                              path: /opt/homebrew/bin/pod
                              SDKs:
                              iOS SDK:
                              Platforms:
                              - DriverKit 25.2
                              - iOS 26.2
                              - macOS 26.2
                              - tvOS 26.2
                              - visionOS 26.2
                              - watchOS 26.2
                              Android SDK: Not Found
                              IDEs:
                              Android Studio: 2025.1 AI-251.26094.121.2513.14007798
                              Xcode:
                              version: 26.2/17C52
                              path: /usr/bin/xcodebuild
                              Languages:
                              Java:
                              version: 17.0.17
                              path: /usr/bin/javac
                              Ruby:
                              version: 4.0.1
                              path: /opt/homebrew/opt/ruby/bin/ruby
                              npmPackages:
                              "@react-native-community/cli":
                              installed: 20.0.0
                              wanted: 20.0.0
                              react:
                              installed: 19.2.0
                              wanted: 19.2.0
                              react-native:
                              installed: 0.83.1
                              wanted: 0.83.1
                              react-native-macos: Not Found
                              npmGlobalPackages:
                              "*react-native*": Not Found
                              Android:
                              hermesEnabled: true
                              newArchEnabled: true
                              iOS:
                              hermesEnabled: true
                              newArchEnabled: true
                              

                              Stacktrace or Logs

                              The ccache stats don't show any information other than size because it has never been hit:
                              Local storage:
                              Cache size (GiB): 0.3 / 5.0 ( 5.80%)
                              Expected stats:
                              Cacheable calls: 0 / 1 ( 0.00%)
                              Hits: 0
                              Direct: 0
                              Preprocessed: 0
                              Misses: 0
                              Uncacheable calls: 1 / 1 (100.0%)
                              

                              MANDATORY Reproducer

                              https://github.com/Nezz/react-native-repro/tree/repro/Ccache

                              Screenshots and Videos

                              No response

                              Activity

                              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Type

                                No type

                                Projects

                                No projects

                                  Milestone

                                  No milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions