Conversation
|
It's odd that we see some warnings in the unit test on this PR but not when I did the React 18.3 upgrade. |
|
Indeed. Maybe they tinkered with some feature flags between 18.3 and 19 beta. |
|
If I understand correctly, many of the test warnings seem to be because of how Ariakit retrieves the ref prop, it falls back to and that yields a warning in React 19. At the same time, I assume Ariakit will stay compatible with older React versions where @diegohaz @DaniGuardiola any idea if we're planning to do anything about these warnings in Reakit? |
|
@diegohaz could Ariakit possibly use some sort of React version detection instead and use it to determine what to do, rather than this fallback system that creates warnings? |
|
That part was updated to avoid those warnings (ref: https://x.com/diegohaz/status/1780794744534163888). But apparently it's not enough? I still don't know the idiomatic way to fix that. |
|
@diegohaz @DaniGuardiola I actually tried updating to the latest Ariakit version in this branch and it seems to resolve those warnings 👍 Dani has started working on the update in #60992, and here we have one more reason to move it forward. |
|
Updated to the RC. Hoping to have some time next week to play more thoroughly with it. |
|
Size Change: +15.1 kB (+0.2%) Total Size: 7.68 MB
ℹ️ View Unchanged
|
|
Fixed some tests, most of them were pretty straightforward. At first glance, the mobile tests seem to be failing because RN uses an old React version - we'll need a RN update to support React 19. |
|
FYI, Framer Motion will be a blocker for now. More context: #60975 |
|
React 19.0.0-rc.0. is out.
Source: https://x.com/acdlite/status/1797668537349328923 I also wonder if facebook/react#29585 could be an issue for the block editor. Potentially, it can affect block re-ordering, but it will need some testing. |
|
Seems like we'll need to wait a bit for now, re https://x.com/sophiebits/status/1801663976973209620?s=46 and https://tkdodo.eu/blog/react-19-and-suspense-a-drama-in-3-acts Happy to retry this once the release gets unblocked once more. |
|
The suspense issue doesn’t affect our codebase, so we could try the latest RC. |
|
Updated to the latest RC. We'll still need to wait for RN support: |
|
See callstack/react-native-testing-library#1698 for RN support for React 19 (hopefully H1 2025) |
8424167 to
63ac11d
Compare
|
A few updates as I've been experimenting with making React 19 work in the meantime:
|
|
I'm experimenting with using |
IIRC, we can also use suspense around components loading assets on demand and defer rendering. It could help render different previews. |
|
The |
6a9ada3 to
0ae8c13
Compare
Thanks for the heads up. A few updates:
Haven't done thorough testing, but it could be in a testable state at this point. Next steps: There are some failing e2e tests, we need to investigate why and fix the cause. Note: React Native is still a blocker: callstack/react-native-testing-library#1698 |
|
React v19 is now stable - https://react.dev/blog/2024/12/05/react-19. It seems that the biggest blocker here would be React Native. |
31f99c3 to
da65652
Compare
Before just blindly adding Some new APIs are enhancements or replacements for what we already use. We can ditch I'm not sure about all the "actions" APIs: |
|
What do we lose by exposing them? I think if we're to maintain However, if you ask me, the right solution to this issue is to just retire |
I think we're returning to this subject every year :) Here's the general convo - #62939. |
@tyxla I tried to isolate the iframe loading changes to their own PR. Turns out it's also possible with React 18: #76314. The only difference is the need to auto-delete the duplicate The performance tests in this isolated PR don't show any significant changes for Another big change is successfully split off the main PR 👍 |
I'll actually add all the extra exports so that we can discuss specifics, but generally exposing all new APIs, even the ones clearly related to RSC, feels pointless. |
You can now see the actual new APIs in f31d2be. Everything that's new in I have biggest doubts about the functions like |
I see what you mean, and I agree they don't necessarily add much value. I still think it is possible to consume them on a package level, and that could potentially be useful for someone. I'm fine with keeping them exported if it doesn't come with any negatives, even if it's mostly for consistency with the public React APIs. And I still maintain the perspective that |
What?
Contains work to add React 19 support.
Not intended to be merged directly, but rather to serve as a container for experimentation with all necessary updates.
See #71336 for tracking the migration effort.
Why?
Keeping up to date with our latest framework dependencies and offering all the latest features.
How?
Bumping deps and working on various fixes to ensure React 19 compat. Don't merge.
Testing Instructions
Testing Instructions for Keyboard
Same as above
Screenshots or screencast
None