Skip to content

[pull] main from facebook:main #177

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 141 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
141 commits
Select commit Hold shift + click to select a range
43714eb
Do not notify Discord for draft pull requests (#33446)
unstubbable Jun 5, 2025
dddcae7
Enable the `enableEagerAlternateStateNodeCleanup` Feature Flag (#33447)
yungsters Jun 5, 2025
b175988
[Flight] Bypass caches in Flight fixture if requested (#33445)
unstubbable Jun 6, 2025
a3be682
[tests] remove pretest compiler script (#33452)
rickhanlonii Jun 6, 2025
22b9291
[Fizz] Suspensey Images for View Transition Reveals (#33433)
sebmarkbage Jun 6, 2025
d177272
[Fizz] Error and deopt from rel=expect for large documents without bo…
sebmarkbage Jun 6, 2025
e8d15fa
[Flight] Build node-webstreams version of bundled webpack server (#33…
sebmarkbage Jun 6, 2025
ab859e3
[Flight] Build Node.js Web Streams builds for Turbopack and Parcel (#…
sebmarkbage Jun 6, 2025
a374e0e
[ci] Fix missing permissions for stale job (#33466)
poteto Jun 6, 2025
6ccf328
[Fizz] Shorten throttle to hit a specific target metric (#33463)
sebmarkbage Jun 6, 2025
142aa07
[Fizz] Support deeply nested Suspense inside fallback (#33467)
gnoff Jun 6, 2025
82f3684
Revert Node Web Streams (#33472)
sebmarkbage Jun 6, 2025
280ff6f
[Flight] Add Web Stream support to the Flight Client in Node (#33473)
sebmarkbage Jun 6, 2025
b3d5e90
[Fizz] Include unit of threshold in rel=expect deopt error (#33476)
eps1lon Jun 7, 2025
65ec57d
[Fizz] Add Web Streams to Fizz Node entry point (#33475)
sebmarkbage Jun 7, 2025
9666605
[Flight] Add Web Stream support to the Flight Server in Node (#33474)
sebmarkbage Jun 7, 2025
b367b60
[Flight] Add "use ..." boundary after the change instead of before it…
sebmarkbage Jun 7, 2025
6c8bcda
[Flight] Clarify Semantics for Awaiting Cached Data (#33438)
sebmarkbage Jun 7, 2025
e4b88ae
[Flight] Add Web Streams APIs to unbundled Node entries for Webpack (…
unstubbable Jun 7, 2025
c0b5a0c
[Flight] Use Web Streams APIs for 3rd-party component in Flight fixtu…
unstubbable Jun 8, 2025
911dbd9
feat(ReactNative): prioritize attribute config `process` function to …
hannojg Jun 9, 2025
95bcf87
Format `ReactNativeAttributePayloadFabric.js` with Prettier (#33486)
unstubbable Jun 9, 2025
4df098c
[compiler] Don't include useEffectEvent values in autodeps (#33450)
jbrown215 Jun 9, 2025
428ab82
[Flight] Simulate fetch to third party in fixture (#33484)
sebmarkbage Jun 9, 2025
b6c0aa8
[compiler]: fix link compiler & 4 broken tests from path containing s…
wlemahieu Jun 9, 2025
80c03eb
refactor[devtools]: update css for settings and support css variables…
hoxyq Jun 9, 2025
c38e268
[Fiber] Fix hydration of useId in SuspenseList (#33491)
sebmarkbage Jun 9, 2025
56408a5
[Flight] Emit timestamps only in forwards advancing time in debug inf…
sebmarkbage Jun 10, 2025
6c86e56
Remove feature flag enableRenderableContext (#33505)
kassens Jun 11, 2025
ff93c44
[Flight] Track Debug Info from Synchronously Unwrapped Promises (#33485)
sebmarkbage Jun 11, 2025
b7e2de6
Stringify context as SomeContext instead of SomeContext.Provider (#33…
kassens Jun 11, 2025
888ea60
[compiler][repro] Postfix operator is incorrectly compiled (#33508)
poteto Jun 11, 2025
a00ca6f
[Fizz] Delay detachment of completed boundaries until reveal (#33511)
eps1lon Jun 11, 2025
ed023cf
[devtools-shell] layout options for testing (#33516)
jsdf Jun 13, 2025
12bc60f
[devtools] Added minimum indent size to Component Tree (#33517)
jsdf Jun 13, 2025
d60f77a
[ci] Update prerelease workflows to allow publishing specific package…
poteto Jun 13, 2025
6b7e207
[ci] Don't skip experimental prerelease incorrectly (#33527)
poteto Jun 13, 2025
5d24c64
Remove feature flag enableDO_NOT_USE_disableStrictPassiveEffect (#33524)
kassens Jun 16, 2025
75e78d2
[compiler] Add repro for IIFE in ternary causing a bailout (#33546)
jbrown215 Jun 17, 2025
90bee81
[compiler] Do not inline IIFEs in value blocks (#33548)
jbrown215 Jun 17, 2025
e1dc034
Expose cacheSignal() alongside cache() (#33557)
sebmarkbage Jun 17, 2025
ae96265
[compiler] Remove unnecessary fixture (#33572)
josephsavona Jun 18, 2025
66cfe04
[compiler] New mutability/aliasing model (#33494)
josephsavona Jun 18, 2025
df080d2
[compiler] Copy fixtures affected by new inference (#33495)
josephsavona Jun 18, 2025
0cf6d0c
[compiler] Update fixtures for new inference (#33496)
josephsavona Jun 18, 2025
90ccbd7
[compiler] Enable new inference by default (#33497)
josephsavona Jun 18, 2025
7c28c15
[compiler] Fix AnalyzeFunctions to fully reset context identifiers (#…
josephsavona Jun 18, 2025
7b67dc9
[commit] Better error message for invalid hoisting (#33504)
josephsavona Jun 18, 2025
e081cb3
[compiler] FunctionExpression context locations point to first refere…
josephsavona Jun 18, 2025
b067c6f
[compiler] Improve error message for mutating hook args/return (#33513)
josephsavona Jun 18, 2025
7ce2a63
[compiler] update fixtures (#33573)
josephsavona Jun 18, 2025
8f4ce72
[commit] Improve error for hoisting violations (#33514)
josephsavona Jun 18, 2025
81d8115
[compiler] Fix infinite loop due to uncached applied signatures (#33518)
josephsavona Jun 18, 2025
0e7cdeb
[compiler] Repro for case of lost precision in new inference (#33522)
josephsavona Jun 18, 2025
34179fe
[compiler] moduleTypeProvider support for aliasing signatures (#33526)
josephsavona Jun 18, 2025
4335f69
[compiler] More readable alias signature declarations (#33530)
josephsavona Jun 18, 2025
7ceb100
[compiler] Rename InferFunctionExprAliasingEffectsSignature (#33532)
josephsavona Jun 18, 2025
4f543f3
[compiler] Docs describing new inference model (#33533)
josephsavona Jun 18, 2025
cc38063
[compiler] Tests for different orders of createfrom/capture w/wo func…
josephsavona Jun 18, 2025
3a2ff8b
[compiler] Fix <ValidateMemoization> (#33547)
josephsavona Jun 18, 2025
d37faa0
[compiler] Preserve Create effects, guarantee effects initialize once…
josephsavona Jun 18, 2025
2bee348
[compiler] Cleanup debugging code (#33571)
josephsavona Jun 18, 2025
374dfe8
build: make enableComponentPerformanceTrack dynamic for native-fb (#3…
hoxyq Jun 19, 2025
a947eba
Fix CI (#33578)
eps1lon Jun 19, 2025
c8822e9
Make it clearer what runtime release failed (#33579)
eps1lon Jun 20, 2025
79d9aed
[Fizz] Clean up the replay nodes if we're already rendered past an el…
sebmarkbage Jun 20, 2025
06e8995
[Fizz] Ignore error if content node is gone before reveal (#33531)
eps1lon Jun 20, 2025
643257c
[Flight] Serialize functions by reference (#33539)
devongovett Jun 20, 2025
ed07719
[Flight] Dedupe objects serialized as Debug Models in a separate set …
sebmarkbage Jun 20, 2025
6c7b1a1
Rename serializeConsoleMap/Set to serializeDebugMap/Set (#33587)
sebmarkbage Jun 21, 2025
d70ee32
[Flight] Eagerly parse stack traces in DebugNode (#33589)
sebmarkbage Jun 22, 2025
fe3f0ec
[Flight] Don't use object property initializer for async iterable (#3…
sebmarkbage Jun 22, 2025
1d1b26c
[Flight] Serialize already resolved Promises as debug models (#33588)
sebmarkbage Jun 22, 2025
18ee505
[Flight] Support classes in renderDebugModel (#33590)
sebmarkbage Jun 22, 2025
2a911f2
[Flight] Send the awaited Promise to the client as additional debug i…
sebmarkbage Jun 23, 2025
fa3feba
Fix prelease workflows for `dry: false` (#33582)
eps1lon Jun 23, 2025
aab72cb
rename ReactFiberContext to ReactFiberLegacyContext (#33622)
kassens Jun 23, 2025
c80c69f
[Flight] Remove back pointers to the Response from the Chunks (#33620)
sebmarkbage Jun 23, 2025
12eaef7
[refactor] remove unused fiberstack functions (#33623)
rickhanlonii Jun 24, 2025
bbc13fa
[Flight] Add Debug Channel option for stateful connection to the back…
sebmarkbage Jun 24, 2025
94cf60b
[compiler] New inference repros/fixes (#33584)
josephsavona Jun 24, 2025
4a52348
Get Server Component Function Location for Parent Stacks using Child'…
sebmarkbage Jun 24, 2025
e67b4fe
[Flight] Emit Partial Debug Info if we have any at the point of abort…
sebmarkbage Jun 24, 2025
7a3ffef
[react-native] Consume ReactNativeAttributePayloadFabric from ReactNa…
javache Jun 25, 2025
b42341d
[Flight] Use cacheController instead of abortListeners for Streams (#…
sebmarkbage Jun 25, 2025
cee7939
[Fizz] Push a stalled await from debug info to the ownerStack/debugTa…
sebmarkbage Jun 25, 2025
9894c48
[compiler] Fix bug with reassigning function param in destructuring (…
josephsavona Jun 25, 2025
e130c08
[compiler] Avoid empty switch cases (#33625)
josephsavona Jun 25, 2025
123ff13
[compiler] Consolidate HIRFunction return information (#33640)
josephsavona Jun 25, 2025
bb6c9d5
[Flight] Log aborted await and component renders (#33641)
sebmarkbage Jun 25, 2025
9b2a545
[Flight] Add tests for component and owner stacks of halted component…
unstubbable Jun 25, 2025
9406162
[Flight] Emit start time before an await if one wasn't emitted alread…
sebmarkbage Jun 25, 2025
31d9165
[Fizz] Rename ReactFizzContext to ReactFizzLegacyContext (#33649)
sebmarkbage Jun 26, 2025
4db4b21
Fix typo "Complier" to "Compiler" and remove duplicate issue referenc…
DhruvTheDev1 Jun 26, 2025
d2a288f
Include Component Props in Performance Track (#33655)
sebmarkbage Jun 27, 2025
bfc8801
[Flight] Write Debug Info to Separate Priority Queue (#33654)
sebmarkbage Jun 27, 2025
58ac15c
devtools: emit performance entries only when profiling (#33652)
hoxyq Jun 27, 2025
d92056e
React DevTools 6.1.2 -> 6.1.3 (#33657)
hoxyq Jun 27, 2025
811e203
[Flight] Don't replay performance logs when replayConsoleLogs is fals…
sebmarkbage Jun 27, 2025
9c2a8dd
[Flight] Ensure we dedupe references if we later discover that it's t…
sebmarkbage Jun 29, 2025
3cfcdfb
[Flight] Resolve Deep Cycles (#33664)
sebmarkbage Jun 29, 2025
e9cab42
Special case printing Promises in Performance Track Properties (#33670)
sebmarkbage Jun 30, 2025
1e0d12b
Align `AttributeConfiguration` type in `ReactNativeTypes` (#33671)
coado Jun 30, 2025
65c4dec
Remove Dead Code in WWW JS
facebook-github-bot Jun 30, 2025
6a3d16c
Back out "Remove Dead Code in WWW JS" (#33673)
kassens Jun 30, 2025
7216c0f
[Flight] Don't assume _debugStack and _owner is defined for prod elem…
sebmarkbage Jun 30, 2025
91d097b
fix: rename bottom stack frame (#33680)
hoxyq Jul 1, 2025
602917c
Cleanup disableDefaultPropsExceptForClasses flag (#33648)
kassens Jul 1, 2025
73aa744
Remove now dead argument from resolveClassComponentProps (#33682)
kassens Jul 2, 2025
fc41c24
Add ScrollTimeline Polyfill for Swipe Recognizer using a new CustomTi…
sebmarkbage Jul 2, 2025
c0d151c
Clear width/height from Keyframes to Optimize View Transitions (#33576)
sebmarkbage Jul 2, 2025
e104795
[Fiber] Show Diff Render Props in Performance Track in DEV (#33658)
sebmarkbage Jul 2, 2025
508f7aa
[Fiber] Switch back to using performance.measure for trigger logs (#3…
sebmarkbage Jul 2, 2025
94fce50
[Flight] Use a heuristic to extract a useful description of I/O from …
sebmarkbage Jul 2, 2025
dcf83f7
Disable ScrollTimeline in Safari (#33499)
sebmarkbage Jul 2, 2025
0b78161
[Fiber] Highlight a Component with Deeply Equal Props in the Performa…
sebmarkbage Jul 2, 2025
ef8b6fa
[Flight] Don't double badge consoles that are replayed from a third p…
sebmarkbage Jul 2, 2025
3fc1bc6
[devtools] fix: support optionality of structured stack trace functio…
hoxyq Jul 4, 2025
d45db66
feat: static Components panel layout (#33696)
hoxyq Jul 4, 2025
9fd4c09
React DevTools 6.1.3 -> 6.1.4 (#33699)
hoxyq Jul 4, 2025
455424d
[devtools] fix: fallback to reading string stack trace when failed (#…
hoxyq Jul 4, 2025
5f71eed
[devtools] fix: check if profiling for all profiling hooks (#33701)
hoxyq Jul 4, 2025
5d87cd2
React DevTools 6.1.4 -> 6.1.5 (#33702)
hoxyq Jul 4, 2025
453a19a
[Flight] Collect Debug Info from Rejections in Aborted Render (#33708)
sebmarkbage Jul 5, 2025
4aad5e4
[Flight] Consistent format of virtual `rsc:` sources (#33706)
eps1lon Jul 6, 2025
2d7f0c4
[Flight] Insert an extra await node for awaiting on the promise retur…
sebmarkbage Jul 6, 2025
9a645e1
[Flight] Ignore "new Promise" and async_hooks even if they're not ign…
sebmarkbage Jul 6, 2025
bb40287
[Flight] Pass line/column to `filterStackFrame` (#33707)
eps1lon Jul 7, 2025
0378b46
[Flight] Include I/O not awaited in user space (#33715)
sebmarkbage Jul 7, 2025
7cafeff
[Flight] Close Debug Channel when All Lazy References Have Been GC:ed…
sebmarkbage Jul 7, 2025
8a6c589
[Flight] Keep a separate ref count for debug chunks (#33717)
sebmarkbage Jul 7, 2025
223f81d
[Flight] Flush performance track once we have no more pending chunks …
sebmarkbage Jul 7, 2025
c932e45
[Fizz] Name content inside "Suspense fallback" (#33723)
sebmarkbage Jul 7, 2025
e43986f
Finally remove favorSafetyOverHydrationPerf (#33619)
rickhanlonii Jul 7, 2025
e4314a0
[tests] Assert on component stack for Maximum Update error (#33686)
rickhanlonii Jul 7, 2025
b44a99b
[Fiber] Name content inside "Suspense fallback" (#33724)
sebmarkbage Jul 8, 2025
f1ecf82
[Flight] Optimize Async Stack Collection (#33727)
sebmarkbage Jul 8, 2025
bbea677
[Flight] Lazy load objects from the debug channel (#33728)
sebmarkbage Jul 8, 2025
befc124
[Fizz] Render preamble eagerly (#33730)
gnoff Jul 8, 2025
777264b
[Flight] Fix stack getting object limited (#33733)
sebmarkbage Jul 8, 2025
a7a1165
[Flight] Don't track Promise stack if there's no owner (#33734)
sebmarkbage Jul 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -622,6 +622,7 @@ module.exports = {
ScrollTimeline: 'readonly',
EventListenerOptionsOrUseCapture: 'readonly',
FocusOptions: 'readonly',
OptionalEffectTiming: 'readonly',

spyOnDev: 'readonly',
spyOnDevAndProd: 'readonly',
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/compiler_discord_notify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ permissions: {}

jobs:
check_access:
if: ${{ github.event.pull_request.draft == false }}
runs-on: ubuntu-latest
outputs:
is_member_or_collaborator: ${{ steps.check_is_member_or_collaborator.outputs.is_member_or_collaborator }}
Expand Down
31 changes: 31 additions & 0 deletions .github/workflows/runtime_build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,37 @@ jobs:
if: steps.node_modules.outputs.cache-hit != 'true'
- run: yarn test ${{ matrix.params }} --ci --shard=${{ matrix.shard }}

# Hardcoded to improve parallelism
test-linter:
name: Test eslint-plugin-react-hooks
needs: [runtime_compiler_node_modules_cache]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: yarn
cache-dependency-path: |
yarn.lock
compiler/yarn.lock
- name: Restore cached node_modules
uses: actions/cache@v4
id: node_modules
with:
path: |
**/node_modules
key: runtime-and-compiler-node_modules-v6-${{ runner.arch }}-${{ runner.os }}-${{ hashFiles('yarn.lock', 'compiler/yarn.lock') }}
- name: Install runtime dependencies
run: yarn install --frozen-lockfile
if: steps.node_modules.outputs.cache-hit != 'true'
- name: Install compiler dependencies
run: yarn install --frozen-lockfile
working-directory: compiler
if: steps.node_modules.outputs.cache-hit != 'true'
- run: ./scripts/react-compiler/build-compiler.sh && ./scripts/react-compiler/link-compiler.sh
- run: yarn workspace eslint-plugin-react-hooks test

# ----- BUILD -----
build_and_lint:
name: yarn build and lint
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/runtime_discord_notify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ permissions: {}

jobs:
check_access:
if: ${{ github.event.pull_request.draft == false }}
runs-on: ubuntu-latest
outputs:
is_member_or_collaborator: ${{ steps.check_is_member_or_collaborator.outputs.is_member_or_collaborator }}
Expand Down
43 changes: 40 additions & 3 deletions .github/workflows/runtime_prereleases.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,17 @@ on:
description: 'Whether to notify the team on Discord when the release fails. Useful if this workflow is called from an automation.'
required: false
type: boolean
only_packages:
description: Packages to publish (space separated)
type: string
skip_packages:
description: Packages to NOT publish (space separated)
type: string
dry:
required: true
description: Dry run instead of publish?
type: boolean
default: true
secrets:
DISCORD_WEBHOOK_URL:
description: 'Discord webhook URL to notify on failure. Only required if enableFailureNotification is true.'
Expand Down Expand Up @@ -61,15 +72,41 @@ jobs:
if: steps.node_modules.outputs.cache-hit != 'true'
- run: yarn --cwd scripts/release install --frozen-lockfile
if: steps.node_modules.outputs.cache-hit != 'true'
- run: cp ./scripts/release/ci-npmrc ~/.npmrc
- run: |
GH_TOKEN=${{ secrets.GH_TOKEN }} scripts/release/prepare-release-from-ci.js --skipTests -r ${{ inputs.release_channel }} --commit=${{ inputs.commit_sha }}
cp ./scripts/release/ci-npmrc ~/.npmrc
scripts/release/publish.js --ci --tags ${{ inputs.dist_tag }}
- name: Check prepared files
run: ls -R build/node_modules
- if: '${{ inputs.only_packages }}'
name: 'Publish ${{ inputs.only_packages }}'
run: |
scripts/release/publish.js \
--ci \
--skipTests \
--tags=${{ inputs.dist_tag }} \
--onlyPackages=${{ inputs.only_packages }} ${{ (inputs.dry && '') || '\'}}
${{ inputs.dry && '--dry' || '' }}
- if: '${{ inputs.skip_packages }}'
name: 'Publish all packages EXCEPT ${{ inputs.skip_packages }}'
run: |
scripts/release/publish.js \
--ci \
--skipTests \
--tags=${{ inputs.dist_tag }} \
--skipPackages=${{ inputs.skip_packages }} ${{ (inputs.dry && '') || '\'}}
${{ inputs.dry && '--dry' || '' }}
- if: '${{ !(inputs.skip_packages && inputs.only_packages) }}'
name: 'Publish all packages'
run: |
scripts/release/publish.js \
--ci \
--tags=${{ inputs.dist_tag }} ${{ (inputs.dry && '') || '\'}}
${{ inputs.dry && '--dry' || '' }}
- name: Notify Discord on failure
if: failure() && inputs.enableFailureNotification == true
uses: tsickert/discord-webhook@86dc739f3f165f16dadc5666051c367efa1692f4
with:
webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }}
embed-author-name: "GitHub Actions"
embed-title: 'Publish of $${{ inputs.release_channel }} release failed'
embed-title: '[Runtime] Publish of ${{ inputs.release_channel }}@${{ inputs.dist_tag}} release failed'
embed-url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/attempts/${{ github.run_attempt }}
45 changes: 45 additions & 0 deletions .github/workflows/runtime_prereleases_manual.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,52 @@ on:
inputs:
prerelease_commit_sha:
required: true
only_packages:
description: Packages to publish (space separated)
type: string
skip_packages:
description: Packages to NOT publish (space separated)
type: string
dry:
required: true
description: Dry run instead of publish?
type: boolean
default: true
experimental_only:
type: boolean
description: Only publish to the experimental tag
default: false
force_notify:
description: Force a Discord notification?
type: boolean
default: false

permissions: {}

env:
TZ: /usr/share/zoneinfo/America/Los_Angeles

jobs:
notify:
if: ${{ inputs.force_notify || inputs.dry == false || inputs.dry == 'false' }}
runs-on: ubuntu-latest
steps:
- name: Discord Webhook Action
uses: tsickert/discord-webhook@86dc739f3f165f16dadc5666051c367efa1692f4
with:
webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }}
embed-author-name: ${{ github.event.sender.login }}
embed-author-url: ${{ github.event.sender.html_url }}
embed-author-icon-url: ${{ github.event.sender.avatar_url }}
embed-title: "⚠️ Publishing ${{ inputs.experimental_only && 'EXPERIMENTAL' || 'CANARY & EXPERIMENTAL' }} release ${{ (inputs.dry && ' (dry run)') || '' }}"
embed-description: |
```json
${{ toJson(inputs) }}
```
embed-url: https://github.com/facebook/react/actions/runs/${{ github.run_id }}

publish_prerelease_canary:
if: ${{ !inputs.experimental_only }}
name: Publish to Canary channel
uses: facebook/react/.github/workflows/runtime_prereleases.yml@main
permissions:
Expand All @@ -33,6 +70,9 @@ jobs:
# downstream consumers might still expect that tag. We can remove this
# after some time has elapsed and the change has been communicated.
dist_tag: canary,next
only_packages: ${{ inputs.only_packages }}
skip_packages: ${{ inputs.skip_packages }}
dry: ${{ inputs.dry }}
secrets:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -48,10 +88,15 @@ jobs:
# different versions of the same package, even if they use different
# dist tags.
needs: publish_prerelease_canary
# Ensures the job runs even if canary is skipped
if: always()
with:
commit_sha: ${{ inputs.prerelease_commit_sha }}
release_channel: experimental
dist_tag: experimental
only_packages: ${{ inputs.only_packages }}
skip_packages: ${{ inputs.skip_packages }}
dry: ${{ inputs.dry }}
secrets:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2 changes: 2 additions & 0 deletions .github/workflows/runtime_prereleases_nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ jobs:
release_channel: stable
dist_tag: canary,next
enableFailureNotification: true
dry: false
secrets:
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
Expand All @@ -43,6 +44,7 @@ jobs:
release_channel: experimental
dist_tag: experimental
enableFailureNotification: true
dry: false
secrets:
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/runtime_releases_from_npm_manual.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ jobs:
--tags=${{ inputs.tags }} \
--publishVersion=${{ inputs.version_to_publish }} \
--onlyPackages=${{ inputs.only_packages }} ${{ (inputs.dry && '') || '\'}}
${{ inputs.dry && '--dry'}}
${{ inputs.dry && '--dry' || '' }}
- if: '${{ inputs.skip_packages }}'
name: 'Publish all packages EXCEPT ${{ inputs.skip_packages }}'
run: |
Expand All @@ -119,7 +119,7 @@ jobs:
--tags=${{ inputs.tags }} \
--publishVersion=${{ inputs.version_to_publish }} \
--skipPackages=${{ inputs.skip_packages }} ${{ (inputs.dry && '') || '\'}}
${{ inputs.dry && '--dry'}}
${{ inputs.dry && '--dry' || '' }}
- name: Archive released package for debugging
uses: actions/upload-artifact@v4
with:
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/shared_stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ on:
- cron: '0 * * * *'
workflow_dispatch:

permissions: {}
permissions:
# https://github.com/actions/stale/tree/v9/?tab=readme-ov-file#recommended-permissions
issues: write
pull-requests: write

env:
TZ: /usr/share/zoneinfo/America/Los_Angeles
Expand Down
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ An Owner Stack is a string representing the components that are directly respons
* Updated `useId` to use valid CSS selectors, changing format from `:r123:` to `«r123»`. [#32001](https://github.com/facebook/react/pull/32001)
* Added a dev-only warning for null/undefined created in useEffect, useInsertionEffect, and useLayoutEffect. [#32355](https://github.com/facebook/react/pull/32355)
* Fixed a bug where dev-only methods were exported in production builds. React.act is no longer available in production builds. [#32200](https://github.com/facebook/react/pull/32200)
* Improved consistency across prod and dev to improve compatibility with Google Closure Complier and bindings [#31808](https://github.com/facebook/react/pull/31808)
* Improved consistency across prod and dev to improve compatibility with Google Closure Compiler and bindings [#31808](https://github.com/facebook/react/pull/31808)
* Improve passive effect scheduling for consistent task yielding. [#31785](https://github.com/facebook/react/pull/31785)
* Fixed asserts in React Native when passChildrenWhenCloningPersistedNodes is enabled for OffscreenComponent rendering. [#32528](https://github.com/facebook/react/pull/32528)
* Fixed component name resolution for Portal [#32640](https://github.com/facebook/react/pull/32640)
* Added support for beforetoggle and toggle events on the dialog element. #32479 [#32479](https://github.com/facebook/react/pull/32479)
* Added support for beforetoggle and toggle events on the dialog element. [#32479](https://github.com/facebook/react/pull/32479)

### React DOM
* Fixed double warning when the `href` attribute is an empty string [#31783](https://github.com/facebook/react/pull/31783)
Expand Down
4 changes: 2 additions & 2 deletions compiler/apps/playground/scripts/link-compiler.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ set -eo pipefail

HERE=$(pwd)

cd ../../packages/react-compiler-runtime && yarn --silent link && cd $HERE
cd ../../packages/babel-plugin-react-compiler && yarn --silent link && cd $HERE
cd ../../packages/react-compiler-runtime && yarn --silent link && cd "$HERE"
cd ../../packages/babel-plugin-react-compiler && yarn --silent link && cd "$HERE"

yarn --silent link babel-plugin-react-compiler
yarn --silent link react-compiler-runtime
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,8 @@ import {validateNoImpureFunctionsInRender} from '../Validation/ValidateNoImpureF
import {CompilerError} from '..';
import {validateStaticComponents} from '../Validation/ValidateStaticComponents';
import {validateNoFreezingKnownMutableFunctions} from '../Validation/ValidateNoFreezingKnownMutableFunctions';
import {inferMutationAliasingEffects} from '../Inference/InferMutationAliasingEffects';
import {inferMutationAliasingRanges} from '../Inference/InferMutationAliasingRanges';

export type CompilerPipelineValue =
| {kind: 'ast'; name: string; value: CodegenFunction}
Expand Down Expand Up @@ -227,15 +229,27 @@ function runWithEnvironment(
analyseFunctions(hir);
log({kind: 'hir', name: 'AnalyseFunctions', value: hir});

const fnEffectErrors = inferReferenceEffects(hir);
if (env.isInferredMemoEnabled) {
if (fnEffectErrors.length > 0) {
CompilerError.throw(fnEffectErrors[0]);
if (!env.config.enableNewMutationAliasingModel) {
const fnEffectErrors = inferReferenceEffects(hir);
if (env.isInferredMemoEnabled) {
if (fnEffectErrors.length > 0) {
CompilerError.throw(fnEffectErrors[0]);
}
}
log({kind: 'hir', name: 'InferReferenceEffects', value: hir});
} else {
const mutabilityAliasingErrors = inferMutationAliasingEffects(hir);
log({kind: 'hir', name: 'InferMutationAliasingEffects', value: hir});
if (env.isInferredMemoEnabled) {
if (mutabilityAliasingErrors.isErr()) {
throw mutabilityAliasingErrors.unwrapErr();
}
}
}
log({kind: 'hir', name: 'InferReferenceEffects', value: hir});

validateLocalsNotReassignedAfterRender(hir);
if (!env.config.enableNewMutationAliasingModel) {
validateLocalsNotReassignedAfterRender(hir);
}

// Note: Has to come after infer reference effects because "dead" code may still affect inference
deadCodeElimination(hir);
Expand All @@ -249,8 +263,21 @@ function runWithEnvironment(
pruneMaybeThrows(hir);
log({kind: 'hir', name: 'PruneMaybeThrows', value: hir});

inferMutableRanges(hir);
log({kind: 'hir', name: 'InferMutableRanges', value: hir});
if (!env.config.enableNewMutationAliasingModel) {
inferMutableRanges(hir);
log({kind: 'hir', name: 'InferMutableRanges', value: hir});
} else {
const mutabilityAliasingErrors = inferMutationAliasingRanges(hir, {
isFunctionExpression: false,
});
log({kind: 'hir', name: 'InferMutationAliasingRanges', value: hir});
if (env.isInferredMemoEnabled) {
if (mutabilityAliasingErrors.isErr()) {
throw mutabilityAliasingErrors.unwrapErr();
}
validateLocalsNotReassignedAfterRender(hir);
}
}

if (env.isInferredMemoEnabled) {
if (env.config.assertValidMutableRanges) {
Expand All @@ -277,7 +304,10 @@ function runWithEnvironment(
validateNoImpureFunctionsInRender(hir).unwrap();
}

if (env.config.validateNoFreezingKnownMutableFunctions) {
if (
env.config.validateNoFreezingKnownMutableFunctions ||
env.config.enableNewMutationAliasingModel
) {
validateNoFreezingKnownMutableFunctions(hir).unwrap();
}
}
Expand Down
Loading