Commit Graph
6950 Commits
Author SHA1 Message Date
Sebastian Markbåge ecdc185deb Use aliasify everywhere instead of browserify-global-shim (#7476)
I already had to aliasify to have better control over the requires
so we might as well do it everywhere for consistency.

This probably makes it easier to rebase the rollup work too
because aliases seems to be how you solve this in that world.
(cherry picked from commit c8f7215b20)
2016-10-03 16:23:23 -07:00
Sebastian Markbåge cc2e5cc3d7 Require the isomorphic React instead of internals from renderers (#7473)
This is needed for flat builds. It also lets us get rid of a bunch
of special cases in the build scripts.

It also allow us to just copy the source files into React Native
instead of having to build first to resolve the special cases.
(cherry picked from commit 1c5a639c37)
2016-10-03 16:23:16 -07:00
Sebastian Markbåge 5c2a88a9a1 Build React DOM Fiber package (#7173)
This builds a `react-dom-fiber.js` bundle which exposes ReactDOMFiber.
This allows early experiments with the new Fiber reconciler.

I also expose it in the npm package through `react-dom/fiber`.
(cherry picked from commit f7e0db9a18)
2016-10-03 16:18:51 -07:00
Sebastian Markbåge 5bc9daa125 Build renderers into their individual npm packages (#7168)
This copies modules into three separate packages instead of
putting it all in React.

The overlap in shared and between renderers gets duplicated.

This allows the isomorphic package to stay minimal. It can also
be used as a direct dependency without much risk.

This also allow us to ship versions to each renderer independently
and we can ship renderers without updating the main react package
dependency.
(cherry picked from commit 0f004efce2)
2016-10-03 16:18:46 -07:00
Sebastian Markbåge 21a4e7a826 Mock ReactDOM for Fiber Tests (#7206)
We currently write all our tests against the DOM implementation.
I need a way to run the Fiber tests against it. But I don't want
to take on any package dependencies on Fiber modules yet.

There's a problem with jest right now where you can't globally
mock modules that already exist. So I have to add a global call
to jest.mock.

Luckily we already have a way to test the useCreateElement paths
using a feature flag. I won't activate this flag in travis until
it passes, but the idea is to run all three variants in travis.

I'm not sure that invoking rAF and rIC synchronously is the best
way to test this since it doesn't capture the backwards
compatibility aspect. I.e. the fact that people might be relying
on the synchronous nature in real apps too. It's a start.

Ideally, jest would have these built-in.
(cherry picked from commit c06a68a10b)
2016-10-03 16:08:28 -07:00
Sebastian Markbåge 556bd43a26 Include React itself in the list of shims (#7453)
Without this we end up bundling all of the isomorphic React into
the DOM bundle. This was fixed in #7168 too but I'll just do an
early fix to ensure that #7168 is purely an npm change.
(cherry picked from commit ca9167c202)
2016-10-03 16:08:28 -07:00
Sebastian Markbåge 8426fafe90 Fix trailing build issues (#7450)
Use relative path for addons UMD shim module

Use explicit top level wrapper marker for top level elements
(cherry picked from commit 34c4474472)
2016-10-03 16:08:27 -07:00
Sebastian Markbåge 7ae3bbee25 Bundle DOM renderers into their individual UMD bundles (#7164)
* Cut out isomorphic dependencies from the renderers

These files reaches into isomorphic files.

The ReactElement functions are exposed on the React object anyway
so I can just use those instead.

I also found some files that are not shared that should be in
renderers shared.

* Found a few more shared dependencies

renderSubtreeIntoContainer is only used by the DOM renderer.
It's not an addon.

ReactClass isn't needed as a dependency since injection doesn't
happen anymore.

* Use a shim file to load addons' dependencies on DOM

By replacing this intermediate file we can do the lazy loading
without needing any lazy requires. This set up works with ES
modules.

We could also replace the globalShim thing with aliased files
instead for consistency.

* Bundle DOM renderers into their individual UMD bundles

Instead of exposing the entire DOM renderer on the react.js
package, I only expose CurrentOwner and ComponentTreeDevtool which
are currently the only two modules that share __state__ with the
renderers.

Then I package each renderer in its own package. That could allow
us to drop more server dependencies from the client package. It
will also allow us to ship fiber as a separate renderer.

Unminified DEV            after     before
react.js                  123kb     696kb
react-with-addons.js      227kb     774kb
react-dom.js              668kb     1kb
react-dom-server.js       638kb     1kb

Minified PROD             after     before
react.min.js               24kb     154kb
react-with-addons.min.js   37kb     166kb
react-dom.min.js          149kb     1kb
react-dom-server.min.js   144kb     1kb

The total size for react.min.js + react-dom.min.js is +19kb larger
because of the overlap between them right now. I'd like to see
what an optimizing compiler can do to this. Some of that is fbjs
stuff. There shouldn't need to be that much overlap so that's
something we can hunt. We should keep isomorphic absolutely
minimal so there's no reason for other React clones not to use it.
There will be less overlap with Fiber.

However, another strategy that we could do is package the
isomorphic package into each renderer bundle and conditionally
initialize it if it hasn't already been initialized. That way
you only pay an overlap tax when there are two renderers on the
page but not without it. It's also easier to just pull in one
package. The downside is the versioning stuff that the separate
npm package would solve. That applies to CDNs as well.

ReactWithAddons is a bit weird because it is packaged into the
isomorphic package but has a bunch of DOM dependencies. So we have
to load them lazily since the DOM package gets initialized after.

(cherry picked from commit 8ef00dbb7d)
2016-10-03 16:08:27 -07:00
B.Orlov bada298857 Fix batchedUpdates return value (#7444)
(cherry picked from commit 7d57c1f0c1)
2016-10-03 16:08:27 -07:00
Sebastian Markbåge 5a540f778a Merge pull request #7248 from sebmarkbage/fibercleanup
[Fiber] Various minor tweaks and a few big ones
(cherry picked from commit a8c8191264)
2016-10-03 16:08:27 -07:00
Cheng Lou bed4c0595c PropTypes: distinguish nullable from optional object field (#7291)
* PropTypes: distinguish nullable from optional object field

This gives a more precise message (no type semantics change) to the case of passing a field in an object, but whose value is `null`:

Before:

```js
propTypes: {
  foo: React.PropTypes.number.isRequired
}
```

Would scream "Required prop `foo` was not specified in `MyComp`".

Now it'll be "Required prop `foo` was specified in `MyComp`, but its value is `null`.".

Works as expected in nested objects.

This fixes the issue of a component transitively passing a `null`, specifying the correct field to the child but have the child tell it that it didn't provide the prop.

Optional field and nullable are two different things anyway.

* Add missing test case.

* Reword messages.

(cherry picked from commit 0292d34047)
2016-10-03 16:08:19 -07:00
Paul O’Shannessy 0c89348be4 Merge remote-tracking branch 'upstream/15-stable' into 15-dev 2016-10-03 15:55:53 -07:00
Eric Douglas 53d16f86fd Update babel link (#7837)
(cherry picked from commit e32196222b)
2016-10-03 15:54:27 -07:00
Ivan Zotov ecd66274a7 Fix mistakes in the codebase overview (#7834)
(cherry picked from commit 16ac141f44)
2016-10-03 15:54:26 -07:00
Gil Chen-Zion 586f487ea9 Note that getInitialState is not used in ES6 classes in docs (#7748)
(cherry picked from commit a2bb55e3f4)
2016-10-03 15:54:26 -07:00
Ben Alpert 03e7900edb Update remarkable to 1.7.1 (#7851)
Fixes a subtle XSS hole.
(cherry picked from commit f88c1d38be)
2016-10-03 14:25:07 -07:00
ankitml 345329e079 Keyed Fragment of AddOns ported to ES6 2016-10-03 21:45:37 +01:00
Alex Zherdev f5798f729d Add-Ons: Animation updated with ES6 examples 2016-10-03 21:30:33 +01:00
Rafael Angeline dcd34ab6c1 Reusable Components ES6 Update 2016-10-03 21:02:43 +01:00
gillchristian 8a78b2497a Docs to ES6: Displaying data example. 2016-10-03 19:22:53 +01:00
Dan Abramov 58d66ad47f Add Codebase Overview (#7828)
* Add Codebase Overview

* Update codebase-overview.md

* Update codebase-overview.md
2016-09-29 11:34:35 +01:00
Kyle Mathews f6448ff595 typos fix (#7822) 2016-09-28 20:45:07 +01:00
Christopher Chedeau 4421c71120 Our first 50,000 stars blogpost 2016-09-28 10:22:46 +01:00
Christoph Pojer 9a6ef44a06 Reduce confusion in testing documentation. (#7818)
* Reduce confusion in testing documentation.

Just wanted to add some clarity to this page and link to the react tutorial on Jest's website to give people more information. Also changed enzyme's definition from library to utility to help reduce the confusion. Hope this makes sense to everybody :)

See https://twitter.com/damusnet/status/780752042675597312

cc @lelandrichardson

* Update 10.4-test-utils.md

(cherry picked from commit 0990c93806)
2016-09-27 19:08:40 -07:00
Dan Abramov ae5ebe3d92 Move How to Contribute to documentation and update it (#7817)
* Move How to Contribute to documentation and update it

* Consistent formatting
2016-09-27 23:22:32 +01:00
imjanghyuk 0c59b3c71f Update 07-forms.ko-KR.md (#7809)
fix spelling
(cherry picked from commit 6032491555)
2016-09-26 16:09:24 -07:00
jinmmd 6e58219117 Change [入门教程] from "tutorial.html" to "tutorial-zh-CN.html" (#7789)
(cherry picked from commit d9957ac075)
2016-09-26 16:09:24 -07:00
jinmmd 6259f15e33 Change [API参考] from "top-level-api.html" to "top-level-api-zh-CN.html" (#7790)
(cherry picked from commit 5331dfd1a5)
2016-09-26 16:09:24 -07:00
Dan Abramov e48635bd59 Update broken JSFiddle in Why React blog post (#7783)
Fixes #7782
(cherry picked from commit 13692d59ad)
2016-09-26 16:09:24 -07:00
Paul O’Shannessy cf592f29bc [docs] Update React Rally 2016 videos link (#7771)
(cherry picked from commit 2058d47e7b)
2016-09-19 14:27:04 -07:00
Ivan Zotov 00e9080314 Fix links and ids for tips in docs (#7766)
(cherry picked from commit 2ec2d8f7f7)
2016-09-19 14:27:04 -07:00
Ivan Zotov 17336bc8ee Russian translation for style props value px of tips (#7742)
* Russian translation for style props value px of tips

* Update 06-style-props-value-px.ru-RU.md

(cherry picked from commit 4dd554c9b7)
2016-09-19 14:27:04 -07:00
Ivan Zotov 1df0e8a012 Russian translation for max. numbers of jsx root nodes (#7738)
* Russian translation for max. numbers of jsx root nodes

* Update 05-maximum-number-of-jsx-root-nodes.ru-RU.md

(cherry picked from commit 8176f4970c)
2016-09-19 14:27:04 -07:00
Ivan Zotov 66a279df53 Russian translation for self-closing-tag of tips (#7729)
* Russian translation for self-closing-tag of tips

* Fix next link for inline styles tip

* Update 04-self-closing-tag.ru-RU.md

(cherry picked from commit 7d5c70d98c)
2016-09-19 14:27:04 -07:00
Ivan Zotov 5eb67ed4e2 Russian translation if-else in JSX of tips (#7726)
(cherry picked from commit 79367b09f7)
2016-09-19 14:27:03 -07:00
Ivan Zotov fcd42c1e28 Russian translation for inline styles of tips (#7717)
(cherry picked from commit fcc37ccaa2)
2016-09-19 14:27:03 -07:00
Ivan Zotov c99abadafb Fix Russian translation of introduction to be more technical (#7727)
(cherry picked from commit 7d76bdad69)
2016-09-19 14:27:03 -07:00
Amanvir Sangha 8753a838cf Update OWASP link in docs for dangerous innerHTML (#7710)
(cherry picked from commit 616e468987)
2016-09-19 14:27:03 -07:00
Ivan Zotov 749e809478 Add Russian translation for introduction of tips (#7690)
(cherry picked from commit 4dd44e77f8)
2016-09-19 14:27:03 -07:00
Michał Pierzchała fb37b44e79 Proper font-family for docs input fields (#7706) (#7708)
(cherry picked from commit b87bcb96ac)
2016-09-19 14:27:03 -07:00
Ray Dai 8f8a26c091 Update 14-communicate-between-components.ko-KR.md (#7686)
Apply the same change made in #7680.
(cherry picked from commit 2fc7125d49)
2016-09-19 14:27:03 -07:00
Ray Dai c2e9167e45 Update 14-communicate-between-components.md (#7680)
To demonstrate multiple arguments `bind(this, arg1, arg2, ...)`, also not to pass in for than what `handleClick` needed, namely props, or maybe even pass item itself, etc.
Going to change the kor file after review.
(cherry picked from commit 05cbc93401)
2016-09-19 14:27:02 -07:00
Gant Laborde 13ef94ad46 Adding the published ReactRally videos section (#7681)
ReactRally came and went, and it was splendid.
(cherry picked from commit 90a120c603)
2016-09-19 14:27:02 -07:00
Paul O’Shannessy c2388bf09b Fix formatting of 15.3.2 changelog 2016-09-19 10:56:27 -07:00
Paul O’Shannessy b52ea6bd8f Update website for 15.3.2 2016-09-19 10:45:02 -07:00
Paul O’Shannessy bdf263625d 15.3.2 v15.3.2 2016-09-19 10:35:00 -07:00
Paul O’Shannessy 8c7bbbfc21 Update Changelog & Readme for 15.3.2 2016-09-19 10:33:58 -07:00
Paul O’Shannessy 15631e02a2 Merge branch '15-dev' into 15-stable 2016-09-19 10:22:31 -07:00
Paul O’Shannessy 1907f72934 15.3.2-rc.1 2016-09-15 16:40:56 -07:00
Stephen John Sorensen ba62748217 remove plain object warning (#7724)
(cherry picked from commit b2297ae6c3)
2016-09-15 16:32:45 -07:00