Skip to content

Remove useId semantics from View Transition name generation #33094

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

Merged
merged 1 commit into from
May 6, 2025

Conversation

sebmarkbage
Copy link
Collaborator

Originally I thought it was important that SSR used the same View Transition name as the client so that the Fizz runtime could emit those names and then the client could pick up and take over. However, I no longer believe that approach is feasible. Instead, the names can be generated only during that particular animation.

Therefore we can simplify the auto name assignment to not have to consider the hydration.

@sebmarkbage sebmarkbage requested a review from rickhanlonii May 1, 2025 22:28
@github-actions github-actions bot added the React Core Team Opened by a member of the React Core Team label May 1, 2025
@react-sizebot
Copy link

react-sizebot commented May 1, 2025

Comparing: 0db8db1...7b1d366

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name +/- Base Current +/- gzip Base gzip Current gzip
oss-stable/react-dom/cjs/react-dom.production.js = 6.68 kB 6.68 kB +0.05% 1.83 kB 1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js = 528.27 kB 527.81 kB = 93.14 kB 93.08 kB
oss-experimental/react-dom/cjs/react-dom.production.js = 6.69 kB 6.69 kB +0.05% 1.83 kB 1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js = 633.90 kB 633.20 kB = 111.33 kB 111.16 kB
facebook-www/ReactDOM-prod.classic.js = 671.68 kB 666.83 kB = 117.77 kB 116.91 kB
facebook-www/ReactDOM-prod.modern.js = 661.96 kB 657.11 kB = 116.21 kB 115.34 kB
oss-experimental/react-dom/unstable_server-external-runtime.js = 9.60 kB 9.36 kB = 2.54 kB 2.51 kB
oss-experimental/eslint-plugin-react-hooks/cjs/eslint-plugin-react-hooks.development.js = 2,121.55 kB 2,019.79 kB = 319.93 kB 302.68 kB
oss-stable-semver/eslint-plugin-react-hooks/cjs/eslint-plugin-react-hooks.development.js = 2,121.37 kB 2,019.61 kB = 319.91 kB 302.66 kB
oss-stable/eslint-plugin-react-hooks/cjs/eslint-plugin-react-hooks.development.js = 2,121.37 kB 2,019.61 kB = 319.91 kB 302.66 kB
oss-experimental/eslint-plugin-react-hooks/cjs/eslint-plugin-react-hooks.production.js = 2,117.10 kB 2,015.20 kB = 318.98 kB 301.72 kB
oss-stable-semver/eslint-plugin-react-hooks/cjs/eslint-plugin-react-hooks.production.js = 2,116.93 kB 2,015.02 kB = 318.95 kB 301.70 kB
oss-stable/eslint-plugin-react-hooks/cjs/eslint-plugin-react-hooks.production.js = 2,116.93 kB 2,015.02 kB = 318.95 kB 301.70 kB
oss-experimental/eslint-plugin-react-hooks/index.js = 0.56 kB 0.37 kB = 0.35 kB 0.24 kB
oss-stable-semver/eslint-plugin-react-hooks/index.js = 0.56 kB 0.37 kB = 0.35 kB 0.24 kB
oss-stable/eslint-plugin-react-hooks/index.js = 0.56 kB 0.37 kB = 0.35 kB 0.24 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name +/- Base Current +/- gzip Base gzip Current gzip
facebook-www/ReactDOM-profiling.classic.js = 741.33 kB 736.49 kB = 127.08 kB 126.29 kB
facebook-www/ReactDOM-profiling.modern.js = 733.28 kB 728.44 kB = 125.79 kB 125.00 kB
facebook-www/ReactDOMTesting-prod.classic.js = 686.08 kB 681.23 kB = 121.45 kB 120.60 kB
facebook-www/ReactDOMTesting-prod.modern.js = 676.36 kB 671.51 kB = 119.88 kB 119.00 kB
facebook-www/ReactDOM-prod.classic.js = 671.68 kB 666.83 kB = 117.77 kB 116.91 kB
facebook-www/ReactDOM-prod.modern.js = 661.96 kB 657.11 kB = 116.21 kB 115.34 kB
oss-experimental/react-dom/unstable_server-external-runtime.js = 9.60 kB 9.36 kB = 2.54 kB 2.51 kB
oss-experimental/eslint-plugin-react-hooks/cjs/eslint-plugin-react-hooks.development.js = 2,121.55 kB 2,019.79 kB = 319.93 kB 302.68 kB
oss-stable-semver/eslint-plugin-react-hooks/cjs/eslint-plugin-react-hooks.development.js = 2,121.37 kB 2,019.61 kB = 319.91 kB 302.66 kB
oss-stable/eslint-plugin-react-hooks/cjs/eslint-plugin-react-hooks.development.js = 2,121.37 kB 2,019.61 kB = 319.91 kB 302.66 kB
oss-experimental/eslint-plugin-react-hooks/cjs/eslint-plugin-react-hooks.production.js = 2,117.10 kB 2,015.20 kB = 318.98 kB 301.72 kB
oss-stable-semver/eslint-plugin-react-hooks/cjs/eslint-plugin-react-hooks.production.js = 2,116.93 kB 2,015.02 kB = 318.95 kB 301.70 kB
oss-stable/eslint-plugin-react-hooks/cjs/eslint-plugin-react-hooks.production.js = 2,116.93 kB 2,015.02 kB = 318.95 kB 301.70 kB
oss-experimental/eslint-plugin-react-hooks/index.js = 0.56 kB 0.37 kB = 0.35 kB 0.24 kB
oss-stable-semver/eslint-plugin-react-hooks/index.js = 0.56 kB 0.37 kB = 0.35 kB 0.24 kB
oss-stable/eslint-plugin-react-hooks/index.js = 0.56 kB 0.37 kB = 0.35 kB 0.24 kB

Generated by 🚫 dangerJS against 7b1d366

Copy link
Member

@rickhanlonii rickhanlonii left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just a global ID now right?

@sebmarkbage sebmarkbage merged commit 845d937 into facebook:main May 6, 2025
239 checks passed
@sebmarkbage
Copy link
Collaborator Author

Well they're both global ids but now it's just an incrementing counter.

github-actions bot pushed a commit that referenced this pull request May 6, 2025
Originally I thought it was important that SSR used the same View
Transition name as the client so that the Fizz runtime could emit those
names and then the client could pick up and take over. However, I no
longer believe that approach is feasible. Instead, the names can be
generated only during that particular animation.

Therefore we can simplify the auto name assignment to not have to
consider the hydration.

DiffTrain build for [845d937](845d937)
github-actions bot pushed a commit that referenced this pull request May 6, 2025
Originally I thought it was important that SSR used the same View
Transition name as the client so that the Fizz runtime could emit those
names and then the client could pick up and take over. However, I no
longer believe that approach is feasible. Instead, the names can be
generated only during that particular animation.

Therefore we can simplify the auto name assignment to not have to
consider the hydration.

DiffTrain build for [845d937](845d937)
sebmarkbage added a commit that referenced this pull request May 14, 2025
This is a partial revert of #33094. It's true that we don't need the
server and client ViewTransition names to line up. However the server
does need to be able to generate deterministic names for itself. The
cheapest way to do that is using the useId algorithm. When it's used by
the server, the client needs to also materialize an ID even if it
doesn't use it.
github-actions bot pushed a commit that referenced this pull request May 14, 2025
This is a partial revert of #33094. It's true that we don't need the
server and client ViewTransition names to line up. However the server
does need to be able to generate deterministic names for itself. The
cheapest way to do that is using the useId algorithm. When it's used by
the server, the client needs to also materialize an ID even if it
doesn't use it.

DiffTrain build for [96eb84e](96eb84e)
github-actions bot pushed a commit that referenced this pull request May 14, 2025
This is a partial revert of #33094. It's true that we don't need the
server and client ViewTransition names to line up. However the server
does need to be able to generate deterministic names for itself. The
cheapest way to do that is using the useId algorithm. When it's used by
the server, the client needs to also materialize an ID even if it
doesn't use it.

DiffTrain build for [96eb84e](96eb84e)
github-actions bot pushed a commit to code/lib-react that referenced this pull request May 15, 2025
…ook#33200)

This is a partial revert of facebook#33094. It's true that we don't need the
server and client ViewTransition names to line up. However the server
does need to be able to generate deterministic names for itself. The
cheapest way to do that is using the useId algorithm. When it's used by
the server, the client needs to also materialize an ID even if it
doesn't use it.

DiffTrain build for [96eb84e](facebook@96eb84e)
github-actions bot pushed a commit to code/lib-react that referenced this pull request May 15, 2025
…ook#33200)

This is a partial revert of facebook#33094. It's true that we don't need the
server and client ViewTransition names to line up. However the server
does need to be able to generate deterministic names for itself. The
cheapest way to do that is using the useId algorithm. When it's used by
the server, the client needs to also materialize an ID even if it
doesn't use it.

DiffTrain build for [96eb84e](facebook@96eb84e)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed React Core Team Opened by a member of the React Core Team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants