chore: Extract logic to compute codegen TS extendsProps and props in getProps function - #36889

Closed
gabrieldonadel wants to merge 1 commit into
react:mainfrom
gabrieldonadel:chore/codegen-get-props
Closed

chore: Extract logic to compute codegen TS extendsProps and props in getProps function#36889
gabrieldonadel wants to merge 1 commit into
react:mainfrom
gabrieldonadel:chore/codegen-get-props

Conversation

@gabrieldonadel

Copy link
Copy Markdown
Collaborator

Summary:

[Codegen 103] This PR extracts the logic to compute the extendsProps and props properties in TypeScript Codegen in a getProps() function as requested on #34872

Changelog:

[Internal] [Added] - Extract logic to compute codegen TS extendsProps and props properties in a single getProps function

Test Plan:

Run yarn jest react-native-codegen and ensure CI is green

@facebook-github-botfacebook-github-bot added CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Expo Partner: Expo Partner labels Apr 13, 2023
@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from df56c20 to b8a6e10CompareApril 13, 2023 03:38
@analysis-bot

Copy link
Copy Markdown
PlatformEngineArchSize (bytes)Diff
androidhermesarm64-v8a8,604,788+0
androidhermesarmeabi-v7a7,918,817+0
androidhermesx869,090,833+0
androidhermesx86_648,945,848+0
androidjscarm64-v8a9,174,204+0
androidjscarmeabi-v7a8,365,854+0
androidjscx869,231,847+0
androidjscx86_649,490,545+0

Base commit: 9f24df0
Branch: main

@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from b8a6e10 to 75e006eCompareApril 13, 2023 04:03
@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from 75e006e to 0a6e78cCompareApril 13, 2023 04:07
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi merged this pull request in e962d43.

meta-codesyncBot pushed a commit that referenced this pull request Jun 29, 2026
Summary:
## Summary
The `runtime_commit_artifacts` workflow has been failing in the "move
relevant files for react in fbsource into compiled-rn" step with:
```
mv: cannot stat 'build/facebook-react-native/VERSION_NATIVE_FB': No such file or directory
```
`VERSION_NATIVE_FB` was only written in `processExperimental`, *inside*
`build/facebook-react-native/`. That directory is not part of the
allowlist in the cleanup loop at the end of `processExperimental`, so
the experimental workers wrote the version file and then immediately
deleted it.
This was masked until #36859. The cleanup loop previously used `rm -rm`
(an invalid flag), so `rm` errored out and deleted nothing — the loop
was effectively a no-op. Once it was changed to `fs.rmSync`, the
deletion actually took effect. After CI merges the per-worker artifacts,
`facebook-react-native/*/cjs` still survives (the **stable** workers
produce it and `processStable` has no cleanup loop), but
`VERSION_NATIVE_FB` is gone because stable never wrote it.
## Fix
The `build/facebook-react-native` artifacts are identical across release
channels:
- RN packages resolve to the generic `.fb.js` entry fork (no
`.modern.fb.js` / `.classic.fb.js` split).
- The `native-fb` feature-flag forks don't reference `__EXPERIMENTAL__`.
- The version string is identical
(`<ReactVersion>-native-fb-<sha>-<date>`).
So this writes `VERSION_NATIVE_FB` from `processStable`, where
`facebook-react-native` is preserved, and drops the now-dead write from
`processExperimental`.
## Test Plan
Verified locally by building the `react` package through each code path:
- **Stable channel** (`yarn build --r=stable react/index`):
`build/facebook-react-native/VERSION_NATIVE_FB` is written with the
correct `19.3.0-native-fb-<sha>-<date>` version string. ✅
- **Experimental channel** (`yarn build --r=experimental react/index`):
`build/facebook-react-native` is deleted by the cleanup loop, leaving
only `oss-experimental` and `facebook-www` — confirming the version file
cannot come from this channel. ✅
- **Local merged build** (`yarn build react/index`, builds both channels
and merges): the final `build/facebook-react-native/` contains
`VERSION_NATIVE_FB`, matching what CI produces after merging per-worker
artifacts. ✅
DiffTrain build for [68631c0453b08e2c7c96a40910f4c91db1f66d5a](react/react@68631c0)
Reviewed By: rickhanlonii, zeyap
Differential Revision: D109860005
fbshipit-source-id: e63fd7e887908ee4fbc303f44303ce8384d44c45
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.MergedThis PR has been merged.p: ExpoPartner: ExpoPartner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@gabrieldonadel@analysis-bot@facebook-github-bot
, '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

chore: Extract logic to compute codegen TS extendsProps and props in getProps function - #36889

Closed
gabrieldonadel wants to merge 1 commit into
react:mainfrom
gabrieldonadel:chore/codegen-get-props
Closed

chore: Extract logic to compute codegen TS extendsProps and props in getProps function#36889
gabrieldonadel wants to merge 1 commit into
react:mainfrom
gabrieldonadel:chore/codegen-get-props

Conversation

@gabrieldonadel

Copy link
Copy Markdown
Collaborator

Summary:

[Codegen 103] This PR extracts the logic to compute the extendsProps and props properties in TypeScript Codegen in a getProps() function as requested on #34872

Changelog:

[Internal] [Added] - Extract logic to compute codegen TS extendsProps and props properties in a single getProps function

Test Plan:

Run yarn jest react-native-codegen and ensure CI is green

@facebook-github-botfacebook-github-bot added CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Expo Partner: Expo Partner labels Apr 13, 2023
@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from df56c20 to b8a6e10CompareApril 13, 2023 03:38
@analysis-bot

Copy link
Copy Markdown
PlatformEngineArchSize (bytes)Diff
androidhermesarm64-v8a8,604,788+0
androidhermesarmeabi-v7a7,918,817+0
androidhermesx869,090,833+0
androidhermesx86_648,945,848+0
androidjscarm64-v8a9,174,204+0
androidjscarmeabi-v7a8,365,854+0
androidjscx869,231,847+0
androidjscx86_649,490,545+0

Base commit: 9f24df0
Branch: main

@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from b8a6e10 to 75e006eCompareApril 13, 2023 04:03
@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from 75e006e to 0a6e78cCompareApril 13, 2023 04:07
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi merged this pull request in e962d43.

meta-codesyncBot pushed a commit that referenced this pull request Jun 29, 2026
Summary:
## Summary
The `runtime_commit_artifacts` workflow has been failing in the "move
relevant files for react in fbsource into compiled-rn" step with:
```
mv: cannot stat 'build/facebook-react-native/VERSION_NATIVE_FB': No such file or directory
```
`VERSION_NATIVE_FB` was only written in `processExperimental`, *inside*
`build/facebook-react-native/`. That directory is not part of the
allowlist in the cleanup loop at the end of `processExperimental`, so
the experimental workers wrote the version file and then immediately
deleted it.
This was masked until #36859. The cleanup loop previously used `rm -rm`
(an invalid flag), so `rm` errored out and deleted nothing — the loop
was effectively a no-op. Once it was changed to `fs.rmSync`, the
deletion actually took effect. After CI merges the per-worker artifacts,
`facebook-react-native/*/cjs` still survives (the **stable** workers
produce it and `processStable` has no cleanup loop), but
`VERSION_NATIVE_FB` is gone because stable never wrote it.
## Fix
The `build/facebook-react-native` artifacts are identical across release
channels:
- RN packages resolve to the generic `.fb.js` entry fork (no
`.modern.fb.js` / `.classic.fb.js` split).
- The `native-fb` feature-flag forks don't reference `__EXPERIMENTAL__`.
- The version string is identical
(`<ReactVersion>-native-fb-<sha>-<date>`).
So this writes `VERSION_NATIVE_FB` from `processStable`, where
`facebook-react-native` is preserved, and drops the now-dead write from
`processExperimental`.
## Test Plan
Verified locally by building the `react` package through each code path:
- **Stable channel** (`yarn build --r=stable react/index`):
`build/facebook-react-native/VERSION_NATIVE_FB` is written with the
correct `19.3.0-native-fb-<sha>-<date>` version string. ✅
- **Experimental channel** (`yarn build --r=experimental react/index`):
`build/facebook-react-native` is deleted by the cleanup loop, leaving
only `oss-experimental` and `facebook-www` — confirming the version file
cannot come from this channel. ✅
- **Local merged build** (`yarn build react/index`, builds both channels
and merges): the final `build/facebook-react-native/` contains
`VERSION_NATIVE_FB`, matching what CI produces after merging per-worker
artifacts. ✅
DiffTrain build for [68631c0453b08e2c7c96a40910f4c91db1f66d5a](react/react@68631c0)
Reviewed By: rickhanlonii, zeyap
Differential Revision: D109860005
fbshipit-source-id: e63fd7e887908ee4fbc303f44303ce8384d44c45
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.MergedThis PR has been merged.p: ExpoPartner: ExpoPartner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@gabrieldonadel@analysis-bot@facebook-github-bot
, '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

chore: Extract logic to compute codegen TS extendsProps and props in getProps function - #36889

Closed
gabrieldonadel wants to merge 1 commit into
react:mainfrom
gabrieldonadel:chore/codegen-get-props
Closed

chore: Extract logic to compute codegen TS extendsProps and props in getProps function#36889
gabrieldonadel wants to merge 1 commit into
react:mainfrom
gabrieldonadel:chore/codegen-get-props

Conversation

@gabrieldonadel

Copy link
Copy Markdown
Collaborator

Summary:

[Codegen 103] This PR extracts the logic to compute the extendsProps and props properties in TypeScript Codegen in a getProps() function as requested on #34872

Changelog:

[Internal] [Added] - Extract logic to compute codegen TS extendsProps and props properties in a single getProps function

Test Plan:

Run yarn jest react-native-codegen and ensure CI is green

@facebook-github-botfacebook-github-bot added CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Expo Partner: Expo Partner labels Apr 13, 2023
@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from df56c20 to b8a6e10CompareApril 13, 2023 03:38
@analysis-bot

Copy link
Copy Markdown
PlatformEngineArchSize (bytes)Diff
androidhermesarm64-v8a8,604,788+0
androidhermesarmeabi-v7a7,918,817+0
androidhermesx869,090,833+0
androidhermesx86_648,945,848+0
androidjscarm64-v8a9,174,204+0
androidjscarmeabi-v7a8,365,854+0
androidjscx869,231,847+0
androidjscx86_649,490,545+0

Base commit: 9f24df0
Branch: main

@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from b8a6e10 to 75e006eCompareApril 13, 2023 04:03
@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from 75e006e to 0a6e78cCompareApril 13, 2023 04:07
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi merged this pull request in e962d43.

meta-codesyncBot pushed a commit that referenced this pull request Jun 29, 2026
Summary:
## Summary
The `runtime_commit_artifacts` workflow has been failing in the "move
relevant files for react in fbsource into compiled-rn" step with:
```
mv: cannot stat 'build/facebook-react-native/VERSION_NATIVE_FB': No such file or directory
```
`VERSION_NATIVE_FB` was only written in `processExperimental`, *inside*
`build/facebook-react-native/`. That directory is not part of the
allowlist in the cleanup loop at the end of `processExperimental`, so
the experimental workers wrote the version file and then immediately
deleted it.
This was masked until #36859. The cleanup loop previously used `rm -rm`
(an invalid flag), so `rm` errored out and deleted nothing — the loop
was effectively a no-op. Once it was changed to `fs.rmSync`, the
deletion actually took effect. After CI merges the per-worker artifacts,
`facebook-react-native/*/cjs` still survives (the **stable** workers
produce it and `processStable` has no cleanup loop), but
`VERSION_NATIVE_FB` is gone because stable never wrote it.
## Fix
The `build/facebook-react-native` artifacts are identical across release
channels:
- RN packages resolve to the generic `.fb.js` entry fork (no
`.modern.fb.js` / `.classic.fb.js` split).
- The `native-fb` feature-flag forks don't reference `__EXPERIMENTAL__`.
- The version string is identical
(`<ReactVersion>-native-fb-<sha>-<date>`).
So this writes `VERSION_NATIVE_FB` from `processStable`, where
`facebook-react-native` is preserved, and drops the now-dead write from
`processExperimental`.
## Test Plan
Verified locally by building the `react` package through each code path:
- **Stable channel** (`yarn build --r=stable react/index`):
`build/facebook-react-native/VERSION_NATIVE_FB` is written with the
correct `19.3.0-native-fb-<sha>-<date>` version string. ✅
- **Experimental channel** (`yarn build --r=experimental react/index`):
`build/facebook-react-native` is deleted by the cleanup loop, leaving
only `oss-experimental` and `facebook-www` — confirming the version file
cannot come from this channel. ✅
- **Local merged build** (`yarn build react/index`, builds both channels
and merges): the final `build/facebook-react-native/` contains
`VERSION_NATIVE_FB`, matching what CI produces after merging per-worker
artifacts. ✅
DiffTrain build for [68631c0453b08e2c7c96a40910f4c91db1f66d5a](react/react@68631c0)
Reviewed By: rickhanlonii, zeyap
Differential Revision: D109860005
fbshipit-source-id: e63fd7e887908ee4fbc303f44303ce8384d44c45
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.MergedThis PR has been merged.p: ExpoPartner: ExpoPartner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@gabrieldonadel@analysis-bot@facebook-github-bot
, '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

chore: Extract logic to compute codegen TS extendsProps and props in getProps function - #36889

Closed
gabrieldonadel wants to merge 1 commit into
react:mainfrom
gabrieldonadel:chore/codegen-get-props
Closed

chore: Extract logic to compute codegen TS extendsProps and props in getProps function#36889
gabrieldonadel wants to merge 1 commit into
react:mainfrom
gabrieldonadel:chore/codegen-get-props

Conversation

@gabrieldonadel

Copy link
Copy Markdown
Collaborator

Summary:

[Codegen 103] This PR extracts the logic to compute the extendsProps and props properties in TypeScript Codegen in a getProps() function as requested on #34872

Changelog:

[Internal] [Added] - Extract logic to compute codegen TS extendsProps and props properties in a single getProps function

Test Plan:

Run yarn jest react-native-codegen and ensure CI is green

@facebook-github-botfacebook-github-bot added CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Expo Partner: Expo Partner labels Apr 13, 2023
@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from df56c20 to b8a6e10CompareApril 13, 2023 03:38
@analysis-bot

Copy link
Copy Markdown
PlatformEngineArchSize (bytes)Diff
androidhermesarm64-v8a8,604,788+0
androidhermesarmeabi-v7a7,918,817+0
androidhermesx869,090,833+0
androidhermesx86_648,945,848+0
androidjscarm64-v8a9,174,204+0
androidjscarmeabi-v7a8,365,854+0
androidjscx869,231,847+0
androidjscx86_649,490,545+0

Base commit: 9f24df0
Branch: main

@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from b8a6e10 to 75e006eCompareApril 13, 2023 04:03
@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from 75e006e to 0a6e78cCompareApril 13, 2023 04:07
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi merged this pull request in e962d43.

meta-codesyncBot pushed a commit that referenced this pull request Jun 29, 2026
Summary:
## Summary
The `runtime_commit_artifacts` workflow has been failing in the "move
relevant files for react in fbsource into compiled-rn" step with:
```
mv: cannot stat 'build/facebook-react-native/VERSION_NATIVE_FB': No such file or directory
```
`VERSION_NATIVE_FB` was only written in `processExperimental`, *inside*
`build/facebook-react-native/`. That directory is not part of the
allowlist in the cleanup loop at the end of `processExperimental`, so
the experimental workers wrote the version file and then immediately
deleted it.
This was masked until #36859. The cleanup loop previously used `rm -rm`
(an invalid flag), so `rm` errored out and deleted nothing — the loop
was effectively a no-op. Once it was changed to `fs.rmSync`, the
deletion actually took effect. After CI merges the per-worker artifacts,
`facebook-react-native/*/cjs` still survives (the **stable** workers
produce it and `processStable` has no cleanup loop), but
`VERSION_NATIVE_FB` is gone because stable never wrote it.
## Fix
The `build/facebook-react-native` artifacts are identical across release
channels:
- RN packages resolve to the generic `.fb.js` entry fork (no
`.modern.fb.js` / `.classic.fb.js` split).
- The `native-fb` feature-flag forks don't reference `__EXPERIMENTAL__`.
- The version string is identical
(`<ReactVersion>-native-fb-<sha>-<date>`).
So this writes `VERSION_NATIVE_FB` from `processStable`, where
`facebook-react-native` is preserved, and drops the now-dead write from
`processExperimental`.
## Test Plan
Verified locally by building the `react` package through each code path:
- **Stable channel** (`yarn build --r=stable react/index`):
`build/facebook-react-native/VERSION_NATIVE_FB` is written with the
correct `19.3.0-native-fb-<sha>-<date>` version string. ✅
- **Experimental channel** (`yarn build --r=experimental react/index`):
`build/facebook-react-native` is deleted by the cleanup loop, leaving
only `oss-experimental` and `facebook-www` — confirming the version file
cannot come from this channel. ✅
- **Local merged build** (`yarn build react/index`, builds both channels
and merges): the final `build/facebook-react-native/` contains
`VERSION_NATIVE_FB`, matching what CI produces after merging per-worker
artifacts. ✅
DiffTrain build for [68631c0453b08e2c7c96a40910f4c91db1f66d5a](react/react@68631c0)
Reviewed By: rickhanlonii, zeyap
Differential Revision: D109860005
fbshipit-source-id: e63fd7e887908ee4fbc303f44303ce8384d44c45
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.MergedThis PR has been merged.p: ExpoPartner: ExpoPartner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@gabrieldonadel@analysis-bot@facebook-github-bot
, '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

chore: Extract logic to compute codegen TS extendsProps and props in getProps function - #36889

Closed
gabrieldonadel wants to merge 1 commit into
react:mainfrom
gabrieldonadel:chore/codegen-get-props
Closed

chore: Extract logic to compute codegen TS extendsProps and props in getProps function#36889
gabrieldonadel wants to merge 1 commit into
react:mainfrom
gabrieldonadel:chore/codegen-get-props

Conversation

@gabrieldonadel

Copy link
Copy Markdown
Collaborator

Summary:

[Codegen 103] This PR extracts the logic to compute the extendsProps and props properties in TypeScript Codegen in a getProps() function as requested on #34872

Changelog:

[Internal] [Added] - Extract logic to compute codegen TS extendsProps and props properties in a single getProps function

Test Plan:

Run yarn jest react-native-codegen and ensure CI is green

@facebook-github-botfacebook-github-bot added CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Expo Partner: Expo Partner labels Apr 13, 2023
@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from df56c20 to b8a6e10CompareApril 13, 2023 03:38
@analysis-bot

Copy link
Copy Markdown
PlatformEngineArchSize (bytes)Diff
androidhermesarm64-v8a8,604,788+0
androidhermesarmeabi-v7a7,918,817+0
androidhermesx869,090,833+0
androidhermesx86_648,945,848+0
androidjscarm64-v8a9,174,204+0
androidjscarmeabi-v7a8,365,854+0
androidjscx869,231,847+0
androidjscx86_649,490,545+0

Base commit: 9f24df0
Branch: main

@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from b8a6e10 to 75e006eCompareApril 13, 2023 04:03
@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from 75e006e to 0a6e78cCompareApril 13, 2023 04:07
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi merged this pull request in e962d43.

meta-codesyncBot pushed a commit that referenced this pull request Jun 29, 2026
Summary:
## Summary
The `runtime_commit_artifacts` workflow has been failing in the "move
relevant files for react in fbsource into compiled-rn" step with:
```
mv: cannot stat 'build/facebook-react-native/VERSION_NATIVE_FB': No such file or directory
```
`VERSION_NATIVE_FB` was only written in `processExperimental`, *inside*
`build/facebook-react-native/`. That directory is not part of the
allowlist in the cleanup loop at the end of `processExperimental`, so
the experimental workers wrote the version file and then immediately
deleted it.
This was masked until #36859. The cleanup loop previously used `rm -rm`
(an invalid flag), so `rm` errored out and deleted nothing — the loop
was effectively a no-op. Once it was changed to `fs.rmSync`, the
deletion actually took effect. After CI merges the per-worker artifacts,
`facebook-react-native/*/cjs` still survives (the **stable** workers
produce it and `processStable` has no cleanup loop), but
`VERSION_NATIVE_FB` is gone because stable never wrote it.
## Fix
The `build/facebook-react-native` artifacts are identical across release
channels:
- RN packages resolve to the generic `.fb.js` entry fork (no
`.modern.fb.js` / `.classic.fb.js` split).
- The `native-fb` feature-flag forks don't reference `__EXPERIMENTAL__`.
- The version string is identical
(`<ReactVersion>-native-fb-<sha>-<date>`).
So this writes `VERSION_NATIVE_FB` from `processStable`, where
`facebook-react-native` is preserved, and drops the now-dead write from
`processExperimental`.
## Test Plan
Verified locally by building the `react` package through each code path:
- **Stable channel** (`yarn build --r=stable react/index`):
`build/facebook-react-native/VERSION_NATIVE_FB` is written with the
correct `19.3.0-native-fb-<sha>-<date>` version string. ✅
- **Experimental channel** (`yarn build --r=experimental react/index`):
`build/facebook-react-native` is deleted by the cleanup loop, leaving
only `oss-experimental` and `facebook-www` — confirming the version file
cannot come from this channel. ✅
- **Local merged build** (`yarn build react/index`, builds both channels
and merges): the final `build/facebook-react-native/` contains
`VERSION_NATIVE_FB`, matching what CI produces after merging per-worker
artifacts. ✅
DiffTrain build for [68631c0453b08e2c7c96a40910f4c91db1f66d5a](react/react@68631c0)
Reviewed By: rickhanlonii, zeyap
Differential Revision: D109860005
fbshipit-source-id: e63fd7e887908ee4fbc303f44303ce8384d44c45
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.MergedThis PR has been merged.p: ExpoPartner: ExpoPartner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@gabrieldonadel@analysis-bot@facebook-github-bot
, '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

chore: Extract logic to compute codegen TS extendsProps and props in getProps function - #36889

Closed
gabrieldonadel wants to merge 1 commit into
react:mainfrom
gabrieldonadel:chore/codegen-get-props
Closed

chore: Extract logic to compute codegen TS extendsProps and props in getProps function#36889
gabrieldonadel wants to merge 1 commit into
react:mainfrom
gabrieldonadel:chore/codegen-get-props

Conversation

@gabrieldonadel

Copy link
Copy Markdown
Collaborator

Summary:

[Codegen 103] This PR extracts the logic to compute the extendsProps and props properties in TypeScript Codegen in a getProps() function as requested on #34872

Changelog:

[Internal] [Added] - Extract logic to compute codegen TS extendsProps and props properties in a single getProps function

Test Plan:

Run yarn jest react-native-codegen and ensure CI is green

@facebook-github-botfacebook-github-bot added CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Expo Partner: Expo Partner labels Apr 13, 2023
@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from df56c20 to b8a6e10CompareApril 13, 2023 03:38
@analysis-bot

Copy link
Copy Markdown
PlatformEngineArchSize (bytes)Diff
androidhermesarm64-v8a8,604,788+0
androidhermesarmeabi-v7a7,918,817+0
androidhermesx869,090,833+0
androidhermesx86_648,945,848+0
androidjscarm64-v8a9,174,204+0
androidjscarmeabi-v7a8,365,854+0
androidjscx869,231,847+0
androidjscx86_649,490,545+0

Base commit: 9f24df0
Branch: main

@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from b8a6e10 to 75e006eCompareApril 13, 2023 04:03
@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from 75e006e to 0a6e78cCompareApril 13, 2023 04:07
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi merged this pull request in e962d43.

meta-codesyncBot pushed a commit that referenced this pull request Jun 29, 2026
Summary:
## Summary
The `runtime_commit_artifacts` workflow has been failing in the "move
relevant files for react in fbsource into compiled-rn" step with:
```
mv: cannot stat 'build/facebook-react-native/VERSION_NATIVE_FB': No such file or directory
```
`VERSION_NATIVE_FB` was only written in `processExperimental`, *inside*
`build/facebook-react-native/`. That directory is not part of the
allowlist in the cleanup loop at the end of `processExperimental`, so
the experimental workers wrote the version file and then immediately
deleted it.
This was masked until #36859. The cleanup loop previously used `rm -rm`
(an invalid flag), so `rm` errored out and deleted nothing — the loop
was effectively a no-op. Once it was changed to `fs.rmSync`, the
deletion actually took effect. After CI merges the per-worker artifacts,
`facebook-react-native/*/cjs` still survives (the **stable** workers
produce it and `processStable` has no cleanup loop), but
`VERSION_NATIVE_FB` is gone because stable never wrote it.
## Fix
The `build/facebook-react-native` artifacts are identical across release
channels:
- RN packages resolve to the generic `.fb.js` entry fork (no
`.modern.fb.js` / `.classic.fb.js` split).
- The `native-fb` feature-flag forks don't reference `__EXPERIMENTAL__`.
- The version string is identical
(`<ReactVersion>-native-fb-<sha>-<date>`).
So this writes `VERSION_NATIVE_FB` from `processStable`, where
`facebook-react-native` is preserved, and drops the now-dead write from
`processExperimental`.
## Test Plan
Verified locally by building the `react` package through each code path:
- **Stable channel** (`yarn build --r=stable react/index`):
`build/facebook-react-native/VERSION_NATIVE_FB` is written with the
correct `19.3.0-native-fb-<sha>-<date>` version string. ✅
- **Experimental channel** (`yarn build --r=experimental react/index`):
`build/facebook-react-native` is deleted by the cleanup loop, leaving
only `oss-experimental` and `facebook-www` — confirming the version file
cannot come from this channel. ✅
- **Local merged build** (`yarn build react/index`, builds both channels
and merges): the final `build/facebook-react-native/` contains
`VERSION_NATIVE_FB`, matching what CI produces after merging per-worker
artifacts. ✅
DiffTrain build for [68631c0453b08e2c7c96a40910f4c91db1f66d5a](react/react@68631c0)
Reviewed By: rickhanlonii, zeyap
Differential Revision: D109860005
fbshipit-source-id: e63fd7e887908ee4fbc303f44303ce8384d44c45
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.MergedThis PR has been merged.p: ExpoPartner: ExpoPartner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@gabrieldonadel@analysis-bot@facebook-github-bot
, '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

chore: Extract logic to compute codegen TS extendsProps and props in getProps function - #36889

Closed
gabrieldonadel wants to merge 1 commit into
react:mainfrom
gabrieldonadel:chore/codegen-get-props
Closed

chore: Extract logic to compute codegen TS extendsProps and props in getProps function#36889
gabrieldonadel wants to merge 1 commit into
react:mainfrom
gabrieldonadel:chore/codegen-get-props

Conversation

@gabrieldonadel

Copy link
Copy Markdown
Collaborator

Summary:

[Codegen 103] This PR extracts the logic to compute the extendsProps and props properties in TypeScript Codegen in a getProps() function as requested on #34872

Changelog:

[Internal] [Added] - Extract logic to compute codegen TS extendsProps and props properties in a single getProps function

Test Plan:

Run yarn jest react-native-codegen and ensure CI is green

@facebook-github-botfacebook-github-bot added CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Expo Partner: Expo Partner labels Apr 13, 2023
@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from df56c20 to b8a6e10CompareApril 13, 2023 03:38
@analysis-bot

Copy link
Copy Markdown
PlatformEngineArchSize (bytes)Diff
androidhermesarm64-v8a8,604,788+0
androidhermesarmeabi-v7a7,918,817+0
androidhermesx869,090,833+0
androidhermesx86_648,945,848+0
androidjscarm64-v8a9,174,204+0
androidjscarmeabi-v7a8,365,854+0
androidjscx869,231,847+0
androidjscx86_649,490,545+0

Base commit: 9f24df0
Branch: main

@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from b8a6e10 to 75e006eCompareApril 13, 2023 04:03
@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from 75e006e to 0a6e78cCompareApril 13, 2023 04:07
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi merged this pull request in e962d43.

meta-codesyncBot pushed a commit that referenced this pull request Jun 29, 2026
Summary:
## Summary
The `runtime_commit_artifacts` workflow has been failing in the "move
relevant files for react in fbsource into compiled-rn" step with:
```
mv: cannot stat 'build/facebook-react-native/VERSION_NATIVE_FB': No such file or directory
```
`VERSION_NATIVE_FB` was only written in `processExperimental`, *inside*
`build/facebook-react-native/`. That directory is not part of the
allowlist in the cleanup loop at the end of `processExperimental`, so
the experimental workers wrote the version file and then immediately
deleted it.
This was masked until #36859. The cleanup loop previously used `rm -rm`
(an invalid flag), so `rm` errored out and deleted nothing — the loop
was effectively a no-op. Once it was changed to `fs.rmSync`, the
deletion actually took effect. After CI merges the per-worker artifacts,
`facebook-react-native/*/cjs` still survives (the **stable** workers
produce it and `processStable` has no cleanup loop), but
`VERSION_NATIVE_FB` is gone because stable never wrote it.
## Fix
The `build/facebook-react-native` artifacts are identical across release
channels:
- RN packages resolve to the generic `.fb.js` entry fork (no
`.modern.fb.js` / `.classic.fb.js` split).
- The `native-fb` feature-flag forks don't reference `__EXPERIMENTAL__`.
- The version string is identical
(`<ReactVersion>-native-fb-<sha>-<date>`).
So this writes `VERSION_NATIVE_FB` from `processStable`, where
`facebook-react-native` is preserved, and drops the now-dead write from
`processExperimental`.
## Test Plan
Verified locally by building the `react` package through each code path:
- **Stable channel** (`yarn build --r=stable react/index`):
`build/facebook-react-native/VERSION_NATIVE_FB` is written with the
correct `19.3.0-native-fb-<sha>-<date>` version string. ✅
- **Experimental channel** (`yarn build --r=experimental react/index`):
`build/facebook-react-native` is deleted by the cleanup loop, leaving
only `oss-experimental` and `facebook-www` — confirming the version file
cannot come from this channel. ✅
- **Local merged build** (`yarn build react/index`, builds both channels
and merges): the final `build/facebook-react-native/` contains
`VERSION_NATIVE_FB`, matching what CI produces after merging per-worker
artifacts. ✅
DiffTrain build for [68631c0453b08e2c7c96a40910f4c91db1f66d5a](react/react@68631c0)
Reviewed By: rickhanlonii, zeyap
Differential Revision: D109860005
fbshipit-source-id: e63fd7e887908ee4fbc303f44303ce8384d44c45
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.MergedThis PR has been merged.p: ExpoPartner: ExpoPartner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@gabrieldonadel@analysis-bot@facebook-github-bot
, '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

chore: Extract logic to compute codegen TS extendsProps and props in getProps function - #36889

Closed
gabrieldonadel wants to merge 1 commit into
react:mainfrom
gabrieldonadel:chore/codegen-get-props
Closed

chore: Extract logic to compute codegen TS extendsProps and props in getProps function#36889
gabrieldonadel wants to merge 1 commit into
react:mainfrom
gabrieldonadel:chore/codegen-get-props

Conversation

@gabrieldonadel

Copy link
Copy Markdown
Collaborator

Summary:

[Codegen 103] This PR extracts the logic to compute the extendsProps and props properties in TypeScript Codegen in a getProps() function as requested on #34872

Changelog:

[Internal] [Added] - Extract logic to compute codegen TS extendsProps and props properties in a single getProps function

Test Plan:

Run yarn jest react-native-codegen and ensure CI is green

@facebook-github-botfacebook-github-bot added CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Expo Partner: Expo Partner labels Apr 13, 2023
@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from df56c20 to b8a6e10CompareApril 13, 2023 03:38
@analysis-bot

Copy link
Copy Markdown
PlatformEngineArchSize (bytes)Diff
androidhermesarm64-v8a8,604,788+0
androidhermesarmeabi-v7a7,918,817+0
androidhermesx869,090,833+0
androidhermesx86_648,945,848+0
androidjscarm64-v8a9,174,204+0
androidjscarmeabi-v7a8,365,854+0
androidjscx869,231,847+0
androidjscx86_649,490,545+0

Base commit: 9f24df0
Branch: main

@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from b8a6e10 to 75e006eCompareApril 13, 2023 04:03
@gabrieldonadel
gabrieldonadelforce-pushed the chore/codegen-get-props branch from 75e006e to 0a6e78cCompareApril 13, 2023 04:07
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi merged this pull request in e962d43.

meta-codesyncBot pushed a commit that referenced this pull request Jun 29, 2026
Summary:
## Summary
The `runtime_commit_artifacts` workflow has been failing in the "move
relevant files for react in fbsource into compiled-rn" step with:
```
mv: cannot stat 'build/facebook-react-native/VERSION_NATIVE_FB': No such file or directory
```
`VERSION_NATIVE_FB` was only written in `processExperimental`, *inside*
`build/facebook-react-native/`. That directory is not part of the
allowlist in the cleanup loop at the end of `processExperimental`, so
the experimental workers wrote the version file and then immediately
deleted it.
This was masked until #36859. The cleanup loop previously used `rm -rm`
(an invalid flag), so `rm` errored out and deleted nothing — the loop
was effectively a no-op. Once it was changed to `fs.rmSync`, the
deletion actually took effect. After CI merges the per-worker artifacts,
`facebook-react-native/*/cjs` still survives (the **stable** workers
produce it and `processStable` has no cleanup loop), but
`VERSION_NATIVE_FB` is gone because stable never wrote it.
## Fix
The `build/facebook-react-native` artifacts are identical across release
channels:
- RN packages resolve to the generic `.fb.js` entry fork (no
`.modern.fb.js` / `.classic.fb.js` split).
- The `native-fb` feature-flag forks don't reference `__EXPERIMENTAL__`.
- The version string is identical
(`<ReactVersion>-native-fb-<sha>-<date>`).
So this writes `VERSION_NATIVE_FB` from `processStable`, where
`facebook-react-native` is preserved, and drops the now-dead write from
`processExperimental`.
## Test Plan
Verified locally by building the `react` package through each code path:
- **Stable channel** (`yarn build --r=stable react/index`):
`build/facebook-react-native/VERSION_NATIVE_FB` is written with the
correct `19.3.0-native-fb-<sha>-<date>` version string. ✅
- **Experimental channel** (`yarn build --r=experimental react/index`):
`build/facebook-react-native` is deleted by the cleanup loop, leaving
only `oss-experimental` and `facebook-www` — confirming the version file
cannot come from this channel. ✅
- **Local merged build** (`yarn build react/index`, builds both channels
and merges): the final `build/facebook-react-native/` contains
`VERSION_NATIVE_FB`, matching what CI produces after merging per-worker
artifacts. ✅
DiffTrain build for [68631c0453b08e2c7c96a40910f4c91db1f66d5a](react/react@68631c0)
Reviewed By: rickhanlonii, zeyap
Differential Revision: D109860005
fbshipit-source-id: e63fd7e887908ee4fbc303f44303ce8384d44c45
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.MergedThis PR has been merged.p: ExpoPartner: ExpoPartner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@gabrieldonadel@analysis-bot@facebook-github-bot