Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
853 commits
Select commit Hold shift + click to select a range
57b16e3
[lint] Remove experimental gating useEffectEvent rules (#34660)
jackpope Sep 30, 2025
cf88408
[eprh] Temporarily disable compiler rules (#34649)
poteto Sep 30, 2025
5667a41
Bump next prerelease version numbers (#34639)
eps1lon Oct 1, 2025
7bccdbd
Fix "Consecutive" Event Logs in Performance Track (#34659)
sebmarkbage Oct 1, 2025
2f0649a
[Fizz] Remove `nonce` option from resume-and-prerender APIs (#34664)
eps1lon Oct 1, 2025
1f460f3
[DevTools] Fix host instance highlighting (#34661)
eps1lon Oct 1, 2025
548235d
Enable React performance tracks in Canary (#34665)
eps1lon Oct 1, 2025
1bd1f01
Ship partial-prerendering APIs to Canary (#34633)
eps1lon Oct 1, 2025
bbc2d59
Traverse down an updated tree even if it has no passive effects in pr…
sebmarkbage Oct 1, 2025
67e24bc
Improve lint error messages for useEffectEvent (#34669)
jackpope Oct 1, 2025
aef8b1b
19.2 changelog (#34655)
eps1lon Oct 1, 2025
7f9d997
Land enableHiddenSubtreeInsertionEffectCleanup (#34372)
rickhanlonii Oct 1, 2025
8618113
Bump scheduler version (#34671)
eps1lon Oct 1, 2025
ae74234
[eprh] Allow compiler rules to be opted-in but not in the preset (#34…
poteto Oct 1, 2025
79ca5ae
Bump next prerelease version numbers (#34674)
eps1lon Oct 1, 2025
f7254ef
[playground] Persist open tabs on compiler error (#34673)
EugeneChoi4 Oct 2, 2025
d74f061
[Fiber] Clean up ViewTransition when it fails to start (#34676)
sebmarkbage Oct 2, 2025
a757cb7
Fix DevTools fixture crash due to usage of renamed APIs (#34682)
eps1lon Oct 2, 2025
bc828bf
[DevTools] Recommend React Performance tracks if supported when Timel…
eps1lon Oct 2, 2025
57d5a59
[compiler] enablePreserveMemo treats manual deps as non-nullable (#34…
josephsavona Oct 2, 2025
e4a27db
[DevTools] Defer Suspense tab to 19.3.0-canary (#34688)
eps1lon Oct 2, 2025
4a28227
[DevTools] Inspect the Initial Paint when inspecting a Root (#34454)
eps1lon Oct 2, 2025
70b52be
[compiler] `@enablePreserveExistingMemoizationGuarantees` on by defau…
josephsavona Oct 2, 2025
ced705d
[DevTools] Always include the root in the timeline and select it by d…
sebmarkbage Oct 2, 2025
2e68dc7
[DevTools] Give a distinct color to the root (#34690)
sebmarkbage Oct 2, 2025
c825f03
[DevTools] Hide State and Props in the Sidebar for Suspense (#34630)
sebmarkbage Oct 2, 2025
b56907d
[DevTools] Show Props as Read-only for Suspense/Activity but below (#…
sebmarkbage Oct 2, 2025
df3562d
Fix DevTools regression tests (#34696)
eps1lon Oct 2, 2025
7d9f876
[Fizz] Detatch boundary after flushing segment with boundary (#34694)
gnoff Oct 2, 2025
f89ed71
[DevTools] Track whether to auto select when new timeline entries com…
sebmarkbage Oct 2, 2025
6a8a8ef
[Flight] Add `<Activity>` (#34697)
eps1lon Oct 2, 2025
289f070
[playground] Improve DiffEditor scrollbar + view (#34691)
EugeneChoi4 Oct 2, 2025
5cc3d49
[eprh] Add compiler rules to recommended preset (#34675)
poteto Oct 2, 2025
056a586
[fixtures] Update eslint fixture lockfiles (#34699)
poteto Oct 2, 2025
26b177b
[eprh] Fix `recommended` config for flat config compatibility (#34700)
poteto Oct 2, 2025
19f65ff
[eprh] Remove NoUnusedOptOutDirectives (#34703)
poteto Oct 2, 2025
e866b1d
Add getRootNode to fabric fragment instance (#34544)
jackpope Oct 3, 2025
74dee8e
Add getClientRects to fabric fragment instance (#34545)
jackpope Oct 3, 2025
0eebd37
[playground] Config panel quality fixes (#34611)
EugeneChoi4 Oct 3, 2025
02bd445
[DevTools] Double clicking the root should jump to the beginning of t…
sebmarkbage Oct 3, 2025
85c427d
[compiler] Remove @babel/plugin-proposal-private-methods (#34715)
josephsavona Oct 3, 2025
f24d3bb
Update readme for eprh (#34714)
josephsavona Oct 3, 2025
71753ac
[eprh] Remove hermes-parser (#34719)
poteto Oct 3, 2025
d6eb735
[compiler] Update for Zod v3/v4 compatibility (#34717)
josephsavona Oct 3, 2025
614a945
React DevTools 7.0.0 (#34692)
eps1lon Oct 3, 2025
4fdf7cf
[ci] Fix runtime_prereleases (#34722)
poteto Oct 3, 2025
bc23561
[ci] Fix incorrect filtering logic for prereleases (#34725)
poteto Oct 3, 2025
d3f84a4
[DevTools] Bump version for extensions (#34723)
hoxyq Oct 3, 2025
a2329c1
[eprh] 6.1.1 changelog (#34726)
poteto Oct 3, 2025
0e79784
[DevTools] Use documentElement to override cmd+F (#34734)
sebmarkbage Oct 5, 2025
62ff1e6
Revert "[DevTools] Always include the root in the timeline and select…
hoxyq Oct 5, 2025
3b2a398
[DevTools] Bump version of react-devtools-core for react-devtools (#3…
hoxyq Oct 5, 2025
1be3ce9
[Fiber] Bail out of diffing wide objects and arrays (#34742)
eps1lon Oct 5, 2025
c786258
[eprh] Fix config type not being exported correctly (#34746)
poteto Oct 6, 2025
b65e6fc
Revert [eprh] Remove hermes-parser (#34747)
poteto Oct 6, 2025
6a8c7fb
Release `<ViewTransition />` to Canary (#34712)
eps1lon Oct 7, 2025
a4eb2df
Release Fragment refs to Canary (#34720)
eps1lon Oct 7, 2025
3025aa3
[Flight] Don't serialize toJSON in Debug path and omit wide arrays (#…
sebmarkbage Oct 7, 2025
1384ea8
[compiler] Update release script for latest tag (#34763)
poteto Oct 7, 2025
a664f5f
[compiler] Fix incorrect version name (#34764)
poteto Oct 7, 2025
69b4cb8
[ci] Allow dry run (#34765)
poteto Oct 7, 2025
5c15c1c
[ci] Dry run with debug mode (#34767)
poteto Oct 7, 2025
848e0e3
[eprh] Update plugin config to be compatible with flat and legacy (#3…
poteto Oct 7, 2025
9724e3e
[DevTools] Gate SuspenseTab (#34754)
hoxyq Oct 8, 2025
7568e71
[eprh] Prepare for 7.0.0 (#34757)
poteto Oct 8, 2025
3e1b34d
[compiler] Setup RecommendedLatest preset (#34782)
poteto Oct 8, 2025
4b3e662
[compiler] Add VoidUseMemo rule to RecommendedLatest (#34783)
poteto Oct 8, 2025
91e5c3d
fix(devtools): remove duplicated "Display density" field in General s…
Anatole-Godard Oct 9, 2025
06fcc8f
[playground] Fix syntax error from crashing the Compiler playground (…
ianduvall Oct 9, 2025
8454a32
devtools: fix ellipsis truncation for key values (#34796)
sophiebits Oct 10, 2025
d446597
[Flight] Fix preload `as` attribute for stylesheets (#34760)
unstubbable Oct 10, 2025
ead9218
[Flight] Avoid unnecessary indirection when serializing debug info (#…
unstubbable Oct 10, 2025
1d68bce
[Fiber] Don't unhide a node if a direct parent offscreen is still hid…
sebmarkbage Oct 12, 2025
93d4458
[Fiber] Ensure `useEffectEvent` reads latest values in `forwardRef` a…
eps1lon Oct 13, 2025
b467c6e
[DevTools] Explicitly say which id to scroll to and only once (#34823)
sebmarkbage Oct 13, 2025
34b1567
[DevTools] Ignore suspense boundaries, without visual representation,…
sebmarkbage Oct 13, 2025
e2ce64a
[DevTools] Don't show the root as being non-compliant (#34827)
sebmarkbage Oct 13, 2025
d7215b4
[DevTools] Preserve the original index when sorting suspended by (#34…
sebmarkbage Oct 13, 2025
026abea
[Flight] Respect displayName of Promise instances on the server (#34825)
sebmarkbage Oct 13, 2025
83ea655
[DevTools] Group consecutive suspended by rows by the same name (#34830)
sebmarkbage Oct 13, 2025
7b971c0
Current behavior for excluding Component render with unchanged props …
eps1lon Oct 13, 2025
47905a7
Fix/add missing else branch for renders with no props change (#34837)
hoxyq Oct 13, 2025
b9ec735
[Perf Tracks]: Clear potentially large measures (#34803)
hoxyq Oct 13, 2025
03a62b2
[Flight] Look for moved debugInfo when logging component performance …
sebmarkbage Oct 14, 2025
73507ec
[DevTools] Exclude Suspense boundaries in hidden Activity (#34756)
eps1lon Oct 14, 2025
19b7167
[Flight] Forward the current environment when forwarding I/O entries …
sebmarkbage Oct 14, 2025
56e8469
[Flight] Exclude RSC Stream if the stream resolves in a task (#34838)
sebmarkbage Oct 14, 2025
5f2b571
[DevTools] Filter out built-in stack frames (#34828)
sebmarkbage Oct 14, 2025
e798465
[playground] Allow accordion tabs to open on error (#34844)
EugeneChoi4 Oct 14, 2025
6cfc9c1
[DevTools] Don't measure fallbacks when suspended (#34850)
sebmarkbage Oct 15, 2025
751edd6
[DevTools] Measure text nodes (#34851)
sebmarkbage Oct 15, 2025
5747cad
[DevTools] Don't hide overflow rectangles (#34852)
sebmarkbage Oct 15, 2025
6773248
[DevTools] Track whether a boundary is currently suspended and make t…
sebmarkbage Oct 15, 2025
77b2f90
[DevTools] Attempt at a better "unique suspender" text (#34854)
sebmarkbage Oct 15, 2025
1873ad7
[DevTools] The bridge event types should only be defined in one direc…
sebmarkbage Oct 15, 2025
e096403
[compiler] Infer types for properties after holes in array patterns (…
josephsavona Oct 15, 2025
0fbb9b3
[DevTools] Don't highlight on timeline (#34861)
sebmarkbage Oct 15, 2025
903366b
[DevTools] Don't select on hover (#34860)
sebmarkbage Oct 15, 2025
85f415e
[compiler] Fix fbt for the ∞th time (#34865)
josephsavona Oct 15, 2025
7385d1f
[DevTools] Add inspection button to Suspense tab (#34867)
sebmarkbage Oct 16, 2025
7bd8716
[DevTools] Don't try to load anonymous or empty urls (#34869)
sebmarkbage Oct 16, 2025
4e00747
[DevTools] Don't pluralize if already plural (#34870)
sebmarkbage Oct 16, 2025
03ba0c7
[DevTools] Include some sub-pixel precision in rects (#34873)
sebmarkbage Oct 16, 2025
d8aa94b
Only capture stacks for up to 10 frames for Owner Stacks (#34864)
eps1lon Oct 16, 2025
dc1becd
[DevTools] Remove steps title from scrubber (#34878)
sebmarkbage Oct 16, 2025
93f8593
[DevTools] Adjust the rects size by one pixel smaller (#34876)
sebmarkbage Oct 16, 2025
ed1351c
[compiler] improve zod v3 backwards compat (#34877)
henryqdineen Oct 16, 2025
5418d8b
Fix changelog link (#34879)
rickhanlonii Oct 16, 2025
2381ecc
[ESLint] Disallow passing effect event down when inlined as a prop (#…
jf-eirinha Oct 16, 2025
0e32da7
Add MIT license header to feature flag utility script (#34833)
pet210702 Oct 16, 2025
7f5ea1b
[compiler] More useMemo validation (#34868)
josephsavona Oct 16, 2025
1324e1b
[compiler] Cleanup and enable validateNoVoidUseMemo (#34882)
josephsavona Oct 16, 2025
adbc32d
[compiler] More fbt compatibility (#34887)
josephsavona Oct 17, 2025
c35f6a3
[compiler] Optimize props spread for common cases (#34900)
josephsavona Oct 17, 2025
dc485c7
[Flight] Fix detached `ArrayBuffer` error when streaming typed arrays…
unstubbable Oct 17, 2025
ef88c58
[DevTools] Tweak the rects design and create multi-environment color …
sebmarkbage Oct 17, 2025
724e7bf
[DevTools] Repeat the "name" if there's no short description in group…
sebmarkbage Oct 17, 2025
f970d5f
[DevTools] Highlight the rect when the corresponding timeline bean is…
sebmarkbage Oct 17, 2025
423c44b
[DevTools] Don't highlight the root rect if no roots has unique suspe…
sebmarkbage Oct 17, 2025
a083344
[DevTools] Compute environment names for the timeline (#34892)
sebmarkbage Oct 17, 2025
3a66917
[DevTools] Assign a different color and label based on environment (#…
sebmarkbage Oct 17, 2025
40c7a7f
[DevTools] Use same Suspense naming heuristics when reconnecting (#34…
eps1lon Oct 18, 2025
ec7d9a7
Resolve the .default export of a React.lazy as the canonical value (#…
sebmarkbage Oct 19, 2025
bf11d2f
[DevTools] Infer name from stack if it's the generic "lazy" name (#34…
sebmarkbage Oct 19, 2025
58bdc0b
[Flight] Ignore bound-anonymous-fn resources as they're not considere…
sebmarkbage Oct 19, 2025
2cfb221
[Flight] Allow passing DEV only startTime as an option (#34912)
sebmarkbage Oct 19, 2025
b485f7c
[DevTools] Don't attach filtered IO to grandparent Suspense (#34916)
eps1lon Oct 19, 2025
f6a4882
[DevTools] Show the Suspense boundary name in the rect if there's no …
sebmarkbage Oct 20, 2025
1440f4f
[DevTools] BuiltInCallSite should have padding-left (#34922)
sebmarkbage Oct 20, 2025
21272a6
Lower case "rsc stream" debug info (#34921)
sebmarkbage Oct 20, 2025
02c80f0
[DevTools] fix: dont ship source maps for css in prod builds (#34913)
hoxyq Oct 20, 2025
aaad0ea
[DevTools] chore: read from build/COMMIT_SHA fle as fallback for comm…
hoxyq Oct 20, 2025
2bcbf25
[compiler] Fix false positive for useMemo reassigning context vars (#…
josephsavona Oct 20, 2025
1d36646
[DevTools] Text layout fixes for stack traces with badges (#34925)
eps1lon Oct 20, 2025
3cde211
React DevTools 7.0.0 -> 7.0.1 (#34926)
hoxyq Oct 20, 2025
031595d
[DevTools] Title color tweak (#34927)
sebmarkbage Oct 20, 2025
ea0c17b
[compiler] loosen computed key restriction for compiler (#34902)
nathanmarks Oct 20, 2025
613cf80
[DevTools] chore: add useSyncExternalStore examples to shell (#34932)
hoxyq Oct 21, 2025
39c6545
Fix indices of hooks in devtools when using useSyncExternalStore (#34…
blazejkustra Oct 21, 2025
71b3a03
[forgive] Various fixes to prepare for internal sync (#34928)
poteto Oct 21, 2025
6b344c7
Switch to `export =` to fix eslint-plugin-react-hooks types (#34949)
karlhorky Oct 22, 2025
bbb7a1f
[eprh] Type `configs.flat` more strictly (#34950)
poteto Oct 22, 2025
723b25c
Add hint for Node.js cjs-module-lexer for eslint-plugin-react-hook ty…
karlhorky Oct 22, 2025
eb2f784
Add hint for Node.js cjs-module-lexer for eslint-plugin-react-hook ty…
karlhorky Oct 22, 2025
6160773
[playground] Refactor ConfigEditor to use <Activity> component (#34958)
0xlau Oct 23, 2025
e0654be
[eprh] Update changelog for 7.0.1 (#34964)
poteto Oct 23, 2025
c91783c
[eprh] Bump ReactVersions for next version (#34965)
poteto Oct 23, 2025
09056ab
[Compiler] Improve error for calculate in render useEffect validation…
jorge-cab Oct 23, 2025
408b38e
[compiler] Improve display of errors on multi-line expressions (#34963)
josephsavona Oct 23, 2025
ba0590f
[playground] Upgrade playwright (#34991)
EugeneChoi4 Oct 27, 2025
d3d0ce3
[script] Add yarn generate-changelog (#34962)
poteto Oct 27, 2025
0d721b6
[Flight] Don't hang after resolving cyclic references (#34988)
unstubbable Oct 27, 2025
90817f8
[rn] delete the legacy renderers from the sync (#34946)
rickhanlonii Oct 27, 2025
dd53a94
[rn] enabled disableLegacyMode everywhere (#34947)
rickhanlonii Oct 27, 2025
69f3e9d
[generate-changelog] Add `--format` option (#34992)
poteto Oct 27, 2025
17b3765
[generate-changelog] Refactor (#34993)
poteto Oct 27, 2025
b4455a6
[react-dom] Include all Node.js APIs in Bun entrypoint for `/server` …
RiskyMH Oct 27, 2025
fb0d960
[tests] disableLegacyMode in test-renderer (#35002)
rickhanlonii Oct 28, 2025
0fa3250
[Flight] Clone subsequent I/O nodes if it's resolved more than once (…
sebmarkbage Oct 28, 2025
4f93170
[Flight] Cache the value if we visit the same I/O or Promise multiple…
sebmarkbage Oct 29, 2025
0a5fb67
[DevTools] Sort suspense timeline by end time instead of just documen…
sebmarkbage Oct 29, 2025
3a0ab8a
[DevTools] Synchronize Scroll Position Between Suspense Tab and Main …
sebmarkbage Oct 30, 2025
6fb7754
[DevTools] Render selected outline on top of every other rect (#35012)
sebmarkbage Oct 30, 2025
c9ddee7
[DevTools] Reset forced states when changing component filters (#34929)
eps1lon Oct 31, 2025
26cf280
Switch the default revealOrder to "forwards" and tail "hidden" on Sus…
sebmarkbage Oct 31, 2025
488d88b
Render children passed to "backwards" SuspenseList in reverse mount o…
sebmarkbage Oct 31, 2025
561ee24
[Fizz] Push halted await to the owner stack for late-arriving I/O inf…
unstubbable Nov 1, 2025
67f7d47
[Flight] Fix debug info filtering to include later resolved I/O (#35036)
unstubbable Nov 3, 2025
edd05f1
Add fragment handles to children of FragmentInstances (#34935)
jackpope Nov 3, 2025
f646e8f
[Flight] Fix `hasReadable` flag in Node.js clients' debug channel (#3…
unstubbable Nov 4, 2025
d000261
[Tracks] Annotate devtools.performanceIssue for Cascading Updates in …
huntie Nov 4, 2025
8f8b336
[eslint] Fix useEffectEvent checks in component syntax (#35041)
jbrown215 Nov 4, 2025
986323f
[Fiber] SuspenseList with "hidden" tail row should "catch" suspense (…
sebmarkbage Nov 5, 2025
c308cb5
Disable enablePostpone flag in experimental (#31042)
sebmarkbage Nov 5, 2025
dd048c3
Clean up enablePostpone Experiment (#35048)
sebmarkbage Nov 5, 2025
0ba2f01
Rename <Suspense unstable_expectedLoadTime> to <Suspense defer> and i…
sebmarkbage Nov 5, 2025
fa767da
Remove unstable_expectedLoadTime option (#35051)
sebmarkbage Nov 5, 2025
5a2205b
Update bug report template for eslint plugin label (#34959)
kachkaev Nov 5, 2025
1a31a81
Escape View Transition Name Strings as base64 (#35060)
sebmarkbage Nov 6, 2025
37b089a
Don't skip content in visible offscreen trees for View Transitions (#…
sebmarkbage Nov 6, 2025
a44e750
Store instance handles in an internal map behind flag (#35053)
jackpope Nov 6, 2025
38bdda1
Don't skip content in visible offscreen trees for Gesture View Transi…
sebmarkbage Nov 7, 2025
1e986f5
[Fizz] Unify prerender only fields to save a field (#35067)
sebmarkbage Nov 7, 2025
fa50caf
[Fizz] Unify preamble only fields to save a field (#35068)
sebmarkbage Nov 7, 2025
a10ff9c
Upgrade devtools dependency update-notifier to 5.x (#31655)
stianjensen Nov 7, 2025
717e708
Fix: Errors should not escape a hidden Activity (#35074)
acdlite Nov 7, 2025
5a9921b
[DevTools] Apply Activity slice filter when double clicking Activity …
eps1lon Nov 8, 2025
6362b5c
[DevTools] Special case the selected root outline (#35071)
sebmarkbage Nov 9, 2025
c83be7d
[Fizz] Simplify createSuspenseBoundary path (#35087)
sebmarkbage Nov 9, 2025
5268492
Fix: Activity should hide portal contents (#35091)
acdlite Nov 10, 2025
be48396
Remove Dead Code in WWW JS
facebook-github-bot Nov 10, 2025
21c1d51
[DevTools] Don't attempt to draw bounding box if inspected element is…
eps1lon Nov 10, 2025
ce4054e
[DevTools] Measure when reconnecting Suspense (#35098)
eps1lon Nov 10, 2025
01fb328
[compiler] Prevent overriding a derivationEntry on effect mutation an…
jorge-cab Nov 10, 2025
6347c6d
[compiler] Fix false negatives and add data flow tree to compiler err…
jorge-cab Nov 10, 2025
7296120
[compiler] Update ValidateNoDerivedComputationsInEffects_exp to log t…
jorge-cab Nov 10, 2025
f76c361
[compiler] Switch to track setStates by aliasing and id instead of id…
jorge-cab Nov 10, 2025
92ac4e8
[compiler] Don't validate when effect cleanup function depends on eff…
jorge-cab Nov 10, 2025
100fc4a
[compiler] Prevent local state source variables from depending on oth…
jorge-cab Nov 10, 2025
04ee54c
[tests] add more portal activity tests (#35095)
rickhanlonii Nov 11, 2025
db8273c
[compiler] Update test snap to include fixture comment (#35100)
jorge-cab Nov 11, 2025
5e94655
[compiler] _exp version of ValidateNoDerivedComputationsInEffects tak…
jorge-cab Nov 11, 2025
8c15edd
[DevTools] Send root unmount as a regular removal operation (#35107)
eps1lon Nov 11, 2025
1ea46df
[DevTools] Batch updates when updating component filters (#35093)
eps1lon Nov 11, 2025
bbe3f4d
[flags] disableLegacyMode in native-fb (#35120)
rickhanlonii Nov 12, 2025
3a495ae
[compiler] source location validator (#35109)
nathanmarks Nov 13, 2025
093b324
[react-dom] Batch updates from `resize` until next frame (#35117)
eps1lon Nov 13, 2025
93fc574
[Flight] Fix broken byte stream parsing caused by buffer detachment (…
unstubbable Nov 13, 2025
de97ef9
[Compiler] Don't count a setState in the dependency array of the effe…
jorge-cab Nov 14, 2025
257b033
[Compiler] Avoid capturing global setStates for no-derived-computatio…
jorge-cab Nov 14, 2025
21f2824
[compiler] Allow ref access in callbacks passed to event handler prop…
kolvian Nov 14, 2025
dbf2538
[compiler] Repro for false positive mutation of a value derived from …
josephsavona Nov 14, 2025
19b769f
[compiler] Fix for inferring props-derived-value as mutable (#35140)
josephsavona Nov 14, 2025
647e133
[compiler] fix bad rebase from sapling (#35145)
josephsavona Nov 14, 2025
fb2177c
[Flight] Fix pending chunks count for streams & async iterables in DE…
unstubbable Nov 14, 2025
45bc3c9
[Flight] Reduce risk of maximum call stack exceeded when emitting asy…
eps1lon Nov 17, 2025
7df96b0
[Flight] Complete list of Node.js' internal Promise awaits (#35161)
eps1lon Nov 17, 2025
b315a0f
[compiler] Fix for destructuring with mixed declaration/reassignment …
josephsavona Nov 17, 2025
d6b1a05
[compiler] Extract reusable logic for control dominators (#35146)
josephsavona Nov 17, 2025
b946a24
[compiler] Improve setState-in-effects rule to account for ref-gated …
josephsavona Nov 17, 2025
ea4899e
[compiler][snap] Support pattern of files to test as CLI argument (#3…
josephsavona Nov 17, 2025
7f1a085
[DevTools] Show list of named Activities in Suspense tab (#35092)
eps1lon Nov 18, 2025
194c12d
[DevTools] Name root "Transition" when focusing on Activity (#35108)
eps1lon Nov 18, 2025
0972e23
[compiler] Consider setter from useOptimistic non-reactive (#35141)
rickhanlonii Nov 18, 2025
eb89912
Add expertimental `optimisticKey` behind a flag (#35162)
sebmarkbage Nov 18, 2025
8ac5f4e
Fix form status reset when component state is updated (#34075)
eps1lon Nov 19, 2025
7ee974d
[compiler] Prevent innaccurate derivation recording on FunctionExpres…
jorge-cab Nov 20, 2025
7d67591
[compiler] Remove useState argument constraint. no-derived-computatio…
jorge-cab Nov 20, 2025
4cf770d
[compiler][poc] Quick experiment with SSR-optimization pass (#35102)
josephsavona Nov 20, 2025
50e7ec8
[compiler] Deprecate noEmit, add outputMode (#35112)
josephsavona Nov 20, 2025
bcc3fd8
[compiler] Implement exhaustive dependency checking for manual memoiz…
josephsavona Nov 21, 2025
df75af4
[compiler] Auto-fix for non-exhaustive deps (#34471)
josephsavona Nov 21, 2025
40b4a5b
[compiler] ValidateExhaustiveDeps disallows unnecessary non-reactive …
josephsavona Nov 21, 2025
fd524fe
[DevTools] hotkey to start/stop profiling (#35160)
emily8rown Nov 21, 2025
fca172e
[compiler] Ignore ESLint suppressions when ValidateMemoDeps enabled (…
josephsavona Nov 24, 2025
c9a8cf3
[compiler] Allow nonreactive stable types as extraneous deps (#35185)
josephsavona Nov 24, 2025
454e01e
[compiler] Allow manual dependencies to have different optionality th…
josephsavona Nov 24, 2025
67c1487
[compiler] Allow extraneous non-reactive locals (#35190)
josephsavona Nov 24, 2025
9599e7a
[compiler] Adjustments to exhaustive deps messages, disable the lint …
josephsavona Nov 24, 2025
16e16ec
[compiler] Script to enable a feature by default and update tests (#3…
josephsavona Nov 24, 2025
d39a1d6
[compiler] Distingush optional/extraneous deps (#35204)
josephsavona Nov 25, 2025
ddff354
[compiler] Enable validateExhaustiveMemoizationDependencies by defaul…
josephsavona Nov 25, 2025
fb18ad3
[compiler] Exhaustive deps: extra tests, improve diagnostic (#35213)
josephsavona Nov 25, 2025
627b583
[compiler][snap] Fix for filter mode with nested files, 'error.' pref…
josephsavona Nov 25, 2025
74fa166
[DevTools] Move "Back to full tree view" into Activity list item (#35…
eps1lon Nov 26, 2025
6875c3e
[test] Only run tests overriding fallback and error states in support…
eps1lon Nov 27, 2025
1721e73
[test] Fix Error Proxy in Node.js 21+ (#35227)
eps1lon Nov 29, 2025
0af4fd8
[test] Update ESLint e2e tests (#35233)
eps1lon Dec 1, 2025
09f0569
[compiler] Extend setState in effect validation to useEffectEvent (#3…
jackpope Dec 1, 2025
4789a4a
Jahnavi23-lab
Dec 2, 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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .codesandbox/ci.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"packages": ["packages/react", "packages/react-dom", "packages/react-server-dom-webpack", "packages/scheduler"],
"buildCommand": "download-build-in-codesandbox-ci",
"node": "18",
"node": "20",
"publishDirectory": {
"react": "build/oss-experimental/react",
"react-dom": "build/oss-experimental/react-dom",
Expand Down
3 changes: 3 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,6 @@ packages/react-devtools-shared/src/hooks/__tests__/__source__/__untransformed__/
packages/react-devtools-shell/dist
packages/react-devtools-timeline/dist
packages/react-devtools-timeline/static

# Imported third-party Flow types
flow-typed/
31 changes: 24 additions & 7 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -468,13 +468,14 @@ module.exports = {
files: ['packages/react-server-dom-webpack/**/*.js'],
globals: {
__webpack_chunk_load__: 'readonly',
__webpack_get_script_filename__: 'readonly',
__webpack_require__: 'readonly',
},
},
{
files: ['packages/react-server-dom-turbopack/**/*.js'],
globals: {
__turbopack_load__: 'readonly',
__turbopack_load_by_url__: 'readonly',
__turbopack_require__: 'readonly',
},
},
Expand All @@ -496,6 +497,7 @@ module.exports = {
'packages/react-devtools-shared/src/devtools/views/**/*.js',
'packages/react-devtools-shared/src/hook.js',
'packages/react-devtools-shared/src/backend/console.js',
'packages/react-devtools-shared/src/backend/fiber/renderer.js',
'packages/react-devtools-shared/src/backend/shared/DevToolsComponentStackFrame.js',
'packages/react-devtools-shared/src/frontend/utils/withPermissionsCheck.js',
],
Expand All @@ -504,6 +506,7 @@ module.exports = {
__IS_FIREFOX__: 'readonly',
__IS_EDGE__: 'readonly',
__IS_NATIVE__: 'readonly',
__IS_INTERNAL_MCP_BUILD__: 'readonly',
__IS_INTERNAL_VERSION__: 'readonly',
chrome: 'readonly',
},
Expand All @@ -514,6 +517,14 @@ module.exports = {
__IS_INTERNAL_VERSION__: 'readonly',
},
},
{
files: ['packages/react-devtools-*/**/*.js'],
excludedFiles: '**/__tests__/**/*.js',
plugins: ['eslint-plugin-react-hooks-published'],
rules: {
'react-hooks-published/rules-of-hooks': ERROR,
},
},
{
files: ['packages/eslint-plugin-react-hooks/src/**/*'],
extends: ['plugin:@typescript-eslint/recommended'],
Expand Down Expand Up @@ -544,13 +555,10 @@ module.exports = {
},

globals: {
$Call: 'readonly',
$ElementType: 'readonly',
$Flow$ModuleRef: 'readonly',
$FlowFixMe: 'readonly',
$Keys: 'readonly',
$NonMaybeType: 'readonly',
$PropertyType: 'readonly',
$ReadOnly: 'readonly',
$ReadOnlyArray: 'readonly',
$ArrayBufferView: 'readonly',
Expand All @@ -559,11 +567,13 @@ module.exports = {
ConsoleTask: 'readonly', // TOOD: Figure out what the official name of this will be.
ReturnType: 'readonly',
AnimationFrameID: 'readonly',
WeakRef: 'readonly',
// For Flow type annotation. Only `BigInt` is valid at runtime.
bigint: 'readonly',
BigInt: 'readonly',
BigInt64Array: 'readonly',
BigUint64Array: 'readonly',
CacheType: 'readonly',
Class: 'readonly',
ClientRect: 'readonly',
CopyInspectedElementPath: 'readonly',
Expand All @@ -575,15 +585,19 @@ module.exports = {
$AsyncIterator: 'readonly',
Iterator: 'readonly',
AsyncIterator: 'readonly',
IntervalID: 'readonly',
IteratorResult: 'readonly',
JSONValue: 'readonly',
JSResourceReference: 'readonly',
mixin$Animatable: 'readonly',
MouseEventHandler: 'readonly',
NavigateEvent: 'readonly',
PerformanceMeasureOptions: 'readonly',
PropagationPhases: 'readonly',
PropertyDescriptor: 'readonly',
React$AbstractComponent: 'readonly',
PropertyDescriptorMap: 'readonly',
Proxy$traps: 'readonly',
React$Component: 'readonly',
React$ComponentType: 'readonly',
React$Config: 'readonly',
React$Context: 'readonly',
React$Element: 'readonly',
Expand All @@ -604,19 +618,21 @@ module.exports = {
symbol: 'readonly',
SyntheticEvent: 'readonly',
SyntheticMouseEvent: 'readonly',
SyntheticPointerEvent: 'readonly',
Thenable: 'readonly',
TimeoutID: 'readonly',
WheelEventHandler: 'readonly',
FinalizationRegistry: 'readonly',
Exclude: 'readonly',
Omit: 'readonly',
Keyframe: 'readonly',
PropertyIndexedKeyframes: 'readonly',
KeyframeAnimationOptions: 'readonly',
GetAnimationsOptions: 'readonly',
Animatable: 'readonly',
ScrollTimeline: 'readonly',
EventListenerOptionsOrUseCapture: 'readonly',
FocusOptions: 'readonly',
OptionalEffectTiming: 'readonly',

spyOnDev: 'readonly',
spyOnDevAndProd: 'readonly',
Expand All @@ -634,5 +650,6 @@ module.exports = {
AsyncLocalStorage: 'readonly',
async_hooks: 'readonly',
globalThis: 'readonly',
navigation: 'readonly',
},
};
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/compiler_bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ body:
options:
- label: React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)
- label: babel-plugin-react-compiler (build issue installing or using the Babel plugin)
- label: eslint-plugin-react-compiler (build issue installing or using the eslint plugin)
- label: eslint-plugin-react-hooks (build issue installing or using the eslint plugin)
- label: react-compiler-healthcheck (build issue installing or using the healthcheck script)
- type: input
attributes:
Expand Down
44 changes: 44 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: React CI Pipeline

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
build-and-test:
runs-on: ubuntu-latest

strategy:
matrix:
node-version: [18.x, 20.x]

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- name: Install Yarn
run: npm install --global yarn

- name: Install dependencies
run: yarn install --frozen-lockfile

- name: Lint code
run: yarn lint

- name: Run tests
run: yarn test --ci

- name: Build packages
run: yarn build

- name: build docker images
if: github.event_name == 'push'
run: |
docker build -t myapp:latest .
2 changes: 2 additions & 0 deletions .github/workflows/compiler_discord_notify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ 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 }}
steps:
- run: echo ${{ github.event.pull_request.author_association }}
- name: Check is member or collaborator
id: check_is_member_or_collaborator
if: ${{ github.event.pull_request.author_association == 'MEMBER' || github.event.pull_request.author_association == 'COLLABORATOR' }}
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/compiler_playground.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,6 @@ jobs:
key: playwright-browsers-v6-${{ runner.arch }}-${{ runner.os }}-${{ steps.playwright_version.outputs.playwright_version }}
- run: npx playwright install --with-deps chromium
if: steps.cache_playwright_browsers.outputs.cache-hit != 'true'
- run: npx playwright install-deps
if: steps.cache_playwright_browsers.outputs.cache-hit == 'true'
- run: CI=true yarn test
- run: ls -R test-results
if: '!cancelled()'
Expand Down
11 changes: 10 additions & 1 deletion .github/workflows/compiler_prereleases.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ on:
tag_version:
required: false
type: string
dry_run:
required: false
type: boolean
secrets:
NPM_TOKEN:
required: true
Expand Down Expand Up @@ -55,7 +58,13 @@ jobs:
key: compiler-node_modules-v6-${{ runner.arch }}-${{ runner.os }}-${{ hashFiles('compiler/yarn.lock') }}
- run: yarn install --frozen-lockfile
if: steps.node_modules.outputs.cache-hit != 'true'
- name: Publish packages to npm
- if: inputs.dry_run == true
name: Publish packages to npm (dry run)
run: |
cp ./scripts/release/ci-npmrc ~/.npmrc
scripts/release/publish.js --frfr --debug --ci --versionName=${{ inputs.version_name }} --tag=${{ inputs.dist_tag }} ${{ inputs.tag_version && format('--tagVersion={0}', inputs.tag_version) || '' }}
- if: inputs.dry_run != true
name: Publish packages to npm
run: |
cp ./scripts/release/ci-npmrc ~/.npmrc
scripts/release/publish.js --frfr --ci --versionName=${{ inputs.version_name }} --tag=${{ inputs.dist_tag }} ${{ inputs.tag_version && format('--tagVersion={0}', inputs.tag_version) || '' }}
4 changes: 4 additions & 0 deletions .github/workflows/compiler_prereleases_manual.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ on:
tag_version:
required: false
type: string
dry_run:
required: false
type: boolean

permissions: {}

Expand All @@ -33,5 +36,6 @@ jobs:
dist_tag: ${{ inputs.dist_tag }}
version_name: ${{ inputs.version_name }}
tag_version: ${{ inputs.tag_version }}
dry_run: ${{ inputs.dry_run }}
secrets:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
1 change: 1 addition & 0 deletions .github/workflows/compiler_prereleases_nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,6 @@ jobs:
release_channel: experimental
dist_tag: experimental
version_name: '0.0.0'
dry_run: false
secrets:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
49 changes: 49 additions & 0 deletions .github/workflows/devtools_discord_notify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: (DevTools) Discord Notify

on:
pull_request_target:
types: [opened, ready_for_review]
paths:
- packages/react-devtools**
- .github/workflows/devtools_**.yml

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 }}
steps:
- run: echo ${{ github.event.pull_request.author_association }}
- name: Check is member or collaborator
id: check_is_member_or_collaborator
if: ${{ github.event.pull_request.author_association == 'MEMBER' || github.event.pull_request.author_association == 'COLLABORATOR' }}
run: echo "is_member_or_collaborator=true" >> "$GITHUB_OUTPUT"

check_maintainer:
if: ${{ needs.check_access.outputs.is_member_or_collaborator == 'true' || needs.check_access.outputs.is_member_or_collaborator == true }}
needs: [check_access]
uses: facebook/react/.github/workflows/shared_check_maintainer.yml@main
permissions:
# Used by check_maintainer
contents: read
with:
actor: ${{ github.event.pull_request.user.login }}

notify:
if: ${{ needs.check_maintainer.outputs.is_core_team == 'true' }}
needs: check_maintainer
runs-on: ubuntu-latest
steps:
- name: Discord Webhook Action
uses: tsickert/discord-webhook@86dc739f3f165f16dadc5666051c367efa1692f4
with:
webhook-url: ${{ secrets.DEVTOOLS_DISCORD_WEBHOOK_URL }}
embed-author-name: ${{ github.event.pull_request.user.login }}
embed-author-url: ${{ github.event.pull_request.user.html_url }}
embed-author-icon-url: ${{ github.event.pull_request.user.avatar_url }}
embed-title: '#${{ github.event.number }} (+${{github.event.pull_request.additions}} -${{github.event.pull_request.deletions}}): ${{ github.event.pull_request.title }}'
embed-description: ${{ github.event.pull_request.body }}
embed-url: ${{ github.event.pull_request.html_url }}
4 changes: 2 additions & 2 deletions .github/workflows/devtools_regression_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: react-devtools
path: build/devtools.tgz
path: build/devtools
if-no-files-found: error
# Simplifies getting the extension for local testing
- name: Archive chrome extension
Expand Down Expand Up @@ -201,5 +201,5 @@ jobs:
- uses: actions/upload-artifact@v4
with:
name: screenshots
path: ./tmp/screenshots
path: ./tmp/playwright-artifacts
if-no-files-found: warn
Loading
Loading