Skip to content

Conversation

@acdlite
Copy link
Collaborator

@acdlite acdlite commented Apr 18, 2024

Previously, the refs property of a class component instance was read-only by user code — only React could write to it, and until/unless a string ref was used, it pointed to a shared empty object that was frozen in dev to prevent userspace mutations.

Because string refs are deprecated, we want users to be able to codemod all their string refs to callback refs. The safest way to do this is to output a callback ref that assigns to this.refs.

So to support this, we need to make this.refs writable by userspace.

@acdlite acdlite requested review from gnoff and sebmarkbage April 18, 2024 16:41
@facebook-github-bot facebook-github-bot added CLA Signed React Core Team Opened by a member of the React Core Team labels Apr 18, 2024
@react-sizebot
Copy link

react-sizebot commented Apr 18, 2024

Comparing: 0061ca6...7e688c6

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.min.js = 168.91 kB 168.90 kB = 52.94 kB 52.93 kB
oss-experimental/react-dom/cjs/react-dom.production.min.js = 170.57 kB 170.56 kB = 53.44 kB 53.43 kB
facebook-www/ReactDOM-prod.classic.js = 590.83 kB 590.81 kB = 103.91 kB 103.90 kB
facebook-www/ReactDOM-prod.modern.js = 566.65 kB 566.62 kB = 100.10 kB 100.09 kB
test_utils/ReactAllWarnings.js Deleted 64.44 kB 0.00 kB Deleted 16.10 kB 0.00 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name +/- Base Current +/- gzip Base gzip Current gzip
oss-experimental/react/cjs/react.production.js = 37.16 kB 37.04 kB = 10.42 kB 10.41 kB
oss-stable/react/cjs/react.production.js = 35.51 kB 35.39 kB = 10.07 kB 10.06 kB
oss-stable-semver/react/cjs/react.production.js = 35.48 kB 35.36 kB = 10.04 kB 10.03 kB
test_utils/ReactAllWarnings.js Deleted 64.44 kB 0.00 kB Deleted 16.10 kB 0.00 kB

Generated by 🚫 dangerJS against 7e688c6

Previously, the `refs` property of a class component instance was
read-only by user code — only React could write to it, and until/unless
a string ref was used, it pointed to a shared empty object that was
frozen in dev to prevent userspace mutations.

Because string refs are deprecated, we want users to be able to codemod
all their string refs to callback refs. The safest way to do this is to
output a callback ref that assigns to `this.refs`.

So to support this, we need to make `this.refs` writable by userspace.
@acdlite acdlite force-pushed the make-inst-refs-writable branch from 773bb4a to 7e688c6 Compare April 18, 2024 16:58
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.

sweet

@acdlite acdlite merged commit ea24427 into facebook:main Apr 18, 2024
github-actions bot pushed a commit that referenced this pull request Apr 18, 2024
Previously, the `refs` property of a class component instance was
read-only by user code — only React could write to it, and until/unless
a string ref was used, it pointed to a shared empty object that was
frozen in dev to prevent userspace mutations.

Because string refs are deprecated, we want users to be able to codemod
all their string refs to callback refs. The safest way to do this is to
output a callback ref that assigns to `this.refs`.

So to support this, we need to make `this.refs` writable by userspace.

DiffTrain build for [ea24427](ea24427)
bigfootjon pushed a commit that referenced this pull request Apr 18, 2024
Previously, the `refs` property of a class component instance was
read-only by user code — only React could write to it, and until/unless
a string ref was used, it pointed to a shared empty object that was
frozen in dev to prevent userspace mutations.

Because string refs are deprecated, we want users to be able to codemod
all their string refs to callback refs. The safest way to do this is to
output a callback ref that assigns to `this.refs`.

So to support this, we need to make `this.refs` writable by userspace.

DiffTrain build for commit ea24427.
kassens added a commit that referenced this pull request Apr 19, 2024
kassens added a commit that referenced this pull request Apr 19, 2024
Reverts #28867

It broke some tests, reverting until we figure out why to avoid having
too much delay in the sync.
github-actions bot pushed a commit that referenced this pull request Apr 19, 2024
Reverts #28867

It broke some tests, reverting until we figure out why to avoid having
too much delay in the sync.

DiffTrain build for commit f5ce642.
github-actions bot pushed a commit that referenced this pull request Apr 19, 2024
Reverts #28867

It broke some tests, reverting until we figure out why to avoid having
too much delay in the sync.

DiffTrain build for [f5ce642](f5ce642)
acdlite added a commit that referenced this pull request Apr 23, 2024
Previously, the `refs` property of a class component instance was
read-only by user code — only React could write to it, and until/unless
a string ref was used, it pointed to a shared empty object that was
frozen in dev to prevent userspace mutations.

Because string refs are deprecated, we want users to be able to codemod
all their string refs to callback refs. The safest way to do this is to
output a callback ref that assigns to `this.refs`.

So to support this, we need to make `this.refs` writable by userspace.
acdlite added a commit that referenced this pull request Apr 23, 2024
Previously, the `refs` property of a class component instance was
read-only by user code — only React could write to it, and until/unless
a string ref was used, it pointed to a shared empty object that was
frozen in dev to prevent userspace mutations.

Because string refs are deprecated, we want users to be able to codemod
all their string refs to callback refs. The safest way to do this is to
output a callback ref that assigns to `this.refs`.

So to support this, we need to make `this.refs` writable by userspace.
acdlite added a commit that referenced this pull request Apr 23, 2024
Previously, the `refs` property of a class component instance was
read-only by user code — only React could write to it, and until/unless
a string ref was used, it pointed to a shared empty object that was
frozen in dev to prevent userspace mutations.

Because string refs are deprecated, we want users to be able to codemod
all their string refs to callback refs. The safest way to do this is to
output a callback ref that assigns to `this.refs`.

So to support this, we need to make `this.refs` writable by userspace.
Akshato07 pushed a commit to Akshato07/-Luffy that referenced this pull request Feb 20, 2025
Reverts facebook/react#28867

It broke some tests, reverting until we figure out why to avoid having
too much delay in the sync.

DiffTrain build for commit facebook/react@f5ce642.
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