React 15.6 Umbrella #9398

Closed
flarnie opened this Issue Apr 10, 2017 · 16 comments

Comments

Projects
None yet
9 participants
@flarnie
Contributor

flarnie commented Apr 10, 2017

Update: We just shipped 15.6.0 of react & react-dom! :)

Still ongoing;

  • Fixes for React.addons and the 15.6.0 release of those modules.
  • Follow-up work

React.addons fixes:

  • Create a build step for UMD builds of addons
  • Why doesn’t TransitionGroup have a deprecation warning? Let’s add if we forgot it. Make sure the wording says “moved” since moving is all that happened.
    • note: we should point to a specific version of the separate module, to make this future-proof against API changes to the transition group modules. Fixed in #9937
  • Update add-on versions in 15.6 and master branches.
  • Fix #9689 and #9765 (fixed by #9946 ?)
  • Merge #9638
  • #9766
  • Release new versions of add-ons
  • Cherry-pick all these changes into 15.6

Other related items:

  • Document the process for deprecating an API in React Moved to #10057
  • Can we remove junk code from PropTypes prod build? It doesn't use bundle-collapser so it ships all those method names (e.g. “fbjs/lib/invariant”). This is fixable if you add “-p bundle-collapser/plugin” to browserify call. Additionally, there seems to be some junk invariant() code which is easy to fix if we just turn this into an inlined error. https://unpkg.com/prop-types@15.5.6/prop-types.min.js
  • Make sure deprecations are on master too

Follow-up issues:

  • Find a solution for #8575 (we did merge this after all)
    • Which unblocks adding the tests from e29871e which depend on 'inputValueTracking'
  • Further improvements to React warnings in general, specifically to adress #9466

Steps we went through for React 15.6.0;

Preparing the RC:

Done! RC was released.
  • Write a proper changelog for 15.5.x releases and 15.6 (#9443)
  • Cherry-pick React.createMixin deprecation (Cherry-pick #8853)
  • Maybe cherry-pick #9185? Needs confirmation this is the right way.
  • Cherry-pick #9302 if it's merged by then.
  • Cherry-pick this fix: #9451
  • Cherry-pick #9584
  • Deduplicate "unknown DOM property" warning so that people don't stay on React 15.1 (see discussion in #9466) — We have not reached a consensus here and will instead revisit the whole warning system in the future
  • Make sure we are using PropTypes.checkPropTypes rather than inlining it (like we did in 15.5)
  • Deprecate React.DOM Factories (Merge and cherry-pick #8356)
    • Include a codemod from React.DOM.stuff to React.createElement('stuff'
  • Merge/cherry-pick #8575 :)
  • Downgrade console.error to console.warn for deprecation notices
    • Create deprecation 'warning' helper. (#9650) and (#9754)
    • Update all deprecation warnings on master branch. (#9650)
    • Sync master branch(@flarnie: moved to 'prepping final release' section)
    • Update deprecation in prop-types library and check other add-ons for deprecation warnings. Release new versions. (@flarnie - moved to addons section)
    • Update deprecation warnings on 15.6 branch (#9753)
    • Update add-on versions in 15.6 and master branches. (@flarnie - moved to addons section)
  • Add specific version numbers to deprecation messages (“In React 16.0, ...”) (#9768 and #9771)
  • Add a link to warning messages. Make it clear that those are not broken code but something that will be removed in React 16. Link to a dedicated page (a gist? a blog post? gists are nice because they have comments) but make sure that page touches on common confusion points:
    • What should lib maintainers do? Dependency or peer? (#9768, #9781, and #9771)
    • What does this mean for context API? (#9768, #9781, and #9771)
    • Is the warning firing on my code? Or on a dependency? How do I know? (#9768, #9781, and #9771)
    • What exactly will happen in React 16? (#9768, #9781, and #9771)
    • How to automatically migrate my code? (#9768, #9781 and #9771)
    • Are we encouraging people to stop using createClass? What about PropTypes? Are we deprecating them as in “they're bad” (nope) or are we just moving them (yes)? Make it clearer. (#9768, #9781, and #9771)
    • Use fb.me for links (just like we always did in deprecations). This lets us update links in the future. (#9768, #9781, and #9771)
  • Cherry-pick 646e786 to 15.6-dev (#9771)
  • Verify that any changes landed in 15-stable were also cherry-picked to 15.6-dev. (#9889)
  • Cherry-pick the fix for #9569 (@gaearon: I don't think we need to)
  • Make sure deprecations are on master too (@flarnie: moved to 'prepping final release' section.)
  • Change react-dom-factories package to be named that consistently, and avoid react-addons-dom-factories. (#9780)
  • Cherry pick #9806 (double check with @nhunzaker)
  • Release react-dom-factories on npm.

Testing the RC:

Done! [React 15.6.0 is out.](https://github.com/facebook/react/releases/tag/v15.6.0) - [X] Inspect the UMD builds - [x] Share RC and proposed release date with library authors several weeks in advance - [x] Publish release notes early

Preparing the final release:

Done! [React 15.6.0 is out.](https://github.com/facebook/react/releases/tag/v15.6.0) - [x] Update https://github.com/facebook/react/blob/master/scripts/print-warnings/print-warnings.js (https://github.com/facebook/react/pull/9756) - [x] Share RC with library authors and get folks to try it. - [x] Post a target date for the release. - [x] Triage any issues reported with RC. - [x] https://github.com/facebook/react/issues/9830 - [x] Sync master branch (to test the deprecation downgrade internally at FB)

Doing the release:

  • Release on a Mon-Thur. day

@aweary aweary referenced this issue in facebook/prop-types Apr 10, 2017

Closed

Remove unused code from production build #16

@aweary

This comment has been minimized.

Show comment
Hide comment
@aweary

aweary Apr 10, 2017

Member

Deprecate React.DOM Factories

For reference, there is existing work on this at #8356

Can we remove junk code from PropTypes prod build? It doesn't use bundle-collapser so it ships all those method names (e.g. “fbjs/lib/invariant”). This is fixable if you add “-p bundle-collapser/plugin” to browserify call. Additionally, there seems to be some junk invariant() code which is easy to fix if we just turn this into an inlined error. https://unpkg.com/prop-types@15.5.6/prop-types.min.js

I created an issue for this in the new prop-types repo: facebook/prop-types#16

Member

aweary commented Apr 10, 2017

Deprecate React.DOM Factories

For reference, there is existing work on this at #8356

Can we remove junk code from PropTypes prod build? It doesn't use bundle-collapser so it ships all those method names (e.g. “fbjs/lib/invariant”). This is fixable if you add “-p bundle-collapser/plugin” to browserify call. Additionally, there seems to be some junk invariant() code which is easy to fix if we just turn this into an inlined error. https://unpkg.com/prop-types@15.5.6/prop-types.min.js

I created an issue for this in the new prop-types repo: facebook/prop-types#16

@timdorr

This comment has been minimized.

Show comment
Hide comment
@timdorr

timdorr Apr 11, 2017

Are we encouraging people to stop using createClass? What about PropTypes? Are we deprecating them as in “they're bad” (nope) or are we just moving them (yes)? Make it clearer.

You'll want to be crystal clear about this. In other projects where they've removed stuff like this, it usually means a death sentence for those features (Responders in Rails come to mind). The important part is noting that those features aren't going away, just how you access them is changing. Maybe drop the "depreciation" wording and replace it with "moving"? And that's not because you're not deprecating those imports, but it's about the kind of message you want to send.

timdorr commented Apr 11, 2017

Are we encouraging people to stop using createClass? What about PropTypes? Are we deprecating them as in “they're bad” (nope) or are we just moving them (yes)? Make it clearer.

You'll want to be crystal clear about this. In other projects where they've removed stuff like this, it usually means a death sentence for those features (Responders in Rails come to mind). The important part is noting that those features aren't going away, just how you access them is changing. Maybe drop the "depreciation" wording and replace it with "moving"? And that's not because you're not deprecating those imports, but it's about the kind of message you want to send.

@markspolakovs

This comment has been minimized.

Show comment
Hide comment
@markspolakovs

markspolakovs Apr 11, 2017

Contributor

👍 on not calling it "deprecation". The common intuition for "deprecated" is "stuff that we're no longer maintaining and only keeping around to avoid API incompatibilities, and you shouldn't use it anymore" (see https://en.wikipedia.org/wiki/Deprecation#Software_deprecation). "Moving" sounds a bit better.

Contributor

markspolakovs commented Apr 11, 2017

👍 on not calling it "deprecation". The common intuition for "deprecated" is "stuff that we're no longer maintaining and only keeping around to avoid API incompatibilities, and you shouldn't use it anymore" (see https://en.wikipedia.org/wiki/Deprecation#Software_deprecation). "Moving" sounds a bit better.

@jeremenichelli

This comment has been minimized.

Show comment
Hide comment
@jeremenichelli

jeremenichelli Apr 11, 2017

Contributor

Awesome suggestions by @flarnie, happy to see that more of the bullet points touch communication topics which are way more difficult to embrace than technical stuff sometimes when managing a library that a lot of people uses.

Though I like warnings, I don't know if I prefer the red and error look of a deprecation to catch better the developer's attention.

Contributor

jeremenichelli commented Apr 11, 2017

Awesome suggestions by @flarnie, happy to see that more of the bullet points touch communication topics which are way more difficult to embrace than technical stuff sometimes when managing a library that a lot of people uses.

Though I like warnings, I don't know if I prefer the red and error look of a deprecation to catch better the developer's attention.

@aweary

This comment has been minimized.

Show comment
Hide comment
@aweary

aweary Apr 11, 2017

Member

Awesome suggestions by @flarnie, happy to see that more of the bullet points touch communication topics which are way more difficult to embrace than technical stuff sometimes when managing a library that a lot of people uses.

I completely agree. I think it's especially difficult since most of the React team's core decisions are made via internal discussions at FB, and there hasn't been a sustained effort to communicate these to the OSS community.

I would love to see some work towards making this less opaque (maybe start publishing meeting notes again?), both for consumers, library maintainers, and contributors to the project.

Member

aweary commented Apr 11, 2017

Awesome suggestions by @flarnie, happy to see that more of the bullet points touch communication topics which are way more difficult to embrace than technical stuff sometimes when managing a library that a lot of people uses.

I completely agree. I think it's especially difficult since most of the React team's core decisions are made via internal discussions at FB, and there hasn't been a sustained effort to communicate these to the OSS community.

I would love to see some work towards making this less opaque (maybe start publishing meeting notes again?), both for consumers, library maintainers, and contributors to the project.

@timdorr

This comment has been minimized.

Show comment
Hide comment
@timdorr

timdorr Apr 11, 2017

Though I like warnings, I don't know if I prefer the red and error look of a deprecation to catch better the developer's attention.

This is a complete hack and totally should not be what actually is done here, but you can sorta do that with console message styles:

screen shot 2017-04-11 at 12 05 26 pm

Silly, but it could be an idea to pursue to make them visually distinct.

timdorr commented Apr 11, 2017

Though I like warnings, I don't know if I prefer the red and error look of a deprecation to catch better the developer's attention.

This is a complete hack and totally should not be what actually is done here, but you can sorta do that with console message styles:

screen shot 2017-04-11 at 12 05 26 pm

Silly, but it could be an idea to pursue to make them visually distinct.

@gaearon

This comment has been minimized.

Show comment
Hide comment
@gaearon

gaearon Apr 11, 2017

Member

Unfortunately won't work in other browsers or Node afaik.

Member

gaearon commented Apr 11, 2017

Unfortunately won't work in other browsers or Node afaik.

@gaearon gaearon referenced this issue Apr 13, 2017

Closed

React 16 Umbrella ☂️ (and 15.5) #8854

117 of 120 tasks complete

flarnie added a commit to flarnie/react-codemod that referenced this issue Apr 20, 2017

Add codemod for 'React.DOM.div' -> 'React.createElement("div"'
Since we are deprecating the 'React.DOM.*' factories,[1] we want to
provide a codemod so that it's easier for folks to upgrade their code.

This will include an option to use 'React.createFactory' instead of
'React.createElement' in case there is a use case where that is
preferred.

There is one use of `React.DOM.*` that I have seen which is not covered
here - sometimes it has mistakenly been used for Flow typing. In the
cases I have found it is not proper syntax and doesn't seem like
something we should cover with this codemod.

[1]: facebook/react#9398
and facebook/react#8356

flarnie added a commit to flarnie/react-codemod that referenced this issue Apr 20, 2017

Add codemod for 'React.DOM.div' -> 'React.createElement("div"'
Since we are deprecating the 'React.DOM.*' factories,[1] we want to
provide a codemod so that it's easier for folks to upgrade their code.

This will include an option to use 'React.createFactory' instead of
'React.createElement' in case there is a use case where that is
preferred.

There is one use of `React.DOM.*` that I have seen which is not covered
here - sometimes it has mistakenly been used for Flow typing. In the
cases I have found it is not proper syntax and doesn't seem like
something we should cover with this codemod.

[1]: facebook/react#9398
and facebook/react#8356

flarnie added a commit to flarnie/react-codemod that referenced this issue Apr 20, 2017

Add codemod for 'React.DOM.div' -> 'React.createElement("div"'
Since we are deprecating the 'React.DOM.*' factories,[1] we want to
provide a codemod so that it's easier for folks to upgrade their code.

This will include an option to use 'React.createFactory' instead of
'React.createElement' in case there is a use case where that is
preferred.

There is one use of `React.DOM.*` that I have seen which is not covered
here - sometimes it has mistakenly been used for Flow typing. In the
cases I have found it is not proper syntax and doesn't seem like
something we should cover with this codemod.

[1]: facebook/react#9398
and facebook/react#8356
@flarnie

This comment has been minimized.

Show comment
Hide comment
@flarnie

flarnie Apr 20, 2017

Contributor

"Where does proptypes doc live? It's confusing it's still on React object but inaccessible from the website through search or table of contents. Let's either reinstantiate it or move it fully to the standalone repo. Also it's confusing we're deprecating createClass but it still lives in the docs ("React without ES6") whereas we're just "moving" PropTypes but they're gone from the docs."

  • I'm splitting this into a separate issue; #9467
Contributor

flarnie commented Apr 20, 2017

"Where does proptypes doc live? It's confusing it's still on React object but inaccessible from the website through search or table of contents. Let's either reinstantiate it or move it fully to the standalone repo. Also it's confusing we're deprecating createClass but it still lives in the docs ("React without ES6") whereas we're just "moving" PropTypes but they're gone from the docs."

  • I'm splitting this into a separate issue; #9467

flarnie added a commit to flarnie/react that referenced this issue Apr 27, 2017

Add 'unreleased' incremental change log for v15.6.0
**what is the change?:**
Adding a section to the change log where we start accumulating
annotations for React v15.6.0.

**why make this change?:**
- Saves us the trouble of writing the change log entry all at once when
  we do the release.
- Adds transparency about what is in the upcoming release, for those who
  aren't following facebook#9398

**test plan:**
Visual inspection

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue May 1, 2017

Add 'unreleased' incremental change log for v15.6.0
**what is the change?:**
Adding a section to the change log where we start accumulating
annotations for React v15.6.0.

**why make this change?:**
- Saves us the trouble of writing the change log entry all at once when
  we do the release.
- Adds transparency about what is in the upcoming release, for those who
  aren't following facebook#9398

**test plan:**
Visual inspection

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue May 1, 2017

Minor tweaks to v15.6.0 changelog annotation
**what is the change?:**
- added missing `#` for commit hashes
- added minor details to two annotations

Thanks to @gaearon for the code review comments.

**why make this change?:**
Consistency and clarity.

**test plan:**
Visual inspection

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue May 2, 2017

Remove hashes from commit numbers
**what is the change?:**
We had added hashes to some commit numbers, but ideally only do that
for PRs.

**why make this change?:**
Consistency - this is how github displays those types of links too. PRs
get a '#', and commits don't.

**test plan:**
Visual inspection

**issue:**
facebook#9398

flarnie added a commit that referenced this issue May 3, 2017

Add 'unreleased' incremental change log for v15.6.0 (#9544)
* Add 'unreleased' incremental change log for v15.6.0

**what is the change?:**
Adding a section to the change log where we start accumulating
annotations for React v15.6.0.

**why make this change?:**
- Saves us the trouble of writing the change log entry all at once when
  we do the release.
- Adds transparency about what is in the upcoming release, for those who
  aren't following #9398

**test plan:**
Visual inspection

**issue:**
#9398

* Minor tweaks to v15.6.0 changelog annotation

**what is the change?:**
- added missing `#` for commit hashes
- added minor details to two annotations

Thanks to @gaearon for the code review comments.

**why make this change?:**
Consistency and clarity.

**test plan:**
Visual inspection

**issue:**
#9398

* Remove hashes from commit numbers

**what is the change?:**
We had added hashes to some commit numbers, but ideally only do that
for PRs.

**why make this change?:**
Consistency - this is how github displays those types of links too. PRs
get a '#', and commits don't.

**test plan:**
Visual inspection

**issue:**
#9398

flarnie added a commit to flarnie/react that referenced this issue May 3, 2017

Add PR #9584 to 15.6 change log
Updating the change log~ :)

**issue:**
facebook#9398

This was referenced May 3, 2017

flarnie added a commit that referenced this issue May 9, 2017

Minor tweak to adjust ReactDOM-test for #8356
**what is the change?:**
Changed a test to look for the warning we added in https://github.com/facebook/react/pull/8356/files

**why make this change?:**
To update our tests for new behavior.

**test plan:**
`npm run test`

**issue:**
#9398

flarnie added a commit that referenced this issue May 9, 2017

Add PR #9584 to 15.6 change log (#9598)
Updating the change log~ :)

**issue:**
#9398

flarnie added a commit to flarnie/react that referenced this issue May 12, 2017

Move 'lighthouse' and 'nodegit' to 'optionalDependencies'
**what is the change?:**
See title.

**why make this change?:**
Both these dependencies were causing issues when working on React internally at
FB.

'lighthouse' requires node >=6 and we don't want to folks working on React to
using that version of node.
https://github.com/GoogleChrome/lighthouse/blob/master/package.json#L11

'nodegit' for me throws an error related to libssh2 and it's annoying to make
this work in every OS. See nodegit/nodegit#1266

**test plan:**
`npm/yarn install`
Runs with no errors on my CentOS machine and also on MacOSX laptop.

**issue:**
This is blocking work related to facebook#9398

flarnie added a commit that referenced this issue May 12, 2017

Move 'lighthouse' and 'nodegit' to 'optionalDependencies' (#9675)
**what is the change?:**
See title.

**why make this change?:**
Both these dependencies were causing issues when working on React internally at
FB.

'lighthouse' requires node >=6 and we don't want to folks working on React to
using that version of node.
https://github.com/GoogleChrome/lighthouse/blob/master/package.json#L11

'nodegit' for me throws an error related to libssh2 and it's annoying to make
this work in every OS. See nodegit/nodegit#1266

**test plan:**
`npm/yarn install`
Runs with no errors on my CentOS machine and also on MacOSX laptop.

**issue:**
This is blocking work related to #9398

@timdorr timdorr referenced this issue in ReactTraining/react-router May 15, 2017

Closed

v2.8.2, without React deprecation warnings? #5121

flarnie added a commit to flarnie/react that referenced this issue May 23, 2017

Add 'lowPriorityWarning' to ReactExternals
**what is the change?:**
We won't bundle 'lowPriorityWarning' with the rest of React when building for Facebook.
NOTE: A parallel commit will introduce an internal implementation of 'lowPriorityWarning' in Facebook's codebase, to compensate. Will post a comment with the diff number once that is up.

**why make this change?:**
So that the sync between github and Facebook can go more smoothly!

**test plan:**
We will see when I run the sync! But this is a reasonable first step imo.

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue May 23, 2017

Make state mutations an error, not low-pri warning
**what is the change?:**
Even though this is a "deprecation" warning, we still want to use 'console.error' for it.

**why make this change?:**
- It's not likely to come up now, hopefully, because this warning has been present for some time
- This will cause real issues in production if ignored

**test plan:**
`yarn test` - we did fix one test which failed bc of this change

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue May 23, 2017

Add 'lowPriorityWarning' to ReactExternals
**what is the change?:**
We won't bundle 'lowPriorityWarning' with the rest of React when building for Facebook.
NOTE: A parallel commit will introduce an internal implementation of 'lowPriorityWarning' in Facebook's codebase, to compensate. Will post a comment with the diff number once that is up.

**why make this change?:**
So that the sync between github and Facebook can go more smoothly!

**test plan:**
We will see when I run the sync! But this is a reasonable first step imo.

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue May 23, 2017

Make state mutations an error, not low-pri warning
**what is the change?:**
Even though this is a "deprecation" warning, we still want to use 'console.error' for it.

**why make this change?:**
- It's not likely to come up now, hopefully, because this warning has been present for some time
- This will cause real issues in production if ignored

**test plan:**
`yarn test` - we did fix one test which failed bc of this change

**issue:**
facebook#9398

flarnie added a commit that referenced this issue May 23, 2017

Downgrade deprecation warnings from errors to warnings (#9650)
* Initial regeneration of results.json

**what is the change?:**
We ran `yarn build` and updated the perf. stats record.

**why make this change?:**
Some commits have landed without updating this. By getting an initial update, I can run the build script again after my changes and see any size regressions.

* Downgrade deprecation warnings from errors to warnings

**what is the change?:**
Swapping out `warning` module for a fork that uses `console.warn`.
It looks like we were using the `warning` module for deprecation notices, *but* there is also a 'deprecated' module designed specifically for deprecation notices.

However, we could not find any place that it was currently used.

Since React's build process is not 100% clear to me, I assume it could still be used somewhere by something and just updated it along with other deprecation notices.

We might consider a follow-up diff that does some clean up here;
 - remove 'deprecated' module if it's unused, OR
 - use 'deprecated' module for all our current deprecation warnings

**why make this change?:**
- We have had complaints about noisy warnings, in particular after introducing new deprecations
- They potentially cause CI failures
- Deprecations are not really time-sensitive, can ship without breaking your app, etc.

For more context - #9395

**test plan:**
`npm run test`
and unit tests for the new modules
and manual testing (WIP)

**issue:**
#9395

* Add 'lowPriorityWarning' to ReactExternals

**what is the change?:**
We won't bundle 'lowPriorityWarning' with the rest of React when building for Facebook.
NOTE: A parallel commit will introduce an internal implementation of 'lowPriorityWarning' in Facebook's codebase, to compensate. Will post a comment with the diff number once that is up.

**why make this change?:**
So that the sync between github and Facebook can go more smoothly!

**test plan:**
We will see when I run the sync! But this is a reasonable first step imo.

**issue:**
#9398

* Make state mutations an error, not low-pri warning

**what is the change?:**
Even though this is a "deprecation" warning, we still want to use 'console.error' for it.

**why make this change?:**
- It's not likely to come up now, hopefully, because this warning has been present for some time
- This will cause real issues in production if ignored

**test plan:**
`yarn test` - we did fix one test which failed bc of this change

**issue:**
#9398

* Fix test of assigning to this.state that was only passing in fiber

**what is the change?:**
updated a unit test for assigning directly to state; it once again raises an error and not a warning.

**why make this change?:**
So that tests pass

**test plan:**
 REACT_DOM_JEST_USE_FIBER=1 yarn run test

**issue:**

* Update results.json

flarnie added a commit to flarnie/react that referenced this issue May 23, 2017

Downgrade deprecation warnings from errors to warnings (#9650)
* Downgrade deprecation warnings from errors to warnings

**what is the change?:**
Swapping out `warning` module for a fork that uses `console.warn`.
It looks like we were using the `warning` module for deprecation notices, *but* there is also a 'deprecated' module designed specifically for deprecation notices.

However, we could not find any place that it was currently used.

Since React's build process is not 100% clear to me, I assume it could still be used somewhere by something and just updated it along with other deprecation notices.

We might consider a follow-up diff that does some clean up here;
 - remove 'deprecated' module if it's unused, OR
 - use 'deprecated' module for all our current deprecation warnings

**why make this change?:**
- We have had complaints about noisy warnings, in particular after introducing new deprecations
- They potentially cause CI failures
- Deprecations are not really time-sensitive, can ship without breaking your app, etc.

For more context - facebook#9395

**test plan:**
`npm run test`
and unit tests for the new modules
and manual testing (WIP)

**issue:**
facebook#9395

* Add 'lowPriorityWarning' to ReactExternals

**what is the change?:**
We won't bundle 'lowPriorityWarning' with the rest of React when building for Facebook.
NOTE: A parallel commit will introduce an internal implementation of 'lowPriorityWarning' in Facebook's codebase, to compensate. Will post a comment with the diff number once that is up.

**why make this change?:**
So that the sync between github and Facebook can go more smoothly!

**test plan:**
We will see when I run the sync! But this is a reasonable first step imo.

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue May 31, 2017

Fix lints and capitalization of 'reactDOMFactories'
**what is the change?:**
Fixing nits in capitalization, quotes, and defined globals

**why make this change?:**
To get CI passing, consistency, correctness

**test plan:**
see prev. commit

**issue:**
facebook#9398

flarnie added a commit that referenced this issue May 31, 2017

Prepare `react-dom-factories` for publishing (#9823)
* Prepare `react-dom-factories` for publishing

**what is the change?:**
- copies the `React.DOM.*` factory helpers into the package and wraps
  them with an IIFE
- set peerDependency on React to latest 15 version

**why make this change?:**
We are deprecating `React.DOM.*` and this provides a fallback option for
those using it.

We just copied the code in order to avoid a circular dependency, which
keeps complexity down since we are supporting every possible build
system.

**test plan:**
TODO -
1. Copy this into one of our fixtures using a UMD/AMD build and see if
   it works there.
2. Do an initial publish of the package on npm and then pull it into
   CRA, and try it there.
3. Try it in https://github.com/duncanbeevers/jade-react or some other
   project that actually uses the `React.DOM.*` helpers, using the
   related codemod.

**issue:**
#9398

* Fix lints and capitalization of 'reactDOMFactories'

**what is the change?:**
Fixing nits in capitalization, quotes, and defined globals

**why make this change?:**
To get CI passing, consistency, correctness

**test plan:**
see prev. commit

**issue:**
#9398

flarnie added a commit to flarnie/react that referenced this issue Jun 1, 2017

Update CHANGELOG for unreleased 15.6 branch
**what is the change?:**
Added entries for the latest changes.

**why make this change?:**
We are about to do an RC release and folks can look at these notes to
see what is in the planned release.

**test plan:**
Visual inspection

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue Jun 1, 2017

Update CHANGELOG for unreleased 15.6 branch
**what is the change?:**
Added entries for the latest changes.

**why make this change?:**
We are about to do an RC release and folks can look at these notes to
see what is in the planned release.

**test plan:**
Visual inspection

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue Jun 1, 2017

Update CHANGELOG for unreleased 15.6 branch
**what is the change?:**
Added entries for the latest changes.

**why make this change?:**
We are about to do an RC release and folks can look at these notes to
see what is in the planned release.

**test plan:**
Visual inspection

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue Jun 1, 2017

Update changelog regarding `createClass` dep. warning
**what is the change?:**
We decided to strike through the previous changelog item and add it to
the more recent changelog section, since this is the release where the
deprecation warning will actually go out.

**why make this change?:**
To make things clear for everyone using 15.6

**test plan:**
Visual inspection

**issue:**
facebook#9398

flarnie added a commit that referenced this issue Jun 1, 2017

Update CHANGELOG for unreleased 15.6 branch (#9827)
* Update CHANGELOG for unreleased 15.6 branch

**what is the change?:**
Added entries for the latest changes.

**why make this change?:**
We are about to do an RC release and folks can look at these notes to
see what is in the planned release.

**test plan:**
Visual inspection

**issue:**
#9398

* Update changelog regarding `createClass` dep. warning

**what is the change?:**
We decided to strike through the previous changelog item and add it to
the more recent changelog section, since this is the release where the
deprecation warning will actually go out.

**why make this change?:**
To make things clear for everyone using 15.6

**test plan:**
Visual inspection

**issue:**
#9398

flarnie added a commit to flarnie/react that referenced this issue Jun 1, 2017

Hello 15.6 Release Candidate
**what is the change?:**
We update the versions of all associated React packages when bumping the
version of React.

**why make this change?:**
We want to publish a RC to give folks time to try out the latest version
before it's final.

Why bump the version of every other associated package?

It makes the dependency between them more clear.

There will be cases where we make a fix in React-DOM and it requires
changes in React core. In that case, it will be more clear to people
when we update the versions of both and they remain in sync.

**test plan:**
Visual inspection

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue Jun 1, 2017

Update a couple more packages versions
**what is the change?:**
Updates version for 'react-dom-factories' package and 'react-addons'
template.

**why make this change?:**
We missed these in the previous commit, which was copying the approach
from https://github.com/facebook/react/pull/9828/files

**test plan:**
Visual inspection, and running the build

**issue:**
facebook#9398

flarnie added a commit that referenced this issue Jun 1, 2017

Hello 15.6 Release Candidate (#9828)
* Hello 15.6 Release Candidate

**what is the change?:**
We update the versions of all associated React packages when bumping the
version of React.

**why make this change?:**
We want to publish a RC to give folks time to try out the latest version
before it's final.

Why bump the version of every other associated package?

It makes the dependency between them more clear.

There will be cases where we make a fix in React-DOM and it requires
changes in React core. In that case, it will be more clear to people
when we update the versions of both and they remain in sync.

**test plan:**
Visual inspection

**issue:**
#9398

* Update a couple more packages versions

**what is the change?:**
Updates version for 'react-dom-factories' package and 'react-addons'
template.

**why make this change?:**
We missed these in the previous commit, which was copying the approach
from https://github.com/facebook/react/pull/9828/files

**test plan:**
Visual inspection, and running the build

**issue:**
#9398

flarnie added a commit to flarnie/react that referenced this issue Jun 5, 2017

Remove JSDoc comments
**what is the change?:**
removing some comments

**why make this change?:**
The code is basically self explanatory and these comments could get out
of sync.

**test plan:**
Visual inspection, `yarn build` and `yarn test`

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue Jun 6, 2017

Add PR #9302 to 15.6RC CHANGELOG
Just keeping things updated.

facebook#9398

flarnie added a commit that referenced this issue Jun 6, 2017

Add PR #9302 to 15.6RC CHANGELOG (#9857)
Just keeping things updated.

#9398

flarnie added a commit that referenced this issue Jun 6, 2017

Tweak syntax in rollup build script (#9852)
* Tweak syntax in rollup build script

@bvaughn and I already discussed this.

**test plan:**
`yarn build`

* Remove JSDoc comments

**what is the change?:**
removing some comments

**why make this change?:**
The code is basically self explanatory and these comments could get out
of sync.

**test plan:**
Visual inspection, `yarn build` and `yarn test`

**issue:**
#9398

flarnie added a commit to flarnie/react that referenced this issue Jun 7, 2017

Minor tweak to adjust ReactDOM-test for #8356
**what is the change?:**
Changed a test to look for the warning we added in https://github.com/facebook/react/pull/8356/files

**why make this change?:**
To update our tests for new behavior.

**test plan:**
`npm run test`

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue Jun 7, 2017

Cherrypick commit to downgrade deprecations to warnings (#9753)
* Downgrade deprecation warnings from errors to warnings (#9650)

* Downgrade deprecation warnings from errors to warnings

**what is the change?:**
Swapping out `warning` module for a fork that uses `console.warn`.
It looks like we were using the `warning` module for deprecation notices, *but* there is also a 'deprecated' module designed specifically for deprecation notices.

However, we could not find any place that it was currently used.

Since React's build process is not 100% clear to me, I assume it could still be used somewhere by something and just updated it along with other deprecation notices.

We might consider a follow-up diff that does some clean up here;
 - remove 'deprecated' module if it's unused, OR
 - use 'deprecated' module for all our current deprecation warnings

**why make this change?:**
- We have had complaints about noisy warnings, in particular after introducing new deprecations
- They potentially cause CI failures
- Deprecations are not really time-sensitive, can ship without breaking your app, etc.

For more context - facebook#9395

**test plan:**
`npm run test`
and unit tests for the new modules
and manual testing (WIP)

**issue:**
facebook#9395

* Add 'lowPriorityWarning' to ReactExternals

**what is the change?:**
We won't bundle 'lowPriorityWarning' with the rest of React when building for Facebook.
NOTE: A parallel commit will introduce an internal implementation of 'lowPriorityWarning' in Facebook's codebase, to compensate. Will post a comment with the diff number once that is up.

**why make this change?:**
So that the sync between github and Facebook can go more smoothly!

**test plan:**
We will see when I run the sync! But this is a reasonable first step imo.

**issue:**
facebook#9398

* Tweaks to get tests passing after cherry-picking PR#9650

**what is the change?:**
- adds 'lowPriorityWarning' for deprecation of '__spread' and 'createMixin'
- tweaks test to check for 'warn' and not 'error'

**why make this change?:**
Both these issues were introduced by merge conflict resolution when cherry-picking this change from master onto 15.6.

**test plan:**
`yarn test`

**issue:**

* Fix mis-written 'require' for 'warning' module

**what is the change?:**
Fixes 'warning' to be required from 'warning'

**why make this change?:**
It was causing the browserify build to crash, because we don't expect to have a path to 'warning'.

**test plan:**
CI

flarnie added a commit to flarnie/react that referenced this issue Jun 7, 2017

Improve deprecation warnings by more info and links (#9768)
* Improve deprecation warnings by more info and links

**what is the change?:**
Updates the warnings for -
 - `React.createMixin` (was never implemented!)
 - `React.PropTypes`
 - `React.createClass`
 - `React.DOM.*`

We never added the warning for `React.createClass` to the 15.5 line, so
a follow-up PR will add that, with a link to docs etc.

Does *not* update the older warnings for -
 - Factory.type
 - 'isMounted' and 'replaceState'
 - ReactPerf

We could do a second pass if we want to improve those three warnings, but for now I don't think they are as hi-pri.

Still TODO:
 - Do an initial release of the [`react-addons-dom-factories`](https://github.com/facebook/react/tree/master/packages/react-dom-factories#react-addons-dom-factories) package on npm, making it 1.0.
 - Improve the docs for `react-addons-dom-factories` adding documentation and mention the [codemod](https://github.com/reactjs/react-codemod/blob/master/transforms/React-DOM-to-react-dom-factories.js)

**why make this change?:**
 - We want to make updating as easy as possible. Warning messages should increase clarity, and in the past they have caused confusion.

**test plan:**
`yarn test` and running these messages past some folks who use React.

**issue:**
facebook#9398

* Rephrase deprecation messages for clarity

**what is the change?:**
We rephrased the deprecation messages to clarify that
 - these APIs are currently deprecated
 - they will be removed in React v16.0

The previous wording implied that they would be deprecated in v16.0.

**why make this change?:**
To make the messages easier to understand.

**test plan:**
Visual inspection

flarnie added a commit to flarnie/react that referenced this issue Jun 7, 2017

Cherrypick warning and removal of react create class (#9771)
* react-create-class -> create-react-class

* Fix issues/bugs introduced by merge conflict resolution

**what is the change?:**
A couple of bugs and holes were introduced when cherry-picking facebook#9232 onto the 15.6 branch. This fixes them.
We also needed to add some logic from facebook#9399

**why make this change?:**
To keep tests passing and get this change working.

**test plan:**
`yarn test`

**issue:**
facebook#9398

* Move component base classes into a single file (#8918)

* More fixes for issues introduced by rebasing

**what is the change?:**
- Remove some outdated 'require' statements that got orphaned in 'React.js'
- Change 'warning' to 'lowPriorityWarning' for 'React.createClass'
- Fix syntax issues in 'React-test'
- Use 'creatReactClass' instead of ES6 class in ReactART
- Update 'prop-type' dependency to use no higher than 15.7 because 15.8 limits the number of warnings, and this causes a test to fail.
- Fix some mixed-up and misnamed variables in `React.js`
- Rebase onto commit that updates deprecation messages
- Update a test based on new deprecation messages

**why make this change?:**
These were bugs introduced by rebasing and tests caught the regressions.

**test plan:**
`yarn test`

**issue:**
facebook#9398

* Reset `yarn.lock`

**what is the change?:**
I didn't mean to commit changes to `yarn.lock` except for the `prop-types` and `create-react-class` updates.

**why make this change?:**
To minimize the changes we make to dependency versions.

**test plan:**
`rm -rf node_modules`
`yarn install`
`yarn run build`
`yarn test`

* Run `yarn prettier`

flarnie added a commit to flarnie/react that referenced this issue Jun 7, 2017

`react-addons-dom-factories` (#9780)
**what is the change?:**
`grep -r "react-addons-dom-factories" ./src` and the same in `./packages`
then `%s /react-addons-dom-factories/react-dom-factories/gc`

**why make this change?:**
React dom factories were never part of the 'addons' and we want to minimize the
whole 'addons' thing, since we are deprecating the `React.addons.*` API.

**test plan:**
`yarn test`
and manually look at the README that was updated.

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue Jun 7, 2017

Improve warning for `React.createClass` (#9781)
* Improve warning for `React.createClass`

**what is the change?:**
- Explain that this will be removed in v16.0 specifically
- Mention the version number for the drop-in replacement module.
- Link to docs in the blog post about how to migrate

**why make this change?:**
We want to make our deprecation warnings more clear and helpful.

**test plan:**
Visual inspection and `yarn test`

**issue:**
facebook#9398

* Widen range of recommended replacement module versions

**what is the change?:**
Instead of recommending specific versions of 'prop-types' and
'create-react-class' we ask folks to use the latest available 15.* version.

**why make this change?:**
The latest version of those plugins, within the 15 version, is the most likely
to be stable. For example, we know that 'react-create-class' is broken for AMD
builds at the current latest version, so once we release a fix then the
recommended version will change.

**test plan:**
Visual inspection
Also fixed some tests.

* Fix typos and things

**what is the change?:**
- `migrade` -> `migrate`
- `15.* prop-types package` -> `v15.* prop-types package`

**why make this change?:**
Correctness

**test plan:**
`yarn test` and visual inspection

flarnie added a commit to flarnie/react that referenced this issue Jun 7, 2017

Prepare `react-dom-factories` for publishing (#9823)
* Prepare `react-dom-factories` for publishing

**what is the change?:**
- copies the `React.DOM.*` factory helpers into the package and wraps
  them with an IIFE
- set peerDependency on React to latest 15 version

**why make this change?:**
We are deprecating `React.DOM.*` and this provides a fallback option for
those using it.

We just copied the code in order to avoid a circular dependency, which
keeps complexity down since we are supporting every possible build
system.

**test plan:**
TODO -
1. Copy this into one of our fixtures using a UMD/AMD build and see if
   it works there.
2. Do an initial publish of the package on npm and then pull it into
   CRA, and try it there.
3. Try it in https://github.com/duncanbeevers/jade-react or some other
   project that actually uses the `React.DOM.*` helpers, using the
   related codemod.

**issue:**
facebook#9398

* Fix lints and capitalization of 'reactDOMFactories'

**what is the change?:**
Fixing nits in capitalization, quotes, and defined globals

**why make this change?:**
To get CI passing, consistency, correctness

**test plan:**
see prev. commit

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue Jun 7, 2017

Hello 15.6 Release Candidate (#9828)
* Hello 15.6 Release Candidate

**what is the change?:**
We update the versions of all associated React packages when bumping the
version of React.

**why make this change?:**
We want to publish a RC to give folks time to try out the latest version
before it's final.

Why bump the version of every other associated package?

It makes the dependency between them more clear.

There will be cases where we make a fix in React-DOM and it requires
changes in React core. In that case, it will be more clear to people
when we update the versions of both and they remain in sync.

**test plan:**
Visual inspection

**issue:**
facebook#9398

* Update a couple more packages versions

**what is the change?:**
Updates version for 'react-dom-factories' package and 'react-addons'
template.

**why make this change?:**
We missed these in the previous commit, which was copying the approach
from https://github.com/facebook/react/pull/9828/files

**test plan:**
Visual inspection, and running the build

**issue:**
facebook#9398

flarnie added a commit that referenced this issue Jun 13, 2017

Update changelog
**what is the change?:**
`git checkout master -- CHANGELOG.md`
Then made the 15.6 release no longer wrapped in 'details' tag.

**why make this change?:**
We are releasing 15.6 :D

**test plan:**
Visual inspection

**issue:**
#9398

flarnie added a commit to flarnie/react that referenced this issue Jun 13, 2017

Blog post for 15.6.0
**what is the change?:**
A short and sweet summary of 15.6.0 changes

**why make this change?:**
To thank community contributors and call out important changes.

**test plan:**
Visual inspection.
I also looked it over in a markdown viewer - http://dillinger.io/

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue Jun 13, 2017

Add 'Installation' and 'Changelog' to 15.6.0 blog post
**what is the change?:**
Added the 'Installation' section we have on most release blog posts,
customized for the 15.6.0 version of React.
Added the 'Changelog' from master to the blog post.

**why make this change?:**
To show folks how to install React and what changes are in this release.

**test plan:**
Visual inspection

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue Jun 13, 2017

Improvements to blog post, and add self to `authors.yml`
**what is the change?:**
- Add self to contributors so my name turns into a link
- Use backticks for code-ish things
- Second header to ##, not #
- Change production mode link to the new address per @bvaughn's comment
- Update changelog with fixes from facebook#9951

**why make this change?:**
Make things more clear and accurate.

**test plan:**
Visual inspect - @flarnie will paste an image of how it appears in the
actual docs.

**issue:**
facebook#9398

flarnie added a commit to flarnie/react that referenced this issue Jun 13, 2017

Further improvements to 15.6 blog post
**what is the change?:**
- Reword heading about deprecation warning changes
- add 'br' s to the list of installation options
- add some stray missing backticks

**why make this change?:**
Clarity and readability

**test plan:**
Visual inspection

**issue:**
facebook#9398

flarnie added a commit that referenced this issue Jun 13, 2017

Blog post for 15.6.0 (#9950)
* Blog post for 15.6.0

**what is the change?:**
A short and sweet summary of 15.6.0 changes

**why make this change?:**
To thank community contributors and call out important changes.

**test plan:**
Visual inspection.
I also looked it over in a markdown viewer - http://dillinger.io/

**issue:**
#9398

* Add 'Installation' and 'Changelog' to 15.6.0 blog post

**what is the change?:**
Added the 'Installation' section we have on most release blog posts,
customized for the 15.6.0 version of React.
Added the 'Changelog' from master to the blog post.

**why make this change?:**
To show folks how to install React and what changes are in this release.

**test plan:**
Visual inspection

**issue:**
#9398

* Improvements to blog post, and add self to `authors.yml`

**what is the change?:**
- Add self to contributors so my name turns into a link
- Use backticks for code-ish things
- Second header to ##, not #
- Change production mode link to the new address per @bvaughn's comment
- Update changelog with fixes from #9951

**why make this change?:**
Make things more clear and accurate.

**test plan:**
Visual inspect - @flarnie will paste an image of how it appears in the
actual docs.

**issue:**
#9398

* Further improvements to 15.6 blog post

**what is the change?:**
- Reword heading about deprecation warning changes
- add 'br' s to the list of installation options
- add some stray missing backticks

**why make this change?:**
Clarity and readability

**test plan:**
Visual inspection

**issue:**
#9398

flarnie added a commit that referenced this issue Jun 13, 2017

Blog post for 15.6.0 (#9950)
* Blog post for 15.6.0

**what is the change?:**
A short and sweet summary of 15.6.0 changes

**why make this change?:**
To thank community contributors and call out important changes.

**test plan:**
Visual inspection.
I also looked it over in a markdown viewer - http://dillinger.io/

**issue:**
#9398

* Add 'Installation' and 'Changelog' to 15.6.0 blog post

**what is the change?:**
Added the 'Installation' section we have on most release blog posts,
customized for the 15.6.0 version of React.
Added the 'Changelog' from master to the blog post.

**why make this change?:**
To show folks how to install React and what changes are in this release.

**test plan:**
Visual inspection

**issue:**
#9398

* Improvements to blog post, and add self to `authors.yml`

**what is the change?:**
- Add self to contributors so my name turns into a link
- Use backticks for code-ish things
- Second header to ##, not #
- Change production mode link to the new address per @bvaughn's comment
- Update changelog with fixes from #9951

**why make this change?:**
Make things more clear and accurate.

**test plan:**
Visual inspect - @flarnie will paste an image of how it appears in the
actual docs.

**issue:**
#9398

* Further improvements to 15.6 blog post

**what is the change?:**
- Reword heading about deprecation warning changes
- add 'br' s to the list of installation options
- add some stray missing backticks

**why make this change?:**
Clarity and readability

**test plan:**
Visual inspection

**issue:**
#9398
@flarnie

This comment has been minimized.

Show comment
Hide comment
@flarnie

flarnie Jun 27, 2017

Contributor

Closing this now - if any work remains around changes from v15.6.* we should open new issues for that.
🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸
Thanks @gaearon @nhunzaker @bvaughn @aweary @acdlite and everyone who helped out with this process.
🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸
Onward towards 16.0!~~~~ 😁

Contributor

flarnie commented Jun 27, 2017

Closing this now - if any work remains around changes from v15.6.* we should open new issues for that.
🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸
Thanks @gaearon @nhunzaker @bvaughn @aweary @acdlite and everyone who helped out with this process.
🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸🎆🎸
Onward towards 16.0!~~~~ 😁

@flarnie flarnie closed this Jun 27, 2017

@bvaughn bvaughn referenced this issue Aug 1, 2017

Closed

React 16 RC #10294

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment