Browse Source

Fixes to markdown content/paths

main
Brian Vaughn 7 years ago
parent
commit
eb1994b0d2
  1. 2
      content/blog/2013-06-12-community-roundup.md
  2. 6
      content/blog/2013-06-19-community-roundup-2.md
  3. 2
      content/blog/2013-06-27-community-roundup-3.md
  4. 4
      content/blog/2013-07-03-community-roundup-4.md
  5. 4
      content/blog/2013-08-05-community-roundup-6.md
  6. 4
      content/blog/2013-08-26-community-roundup-7.md
  7. 4
      content/blog/2013-09-24-community-roundup-8.md
  8. 6
      content/blog/2013-10-3-community-roundup-9.md
  9. 4
      content/blog/2013-11-06-community-roundup-10.md
  10. 8
      content/blog/2013-11-18-community-roundup-11.md
  11. 8
      content/blog/2013-12-23-community-roundup-12.md
  12. 2
      content/blog/2013-12-30-community-roundup-13.md
  13. 2
      content/blog/2014-01-02-react-chrome-developer-tools.md
  14. 2
      content/blog/2014-01-06-community-roundup-14.md
  15. 5
      content/blog/2014-02-15-community-roundup-16.md
  16. 6
      content/blog/2014-02-24-community-roundup-17.md
  17. 2
      content/blog/2014-06-27-community-roundup-19.md
  18. 4
      content/blog/2014-07-28-community-roundup-20.md
  19. 2
      content/blog/2014-07-30-flux-actions-and-the-dispatcher.md
  20. 8
      content/blog/2014-08-03-community-roundup-21.md
  21. 4
      content/blog/2014-09-12-community-round-up-22.md
  22. 6
      content/blog/2014-10-17-community-roundup-23.md
  23. 2
      content/blog/2015-03-04-community-roundup-25.md
  24. 8
      content/blog/2015-03-19-building-the-facebook-news-feed-with-relay.md
  25. 10
      content/blog/2015-03-30-community-roundup-26.md
  26. 8
      content/blog/2015-08-03-new-react-devtools-beta.md
  27. 2
      content/blog/2015-09-02-new-react-developer-tools.md
  28. 4
      content/blog/2015-09-14-community-roundup-27.md
  29. 14
      content/blog/2016-02-19-new-versioning-scheme.md
  30. 12
      content/blog/2016-07-22-create-apps-with-no-configuration.md
  31. 4
      content/blog/2016-09-28-our-first-50000-stars.md
  32. 2
      content/blog/2016-11-16-react-v15.4.0.md
  33. 2
      content/blog/2017-04-07-react-v15.5.0.md
  34. 12
      content/blog/2017-05-18-whats-new-in-create-react-app.md
  35. 4
      content/blog/2017-07-26-error-handling-in-react-16.md
  36. 6
      content/community/videos.it-IT.md
  37. 6
      content/community/videos.ko-KR.md
  38. 4
      content/community/videos.md
  39. 6
      content/community/videos.zh-CN.md
  40. 2
      content/docs/accessibility.md
  41. 8
      content/docs/addons-perf.md
  42. 11
      content/docs/codebase-overview.md
  43. 2
      content/docs/cross-origin-errors.md
  44. 3
      content/docs/design-principles.md
  45. 8
      content/docs/how-to-contribute.md
  46. 19
      content/docs/implementation-notes.md
  47. 2
      content/docs/installation.md
  48. 2
      content/docs/lifting-state-up.md
  49. 2
      content/docs/nav.yml
  50. 8
      content/docs/optimizing-performance.md
  51. 2
      content/docs/rendering-elements.md
  52. 4
      content/docs/thinking-in-react.md
  53. 8
      content/docs/web-components.md
  54. 6
      content/tutorial/tutorial.md

2
content/blog/2013-06-12-community-roundup.md

@ -12,7 +12,7 @@ It looks like [Sophie Alpert](http://sophiebits.com/) is the first person outsid
> I just rewrote a 2000-line project in React and have now made a handful of pull requests to React. Everything about React I've seen so far seems really well thought-out and I'm proud to be the first non-FB/IG production user of React.
>
> The project that I rewrote in React (and am continuing to improve) is the Khan Academy question editor which content creators can use to enter questions and hints that will be presented to students:
> <figure><a href="http://sophiebits.com/2013/06/09/using-react-to-speed-up-khan-academy.html"><img src="../img/blog/khan-academy-editor.png"></a></figure>
> <figure><a href="http://sophiebits.com/2013/06/09/using-react-to-speed-up-khan-academy.html"><img src="../images/blog/khan-academy-editor.png"></a></figure>
>
> [Read the full post...](http://sophiebits.com/2013/06/09/using-react-to-speed-up-khan-academy.html)

6
content/blog/2013-06-19-community-roundup-2.md

@ -24,7 +24,7 @@ Since the launch we have received a lot of feedback and are actively working on
[Danial Khosravi](https://danialk.github.io/) made a real-time chat application that interacts with the back-end using Socket.IO.
> A week ago I was playing with AngularJS and [this little chat application](https://github.com/btford/angular-socket-io-im) which uses socket.io and nodejs for realtime communication. Yesterday I saw a post about ReactJS in [EchoJS](http://www.echojs.com/) and started playing with this UI library. After playing a bit with React, I decided to write and chat application using React and I used Bran Ford's Backend for server side of this little app.
> <figure><a href="https://danialk.github.io/blog/2013/06/16/reactjs-and-socket-dot-io-chat-application/"><img src="../img/blog/chatapp.png"></a></figure>
> <figure><a href="https://danialk.github.io/blog/2013/06/16/reactjs-and-socket-dot-io-chat-application/"><img src="../images/blog/chatapp.png"></a></figure>
>
> [Read the full post...](https://danialk.github.io/blog/2013/06/16/reactjs-and-socket-dot-io-chat-application/)
@ -45,7 +45,7 @@ In the same vein, [Markov Twain](https://twitter.com/markov_twain/status/3457029
Mozilla and Google are actively working on Web Components. [Vjeux](http://blog.vjeux.com/) wrote a proof of concept that shows how to implement them using React.
> Using [x-tags](http://www.x-tags.org/) from Mozilla, we can write custom tags within the DOM. This is a great opportunity to be able to write reusable components without being tied to a particular library. I wrote [x-react](https://github.com/vjeux/react-xtags/) to have them being rendered in React.
> <figure><a href="http://blog.vjeux.com/2013/javascript/custom-components-react-x-tags.html"><img src="../img/blog/xreact.png"></a></figure>
> <figure><a href="http://blog.vjeux.com/2013/javascript/custom-components-react-x-tags.html"><img src="../images/blog/xreact.png"></a></figure>
>
> [Read the full post...](http://blog.vjeux.com/2013/javascript/custom-components-react-x-tags.html)
@ -56,7 +56,7 @@ Mozilla and Google are actively working on Web Components. [Vjeux](http://blog.v
> Developers these days are spoiled with choice when it comes to selecting an MV* framework for structuring and organizing their JavaScript web apps.
>
> To help solve this problem, we created TodoMVC - a project which offers the same Todo application implemented using MV* concepts in most of the popular JavaScript MV* frameworks of today.
> <figure><a href="http://todomvc.com/labs/architecture-examples/react/"><img src="../img/blog/todomvc.png"></a></figure>
> <figure><a href="http://todomvc.com/labs/architecture-examples/react/"><img src="../images/blog/todomvc.png"></a></figure>
>
> [Read the source code...](https://github.com/tastejs/todomvc/tree/gh-pages/labs/architecture-examples/react)

2
content/blog/2013-06-27-community-roundup-3.md

@ -9,7 +9,7 @@ The highlight of this week is that an interaction-heavy app has been ported to R
[Clay Allsopp](https://twitter.com/clayallsopp) successfully ported [Propeller](http://usepropeller.com/blog/posts/from-backbone-to-react/), a fairly big, interaction-heavy JavaScript app, to React.
> [<img style="float: right; margin: 0 0 10px 10px;" src="../img/blog/propeller-logo.png" />](http://usepropeller.com/blog/posts/from-backbone-to-react/)Subviews involve a lot of easy-to-forget boilerplate that Backbone (by design) doesn't automate. Libraries like Backbone.Marionette offer more abstractions to make view nesting easier, but they're all limited by the fact that Backbone delegates how and went view-document attachment occurs to the application code.
> [<img style="float: right; margin: 0 0 10px 10px;" src="../images/blog/propeller-logo.png" />](http://usepropeller.com/blog/posts/from-backbone-to-react/)Subviews involve a lot of easy-to-forget boilerplate that Backbone (by design) doesn't automate. Libraries like Backbone.Marionette offer more abstractions to make view nesting easier, but they're all limited by the fact that Backbone delegates how and went view-document attachment occurs to the application code.
>
> React, on the other hand, manages the DOM and only exposes real nodes at select points in its API. The "elements" you code in React are actually objects which wrap DOM nodes, not the actual objects which get inserted into the DOM. Internally, React converts those abstractions into actual DOMElements and fills out the document accordingly. [...]
>

4
content/blog/2013-07-03-community-roundup-4.md

@ -19,7 +19,7 @@ The best part is the demo of how React reconciliation process makes live editing
> Our renderer, post-React, is on the left. A typical math editor's preview is on the right.
[![](../img/blog/monkeys.gif)](http://bjk5.com/post/53742233351/getting-your-team-to-adopt-new-technology)
[![](../images/blog/monkeys.gif)](http://bjk5.com/post/53742233351/getting-your-team-to-adopt-new-technology)
## React Snippets
@ -55,4 +55,4 @@ Over the past several weeks, members of our team, [Pete Hunt](http://www.petehun
[Tom Occhino](http://tomocchino.com/) implemented Snake in 150 lines with React.
> [Check the source on GitHub](https://github.com/tomocchino/react-snake/blob/master/src/snake.js)
> <figure><a href="https://tomocchino.github.io/react-snake/"><img src="../img/blog/snake.png"></a></figure>
> <figure><a href="https://tomocchino.github.io/react-snake/"><img src="../images/blog/snake.png"></a></figure>

4
content/blog/2013-08-05-community-roundup-6.md

@ -8,7 +8,7 @@ This is the first Community Round-up where none of the items are from Facebook/I
## React Game Tutorial
[Caleb Cassel](https://twitter.com/CalebCassel) wrote a [step-by-step tutorial](https://rawgithub.com/calebcassel/react-demo/master/part1.html) about making a small game. It covers JSX, State and Events, Embedded Components and Integration with Backbone.
<figure><a href="https://rawgithub.com/calebcassel/react-demo/master/part1.html"><img src="../img/blog/dog-tutorial.png"></a></figure>
<figure><a href="https://rawgithub.com/calebcassel/react-demo/master/part1.html"><img src="../images/blog/dog-tutorial.png"></a></figure>
## Reactify
@ -74,6 +74,6 @@ este.demos.react.todoApp = este.react.create (`/** @lends {React.ReactComponent.
> I'm the author of "[Land of Lisp](http://landoflisp.com/)" and I love your framework. I built a somewhat similar framework a year ago [WebFUI](https://github.com/drcode/webfui) aimed at ClojureScript. My framework also uses global event delegates, a global "render" function, DOM reconciliation, etc just like react.js. (Of course these ideas all have been floating around the ether for ages, always great to see more people building on them.)
>
> Your implementation is more robust, and so I think the next point release of webfui will simply delegate all the "hard work" to react.js and will only focus on the areas where it adds value (enabling purely functional UI programming in clojurescript, and some other stuff related to streamlining event handling)
> <figure><a href="https://groups.google.com/forum/#!msg/reactjs/e3bYersyd64/qODfcuBR9LwJ"><img src="../img/blog/landoflisp.png"></a></figure>
> <figure><a href="https://groups.google.com/forum/#!msg/reactjs/e3bYersyd64/qODfcuBR9LwJ"><img src="../images/blog/landoflisp.png"></a></figure>
>
> [Read the full post...](https://groups.google.com/forum/#!msg/reactjs/e3bYersyd64/qODfcuBR9LwJ)

4
content/blog/2013-08-26-community-roundup-7.md

@ -17,7 +17,7 @@ It's been three months since we open sourced React and it is going well. Some st
## Wolfenstein Rendering Engine Ported to React
[Pete Hunt](http://www.petehunt.net/) ported the render code of the web version of Wolfenstein 3D to React. Check out [the demo](http://www.petehunt.net/wolfenstein3D-react/wolf3d.html) and [render.js](https://github.com/petehunt/wolfenstein3D-react/blob/master/js/renderer.js#L183) file for the implementation.
<figure><a href="http://www.petehunt.net/wolfenstein3D-react/wolf3d.html"><img src="../img/blog/wolfenstein_react.png"></a></figure>
<figure><a href="http://www.petehunt.net/wolfenstein3D-react/wolf3d.html"><img src="../images/blog/wolfenstein_react.png"></a></figure>
## React & Meteor
@ -51,7 +51,7 @@ It's been three months since we open sourced React and it is going well. Some st
[Jordan Walke](https://github.com/jordwalke) implemented a complete React project creator called [react-page](https://github.com/facebook/react-page/). It supports both server-side and client-side rendering, source transform and packaging JSX files using CommonJS modules, and instant reload.
> Easy Application Development with React JavaScript
> <figure><a href="https://github.com/facebook/react-page/"><img src="../img/blog/react-page.png"></a></figure>
> <figure><a href="https://github.com/facebook/react-page/"><img src="../images/blog/react-page.png"></a></figure>
>
> **Why Server Rendering?**
>

4
content/blog/2013-09-24-community-roundup-8.md

@ -52,13 +52,13 @@ While this is not going to work for all the attributes since they are camelCased
## Markdown in React
[Sophie Alpert](http://sophiebits.com/) converted [marked](https://github.com/chjj/marked), a Markdown JavaScript implementation, in React: [marked-react](https://github.com/sophiebits/marked-react). Even without using JSX, the HTML generation is now a lot cleaner. It is also safer as forgetting a call to `escape` will not introduce an XSS vulnerability.
<figure><a href="https://github.com/sophiebits/marked-react/commit/cb70c9df6542c7c34ede9efe16f9b6580692a457"><img src="../img/blog/markdown_refactor.png"></a></figure>
<figure><a href="https://github.com/sophiebits/marked-react/commit/cb70c9df6542c7c34ede9efe16f9b6580692a457"><img src="../images/blog/markdown_refactor.png"></a></figure>
## Unite from BugBusters
[Renault John Lecoultre](https://twitter.com/renajohn) wrote [Unite](https://www.bugbuster.com/), an interactive tool for analyzing code dynamically using React. It integrates with CodeMirror.
<figure><a href="https://unite.bugbuster.com/"><img src="../img/blog/unite.png"></a></figure>
<figure><a href="https://unite.bugbuster.com/"><img src="../images/blog/unite.png"></a></figure>
## #reactjs IRC Logs

6
content/blog/2013-10-3-community-roundup-9.md

@ -5,7 +5,7 @@ author: [vjeux]
We organized a React hackathon last week-end in the Facebook Seattle office. 50 people, grouped into 15 teams, came to hack for a day on React. It was a lot of fun and we'll probably organize more in the future.
![](../img/blog/react-hackathon.jpg)
![](../images/blog/react-hackathon.jpg)
## React Hackathon Winner
@ -15,7 +15,7 @@ We organized a React hackathon last week-end in the Facebook Seattle office. 50
> The game itself is pretty simple. People join the "room" by going to [http://qu.izti.me](http://qu.izti.me/) on their device. Large displays will show a leaderboard along with the game, and small displays (such as phones) will act as personal gamepads. Users will see questions and a choice of answers. The faster you answer, the more points you earn.
>
> In my opinion, Socket.io and React go together like chocolate and peanut butter. The page was always an accurate representation of the game object.
><figure><a href="http://bold-it.com/javascript/facebook-react-example/"><img src="../img/blog/quiztime.png"></a></figure>
><figure><a href="http://bold-it.com/javascript/facebook-react-example/"><img src="../images/blog/quiztime.png"></a></figure>
>
> [Read More...](http://bold-it.com/javascript/facebook-react-example/)
@ -74,7 +74,7 @@ The video will be available soon on the [JSConf EU website](http://2013.jsconf.e
> The panel is rendered with a random panel- class on each request, and the progress bar gets a random widthX class.
>
> With Turbolinks alone, the entire <body> would be replaced, and transitions would not happen. In this little demo though, React adds and removes classes and text, and the attribute changes are animated with CSS transitions. The DOM is otherwise left intact.
><figure><a href="https://turbo-react.herokuapp.com/"><img src="../img/blog/turboreact.png"></a></figure>
><figure><a href="https://turbo-react.herokuapp.com/"><img src="../images/blog/turboreact.png"></a></figure>
>
> [Check out the demo...](https://turbo-react.herokuapp.com/)

4
content/blog/2013-11-06-community-roundup-10.md

@ -47,7 +47,7 @@ The best part is that no drastic changes have been required to support all those
> [**Read part 2 ...**](http://www.phpied.com/server-side-react-with-php-part-2/)
>
> Rendered markup on the server:
> <figure><a href="http://www.phpied.com/server-side-react-with-php-part-2/"><img src="../img/blog/react-php.png"></a></figure>
> <figure><a href="http://www.phpied.com/server-side-react-with-php-part-2/"><img src="../images/blog/react-php.png"></a></figure>
## TodoMVC Benchmarks
@ -92,7 +92,7 @@ The fact that you can control when components are rendered is a very important c
## Guess the filter
[Connor McSheffrey](http://conr.me) implemented a small game using React. The goal is to guess which filter has been used to create the Instagram photo.
<figure><a href="http://guessthefilter.com/"><img src="../img/blog/guess_filter.jpg"></a></figure>
<figure><a href="http://guessthefilter.com/"><img src="../images/blog/guess_filter.jpg"></a></figure>
## React vs FruitMachine

8
content/blog/2013-11-18-community-roundup-11.md

@ -35,7 +35,7 @@ This round-up is the proof that React has taken off from its Facebook's root: it
[Pavan Podila](http://blog.pixelingene.com/) wrote an in-depth introduction to React on TutsPlus. This is definitively worth reading.
> Within a component-tree, data should always flow down. A parent-component should set the props of a child-component to pass any data from the parent to the child. This is termed as the Owner-Owned pair. On the other hand user-events (mouse, keyboard, touches) will always bubble up from the child all the way to the root component, unless handled in between.
<figure><a href="http://dev.tutsplus.com/tutorials/intro-to-the-react-framework--net-35660"><img src="../img/blog/tutsplus.png"></a></figure>
<figure><a href="http://dev.tutsplus.com/tutorials/intro-to-the-react-framework--net-35660"><img src="../images/blog/tutsplus.png"></a></figure>
>
> [Read the full article ...](http://dev.tutsplus.com/tutorials/intro-to-the-react-framework--net-35660)
@ -51,7 +51,7 @@ This round-up is the proof that React has taken off from its Facebook's root: it
## Genesis Skeleton
[Eric Clemmons](https://ericclemmons.github.io/) is working on a "Modern, opinionated, full-stack starter kit for rapid, streamlined application development". The version 0.4.0 has just been released and has first-class support for React.
<figure><a href="http://genesis-skeleton.com/"><img src="../img/blog/genesis_skeleton.png"></a>a></figure>
<figure><a href="http://genesis-skeleton.com/"><img src="../images/blog/genesis_skeleton.png"></a>a></figure>
## AgFlow Talk
@ -82,10 +82,10 @@ This round-up is the proof that React has taken off from its Facebook's root: it
## Photo Gallery
[Maykel Loomans](http://miekd.com/), designer at Instagram, wrote a gallery for photos he shot using React.
<figure><a href="http://photos.miekd.com/xoxo2013/"><img src="../img/blog/xoxo2013.png"></a>a></figure>
<figure><a href="http://photos.miekd.com/xoxo2013/"><img src="../images/blog/xoxo2013.png"></a>a></figure>
## Random Tweet
<img src="../img/blog/steve_reverse.gif" style="float: right;" />
<img src="../images/blog/steve_reverse.gif" style="float: right;" />
<div style="width: 320px;"><blockquote class="twitter-tweet"><p>I think this reversed gif of Steve Urkel best describes my changing emotions towards the React Lib <a href="http://t.co/JoX0XqSXX3">http://t.co/JoX0XqSXX3</a></p>&mdash; Ryan Seddon (@ryanseddon) <a href="https://twitter.com/ryanseddon/statuses/398572848802852864">November 7, 2013</a></blockquote></div>

8
content/blog/2013-12-23-community-roundup-12.md

@ -14,7 +14,7 @@ React got featured on the front-page of Hacker News thanks to the Om library. If
> Wait, wait, wait. What does the performance of persistent data structures have to do with the future of JavaScript MVCs?
>
> A whole lot.
> <figure><a href="https://swannodette.github.io/2013/12/17/the-future-of-javascript-mvcs/"><img src="../img/blog/om-backbone.png"></a></figure>
> <figure><a href="https://swannodette.github.io/2013/12/17/the-future-of-javascript-mvcs/"><img src="../images/blog/om-backbone.png"></a></figure>
>
> [Read the full article...](https://swannodette.github.io/2013/12/17/the-future-of-javascript-mvcs/)
@ -46,7 +46,7 @@ Managing the scroll position when new content is inserted is usually very tricky
## Lights Out
React declarative approach is well suited to write games. [Cheng Lou](https://github.com/chenglou) wrote the famous Lights Out game in React. It's a good example of use of [TransitionGroup](/docs/animation.html) to implement animations.
<figure><a href="https://chenglou.github.io/react-lights-out/"><img src="../img/blog/lights-out.png"></a></figure>
<figure><a href="https://chenglou.github.io/react-lights-out/"><img src="../images/blog/lights-out.png"></a></figure>
[Try it out!](https://chenglou.github.io/react-lights-out/)
@ -54,7 +54,7 @@ React declarative approach is well suited to write games. [Cheng Lou](https://gi
## Reactive Table Bookmarklet
[Stoyan Stefanov](http://www.phpied.com/) wrote a bookmarklet to process tables on the internet. It adds a little "pop" button that expands to a full-screen view with sorting, editing and export to csv and json.
<figure><a href="http://www.phpied.com/reactivetable-bookmarklet/"><img src="../img/blog/reactive-bookmarklet.png"></a></figure>
<figure><a href="http://www.phpied.com/reactivetable-bookmarklet/"><img src="../images/blog/reactive-bookmarklet.png"></a></figure>
[Check out the blog post...](http://www.phpied.com/reactivetable-bookmarklet/)
@ -91,7 +91,7 @@ hoodie new todomvc -t "hoodiehq/hoodie-react-todomvc"
## JSX Compiler
Ever wanted to have a quick way to see what a JSX tag would be converted to? [Tim Yung](http://www.yungsters.com/) made a page for it.
<figure><a href="/react/jsx-compiler.html"><img src="../img/blog/jsx-compiler.png"></a></figure>
<figure><a href="/react/jsx-compiler.html"><img src="../images/blog/jsx-compiler.png"></a></figure>
[Try it out!](/jsx-compiler.html)

2
content/blog/2013-12-30-community-roundup-13.md

@ -94,7 +94,7 @@ var MyComponent = React.createClass({
[David Chang](http://davidandsuzi.com/) working at [HasOffer](http://www.hasoffers.com/) wanted to speed up his Angular app and replaced Angular primitives by React at different layers. When using React naively it is 67% faster, but when combining it with angular's transclusion it is 450% slower.
> Rendering this takes 803ms for 10 iterations, hovering around 35 and 55ms for each data reload (that's 67% faster). You'll notice that the first load takes a little longer than successive loads, and the second load REALLY struggles - here, it's 433ms, which is more than half of the total time!
> <figure><a href="http://davidandsuzi.com/ngreact-react-components-in-angular/"><img src="../img/blog/ngreact.png"></a></figure>
> <figure><a href="http://davidandsuzi.com/ngreact-react-components-in-angular/"><img src="../images/blog/ngreact.png"></a></figure>
>
> [Read the full article...](http://davidandsuzi.com/ngreact-react-components-in-angular/)

2
content/blog/2014-01-02-react-chrome-developer-tools.md

@ -12,6 +12,6 @@ You will get a new tab titled "React" in your Chrome DevTools. This tab shows yo
Selecting a Component in this tab allows you to view and edit its props and state in the panel on the right. In the breadcrumbs at the bottom, you can inspect the selected Component, the Component that created it, the Component that created that one, and so on.
When you inspect a DOM element using the regular Elements tab, you can switch over to the React tab and the corresponding Component will be automatically selected. The Component will also be automatically selected if you have a breakpoint within its render phase. This allows you to step through the render tree and see how one Component affects another one.
<figure><a href="https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi"><img src="../img/blog/react-dev-tools.jpg"></a></figure>
<figure><a href="https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi"><img src="../images/blog/react-dev-tools.jpg"></a></figure>
We hope these tools will help your team better understand your component hierarchy and track down bugs. We're very excited about this initial launch and appreciate any feedback you may have. As always, we also accept [pull requests on GitHub](https://github.com/facebook/react-devtools).

2
content/blog/2014-01-06-community-roundup-14.md

@ -21,7 +21,7 @@ React is only one-piece of your web application stack. [Mark Lussier](https://gi
## Animal Sounds
[Josh Duck](http://joshduck.com/) used React in order to build a Windows 8 tablet app. This is a good example of a touch app written in React.
[![](../img/blog/animal-sounds.jpg)](http://apps.microsoft.com/windows/en-us/app/baby-play-animal-sounds/9280825c-2ed9-41c0-ba38-aa9a5b890bb9)
[![](../images/blog/animal-sounds.jpg)](http://apps.microsoft.com/windows/en-us/app/baby-play-animal-sounds/9280825c-2ed9-41c0-ba38-aa9a5b890bb9)
[Download the app...](http://apps.microsoft.com/windows/en-us/app/baby-play-animal-sounds/9280825c-2ed9-41c0-ba38-aa9a5b890bb9)

5
content/blog/2014-02-15-community-roundup-16.md

@ -15,7 +15,7 @@ Got five minutes to pitch React to your coworkers? John Lynch ([@johnrlynch](htt
## React's diff algorithm
React core team member Christopher Chedeau ([@vjeux](https://twitter.com/vjeux)) explores the innards of React's tree diffing algorithm in this [extensive and well-illustrated post](http://calendar.perfplanet.com/2013/diff/). <figure>[![](../img/blog/react-diff-tree.png)](http://calendar.perfplanet.com/2013/diff/)</figure>
React core team member Christopher Chedeau ([@vjeux](https://twitter.com/vjeux)) explores the innards of React's tree diffing algorithm in this [extensive and well-illustrated post](http://calendar.perfplanet.com/2013/diff/). <figure>[![](../images/blog/react-diff-tree.png)](http://calendar.perfplanet.com/2013/diff/)</figure>
While we're talking about tree diffing: Matt Esch ([@MatthewEsch](https://twitter.com/MatthewEsch)) created [this project](https://github.com/Matt-Esch/virtual-dom), which aims to implement the virtual DOM and a corresponding diff algorithm as separate modules.
@ -27,7 +27,6 @@ While we're talking about tree diffing: Matt Esch ([@MatthewEsch](https://twitte
James Padosley wrote a short post on the basics (and merits) of React: [What is React?](http://james.padolsey.com/javascript/what-is-react/)
> What I like most about React is that it doesn't impose heady design patterns and data-modelling abstractions on me. [...] Its opinions are so minimal and its abstractions so focused on the problem of the DOM, that you can merrily slap your design choices atop.
>
> [Read the full post...](http://james.padolsey.com/javascript/what-is-react/)
@ -68,7 +67,7 @@ Eric Florenzano ([@ericflo](https://twitter.com/ericflo)) sheds some light on wh
> [Read the full post...](http://eflorenzano.com/blog/2014/01/23/react-finally-server-client/)
## Building a complex React component
[Matt Harrison](http://matt-harrison.com/) walks through the process of [creating an SVG-based Resistance Calculator](http://matt-harrison.com/building-a-complex-web-component-with-facebooks-react-library/) using React. <figure>[![](../img/blog/resistance-calculator.png)](http://matt-harrison.com/building-a-complex-web-component-with-facebooks-react-library/)</figure>
[Matt Harrison](http://matt-harrison.com/) walks through the process of [creating an SVG-based Resistance Calculator](http://matt-harrison.com/building-a-complex-web-component-with-facebooks-react-library/) using React. <figure>[![](../images/blog/resistance-calculator.png)](http://matt-harrison.com/building-a-complex-web-component-with-facebooks-react-library/)</figure>

6
content/blog/2014-02-24-community-roundup-17.md

@ -20,7 +20,7 @@ Sberbank, Russia's largest bank, recently switched large parts of their site to
### Makona Editor
John Lynch ([@johnrlynch](https://twitter.com/johnrlynch)) created Makona, a block-style document editor for the web. Blocks of different content types comprise documents, authored using plain markup. At the switch of a toggle, block contents are then rendered on the page. While not quite a WYSIWYG editor, Makona uses plain textareas for input. This makes it compatible with a wider range of platforms than traditional rich text editors.
[![](../img/blog/makona-editor.png)](https://johnthethird.github.io/makona-editor/)
[![](../images/blog/makona-editor.png)](https://johnthethird.github.io/makona-editor/)
### Create Chrome extensions using React
React is in no way limited to just web pages. Brandon Tilley ([@BinaryMuse](https://twitter.com/BinaryMuse)) just released a detailed walk-through of [how he built his Chrome extension "Fast Tab Switcher" using React](http://brandontilley.com/2014/02/24/creating-chrome-extensions-with-react.html).
@ -41,7 +41,7 @@ Javier Aguirre ([@javaguirre](https://twitter.com/javaguirre)) put together a si
### SVG-based graphical node editor
[NoFlo](http://noflojs.org/) and [Meemoo](http://meemoo.org/) developer [Forresto Oliphant](http://www.forresto.com/) built an awesome SVG-based [node editor](https://forresto.github.io/prototyping/react/) in React.
[![](../img/blog/react-svg-fbp.png)](https://forresto.github.io/prototyping/react/)
[![](../images/blog/react-svg-fbp.png)](https://forresto.github.io/prototyping/react/)
### Ultimate Tic-Tac-Toe Game in React
@ -74,7 +74,7 @@ Dmitry Chestnykh [@dchest](https://twitter.com/dchest) wrote a [static search in
[Martin Andert](https://github.com/martinandert) created [react-lorem-component](https://github.com/martinandert/react-lorem-component), a simple component for all your placeholding needs.
### Input with placeholder shim
[react-input-placeholder](https://github.com/enigma-io/react-input-placeholder) by [enigma-io](https://github.com/enigma-io) is a small wrapper around React.DOM.input that shims in placeholder functionality for browsers that don't natively support it.
[react-input-placeholder](enigma-io/react-input-placeholder) by [enigma-io](@enigma-io) is a small wrapper around React.DOM.input that shims in placeholder functionality for browsers that don't natively support it.
### diContainer

2
content/blog/2014-06-27-community-roundup-19.md

@ -27,7 +27,7 @@ The core concepts React themselves is something very valuable that the community
And don't forget [Pete Hunt](https://github.com/petehunt)'s Wolfenstein 3D rendering engine in React ([source code](https://github.com/petehunt/wolfenstein3D-react/blob/master/js/renderer.js#L183)). While it's nearly a year old, it's still a nice demo.
[![](../img/blog/wolfenstein_react.png)](http://www.petehunt.net/wolfenstein3D-react/wolf3d.html)
[![](../images/blog/wolfenstein_react.png)](http://www.petehunt.net/wolfenstein3D-react/wolf3d.html)
Give us a shoutout on IRC or [React Google Groups](https://groups.google.com/forum/#!forum/reactjs) if you've used React in some Interesting places.

4
content/blog/2014-07-28-community-roundup-20.md

@ -9,7 +9,7 @@ It's an exciting time for React as there are now more commits from open source c
[Atom, GitHub's code editor, is now using React](http://blog.atom.io/2014/07/02/moving-atom-to-react.html) to build the editing experience. They made the move in order to improve performance. By default, React helped them eliminate unnecessary reflows, enabling them to focus on architecting the rendering pipeline in order to minimize repaints by using hardware acceleration. This is a testament to the fact that React's architecture is perfect for high performant applications.
[<img src="../img/blog/gpu-cursor-move.gif" style="width: 100%;" />](http://blog.atom.io/2014/07/02/moving-atom-to-react.html)
[<img src="../images/blog/gpu-cursor-move.gif" style="width: 100%;" />](http://blog.atom.io/2014/07/02/moving-atom-to-react.html)
## Why Does React Scale?
@ -72,7 +72,7 @@ In related news, the next [React SF Meetup](http://www.meetup.com/ReactJS-San-Fr
One of the strengths of React is that it plays nicely with other libraries. Jim Cowart proved it by writing a tutorial that explains how to write [React component adapters for KendoUI](http://www.ifandelse.com/using-reactjs-and-kendoui-together/).
<figure><a href="http://www.ifandelse.com/using-reactjs-and-kendoui-together/"><img src="../img/blog/kendoui.png" /></a></figure>
<figure><a href="http://www.ifandelse.com/using-reactjs-and-kendoui-together/"><img src="../images/blog/kendoui.png" /></a></figure>
## Acorn JSX

2
content/blog/2014-07-30-flux-actions-and-the-dispatcher.md

@ -23,7 +23,7 @@ Different actions are identified by a type attribute. When all of the stores rec
Letting the stores update themselves eliminates many entanglements typically found in MVC applications, where cascading updates between models can lead to unstable state and make accurate testing very difficult. The objects within a Flux application are highly decoupled, and adhere very strongly to the [Law of Demeter](https://en.wikipedia.org/wiki/Law_of_Demeter), the principle that each object within a system should know as little as possible about the other objects in the system. This results in software that is more maintainable, adaptable, testable, and easier for new engineering team members to understand.
<img src="../img/blog/flux-diagram.png" style="width: 100%;" />
<img src="../images/blog/flux-diagram.png" style="width: 100%;" />
Why We Need a Dispatcher

8
content/blog/2014-08-03-community-roundup-21.md

@ -23,7 +23,7 @@ React.renderComponent((
Areeb Malik, from Facebook, talks about his experience using React. "On paper, all those JS frameworks look promising: clean implementations, quick code design, flawless execution. But what happens when you stress test JavaScript? What happens when you throw 6 megabytes of code at it? In this talk, we'll investigate how React performs in a high stress situation, and how it has helped our team build safe code on a massive scale"
[![](../img/blog/skills-matter.png)](https://skillsmatter.com/skillscasts/5429-going-big-with-react)
[![](../images/blog/skills-matter.png)](https://skillsmatter.com/skillscasts/5429-going-big-with-react)
<!--
<iframe allowfullscreen="" data-progress="true" frameborder="0" height="390" id="vimeo-player" mozallowfullscreen="" src="//player.vimeo.com/video/100245392?api=1&amp;title=0" webkitallowfullscreen="" width="640"></iframe>
@ -69,21 +69,21 @@ var App = React.createClass({
Have you ever wondered how JSX was implemented? James Long wrote a very instructive blog post that explains how to [compile JSX with Sweet.js using Readtables](http://jlongster.com/Compiling-JSX-with-Sweet.js-using-Readtables).
[![](../img/blog/sweet-jsx.png)](http://jlongster.com/Compiling-JSX-with-Sweet.js-using-Readtables)
[![](../images/blog/sweet-jsx.png)](http://jlongster.com/Compiling-JSX-with-Sweet.js-using-Readtables)
## First Look: Getting Started with React
[Kirill Buga](http://modernweb.com/authors/kirill-buga/) wrote an article on Modern Web explaining how [React is different from traditional MVC](http://modernweb.com/2014/07/23/getting-started-reactjs/) used by most JavaScript applications
<figure><a href="http://modernweb.com/2014/07/23/getting-started-reactjs"><img src="../img/blog/first-look.png" /></a></figure>
<figure><a href="http://modernweb.com/2014/07/23/getting-started-reactjs"><img src="../images/blog/first-look.png" /></a></figure>
## React Draggable
[Matt Zabriskie](https://github.com/mzabriskie) released a [project](https://github.com/mzabriskie/react-draggable) to make your react components draggable.
[![](../img/blog/react-draggable.png)](https://mzabriskie.github.io/react-draggable/example/)
[![](../images/blog/react-draggable.png)](https://mzabriskie.github.io/react-draggable/example/)
## HTML Parser2 React

4
content/blog/2014-09-12-community-round-up-22.md

@ -48,7 +48,7 @@ var translated = (
[Trường](http://truongtx.me/) wrote a little guide to help your [getting started using React, Browserify and Gulp](http://truongtx.me/2014/07/18/using-reactjs-with-browserify-and-gulp/).
<figure><a href="http://truongtx.me/2014/07/18/using-reactjs-with-browserify-and-gulp/"><img src="../img/blog/react-browserify-gulp.jpg" /></a></figure>
<figure><a href="http://truongtx.me/2014/07/18/using-reactjs-with-browserify-and-gulp/"><img src="../images/blog/react-browserify-gulp.jpg" /></a></figure>
## React Style
@ -111,4 +111,4 @@ When [Kent William Innholt](http://http://kentwilliam.com/) who works at [M>Path
To finish this round-up, Andrew Gleave made a page that displays the [Weather](https://github.com/andrewgleave/react-weather). It's great to see that React is also used for small prototypes.
<figure><a href="https://github.com/andrewgleave/react-weather"><img src="../img/blog/weather.png" /></a></figure>
<figure><a href="https://github.com/andrewgleave/react-weather"><img src="../images/blog/weather.png" /></a></figure>

6
content/blog/2014-10-17-community-roundup-23.md

@ -27,7 +27,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
[Mikael Brassman](https://spoike.ghost.io/) wrote [Reflux](https://github.com/spoike/refluxjs), a library that implements Flux concepts. Note that it diverges significantly from the way we use Flux at Facebook. He explains [the reasons why in a blog post](https://spoike.ghost.io/deconstructing-reactjss-flux/).
<center>
<a href="https://spoike.ghost.io/deconstructing-reactjss-flux/"><img src="../img/blog/reflux-flux.png" width="400" /></a>
<a href="https://spoike.ghost.io/deconstructing-reactjss-flux/"><img src="../images/blog/reflux-flux.png" width="400" /></a>
</center>
@ -47,7 +47,7 @@ Yahoo is converting Yahoo Mail to React and Flux and in the process, they open s
[Kevin Dangoor](http://www.kevindangoor.com/) is converting the project tree of [Adobe's Bracket text editor](http://brackets.io/) to React and Flux. He wrote about his experience [using Flux](http://www.kevindangoor.com/2014/09/intro-to-the-new-brackets-project-tree/).
<center>
<a href="http://www.kevindangoor.com/2014/09/intro-to-the-new-brackets-project-tree/"><img src="../img/blog/flux-diagram.png" width="400" /></a>
<a href="http://www.kevindangoor.com/2014/09/intro-to-the-new-brackets-project-tree/"><img src="../images/blog/flux-diagram.png" width="400" /></a>
</center>
@ -122,7 +122,7 @@ undo: function() {
[Nicola Paolucci](https://github.com/durdn) from Atlassian wrote a great guide to help your getting understand [Flux step by step](https://blogs.atlassian.com/2014/08/flux-architecture-step-by-step/).
<center>
<a href="https://blogs.atlassian.com/2014/08/flux-architecture-step-by-step/"><img src="../img/blog/flux-chart.png" width="400" /></a>
<a href="https://blogs.atlassian.com/2014/08/flux-architecture-step-by-step/"><img src="../images/blog/flux-chart.png" width="400" /></a>
</center>

2
content/blog/2015-03-04-community-roundup-25.md

@ -44,7 +44,7 @@ A team from New Zealand called [Atomic](https://atomic.io/) is [building web and
[Polarr](https://github.com/Polarrco) have rebuilt [their browser-based photo editor](http://polarrist.tumblr.com/post/111290422225/polarr-photo-editor-2-0-alpha-is-here) with React.
<center><a href="http://polarrist.tumblr.com/post/111290422225/polarr-photo-editor-2-0-alpha-is-here"><img src="../img/blog/polarr.jpg"></a></center>
<center><a href="http://polarrist.tumblr.com/post/111290422225/polarr-photo-editor-2-0-alpha-is-here"><img src="../images/blog/polarr.jpg"></a></center>
## It's F8!

8
content/blog/2015-03-19-building-the-facebook-news-feed-with-relay.md

@ -13,7 +13,7 @@ We're working hard to prepare GraphQL and Relay for public release. In the meant
The diagram below shows the main parts of the Relay architecture on the client and the server:
<img src="../img/blog/relay-components/relay-architecture.png" alt="Relay Architecture" width="650" />
<img src="../images/blog/relay-components/relay-architecture.png" alt="Relay Architecture" width="650" />
The main pieces are as follows:
@ -30,7 +30,7 @@ This post will focus on **Relay components** that describe encapsulated units of
To see how components work and can be composed, let's implement a basic version of the Facebook News Feed in Relay. Our application will have two components: a `<NewsFeed>` that renders a list of `<Story>` items. We'll introduce the plain React version of each component first and then convert it to a Relay component. The goal is something like the following:
<img src="../img/blog/relay-components/sample-newsfeed.png" alt="Sample News Feed" width="360" />
<img src="../images/blog/relay-components/sample-newsfeed.png" alt="Sample News Feed" width="360" />
<br/>
@ -73,7 +73,7 @@ export default Relay.createContainer(Story, {
Before adding the GraphQL fragment, let's look at the component hierarchy this creates:
<img src="../img/blog/relay-components/relay-containers.png" width="397" alt="React Container Data Flow" />
<img src="../images/blog/relay-components/relay-containers.png" width="397" alt="React Container Data Flow" />
Most props will be passed through from the container to the original component. However, Relay will return the query results for a prop whenever a fragment is defined. In this case we'll add a GraphQL fragment for `story`:
@ -122,7 +122,7 @@ Relay guarantees that all data required to render a component will be available
The diagram below shows how Relay containers make data available to our React components:
<img src="../img/blog/relay-components/relay-containers-data-flow.png" width="650" alt="Relay Container Data Flow" />
<img src="../images/blog/relay-components/relay-containers-data-flow.png" width="650" alt="Relay Container Data Flow" />
<br/>

10
content/blog/2015-03-30-community-roundup-26.md

@ -20,7 +20,7 @@ We open sourced React Native last week and the community reception blew away all
If you are getting started with React Native, you should absolutely [use this tutorial](http://www.raywenderlich.com/99473/introducing-react-native-building-apps-javascript) from Colin Eberhardt. It goes through all the steps to make a reasonably complete app.
[![](../img/blog/property-finder.png)](http://www.raywenderlich.com/99473/introducing-react-native-building-apps-javascript)
[![](../images/blog/property-finder.png)](http://www.raywenderlich.com/99473/introducing-react-native-building-apps-javascript)
Colin also [blogged about his experience using React Native](http://blog.scottlogic.com/2015/03/26/react-native-retrospective.html) for a few weeks and gives his thoughts on why you would or wouldn't use it.
@ -36,21 +36,21 @@ Spencer Ahrens and I had the great pleasure to talk about React Native on [The C
Less than 24 hours after React Native was open sourced, Simarpreet Singh built an [Hacker News reader app from scratch](https://github.com/iSimar/HackerNews-React-Native). It's unbelievable how fast he was able to pull it off!
[![](../img/blog/hacker-news-react-native.png)](https://github.com/iSimar/HackerNews-React-Native)
[![](../images/blog/hacker-news-react-native.png)](https://github.com/iSimar/HackerNews-React-Native)
## Parse + React
There's a huge ecosystem of JavaScript modules on npm and React Native was designed to work well with the ones that don't have DOM dependencies. Parse is a great example; you can `npm install parse` on your React Native project and it'll work as is. :) We still have [a](https://github.com/facebook/react-native/issues/406) [few](https://github.com/facebook/react-native/issues/370) [issues](https://github.com/facebook/react-native/issues/316) to solve; please create an issue if your favorite library doesn't work out of the box.
[![](../img/blog/parse-react.jpg)](http://blog.parse.com/2015/03/25/parse-and-react-shared-chemistry/)
[![](../images/blog/parse-react.jpg)](http://blog.parse.com/2015/03/25/parse-and-react-shared-chemistry/)
## tcomb-form-native
Giulio Canti is the author of the [tcomb-form library](https://github.com/gcanti/tcomb-form) for React. He already [ported it to React Native](https://github.com/gcanti/tcomb-form-native) and it looks great!
[![](../img/blog/tcomb-react-native.png)](https://github.com/gcanti/tcomb-form-native)
[![](../images/blog/tcomb-react-native.png)](https://github.com/gcanti/tcomb-form-native)
## Facebook Login with React Native
@ -62,7 +62,7 @@ One of the reason we built React Native is to be able to use all the libraries i
Jay Garcia spent a lot of time during the beta working on a NES music player with React Native. He wrote a blog post to share his experience and explains some code snippets.
[![](../img/blog/modus-create.gif)](http://moduscreate.com/react-native-has-landed/)
[![](../images/blog/modus-create.gif)](http://moduscreate.com/react-native-has-landed/)
## React Native with Babel and webpack

8
content/blog/2015-08-03-new-react-devtools-beta.md

@ -6,7 +6,7 @@ author: [jaredly]
We've made an entirely new version of the devtools, and we want you to try it
out!
![The full devtools gif](../img/blog/devtools-full.gif)
![The full devtools gif](../images/blog/devtools-full.gif)
## Why entirely new?
@ -33,7 +33,7 @@ Yeah!
### The Tree View
![The new tree view of the devtools](../img/blog/devtools-tree-view.png)
![The new tree view of the devtools](../images/blog/devtools-tree-view.png)
- Much richer view of your props, including the contents of objects and arrays
- Custom components are emphasized, native components are de-emphasized
@ -52,14 +52,14 @@ Yeah!
Select the search bar (or press "/"), and start searching for a component by
name.
![](../img/blog/devtools-search.gif)
![](../images/blog/devtools-search.gif)
### The Side Pane
- Now shows the `context` for a component
- Right-click to store a prop/state value as a global variable
![](../img/blog/devtools-side-pane.gif)
![](../images/blog/devtools-side-pane.gif)
## How do I install it?

2
content/blog/2015-09-02-new-react-developer-tools.md

@ -6,7 +6,7 @@ author: [sophiebits]
A month ago, we [posted a beta](/blog/2015/08/03/new-react-devtools-beta.html) of the new React developer tools. Today, we're releasing the first stable version of the new devtools. We're calling it version 0.14, but it's a full rewrite so we think of it more like a 2.0 release.
![Video/screenshot of new devtools](../img/blog/devtools-full.gif)
![Video/screenshot of new devtools](../images/blog/devtools-full.gif)
It contains a handful of new features, including:

4
content/blog/2015-09-14-community-roundup-27.md

@ -43,7 +43,7 @@ Joe McBride ([joemcbride](https://github.com/joemcbride)) has an up-and-running
Interact with this [visual tour of Relay's architecture](http://sgwilym.github.io/relay-visual-learners/) by Sam Gwilym ([sgwilym](https://github.com/sgwilym)).
<a href="http://sgwilym.github.io/relay-visual-learners/">
<img src="../img/blog/relay-visual-architecture-tour.png" alt="Relay for visual learners" style="max-width:100%">
<img src="../images/blog/relay-visual-architecture-tour.png" alt="Relay for visual learners" style="max-width:100%">
</a>
Sam has already launched a product that leverages Relay's data-fetching, optimistic responses, pagination, and mutations &ndash; all atop a Ruby GraphQL server: [new.comique.co](http://new.comique.co/)
@ -56,7 +56,7 @@ Michael Hart ([mhart](https://mhart)) built a [simple-relay-starter](https://git
## Routing around
Jimmy Jia ([taion](https://github.com/taion)) and Gerald Monaco ([devknoll](https://github.com/devknoll)) have been helping lost URLs find their way to Relay apps through their work on [react-router-relay](https://github.com/relay-tools/react-router-relay). Check out Christoph Nakazawa's ([cpojer](https://github.com/cpojer)) [blog post](https://medium.com/@cpojer/relay-and-routing-36b5439bad9) on the topic. Jimmy completed the Relay TodoMVC example with routing, which you can check out at [taion/relay-todomvc](https://github.com/taion/relay-todomvc).
Jimmy Jia ([taion](@taion)) and Gerald Monaco ([devknoll](@devknoll)) have been helping lost URLs find their way to Relay apps through their work on [react-router-relay](relay-tools/react-router-relay). Check out Christoph Nakazawa's ([cpojer](@cpojer)) [blog post](medium.com/@cpojer/relay-and-routing-36b5439bad9) on the topic. Jimmy completed the Relay TodoMVC example with routing, which you can check out at [taion/relay-todomvc](taion/relay-todomvc).
Chen Hung-Tu ([transedward](https://github.com/transedward)) built a chat app atop the above mentioned router, with threaded conversations and pagination. Check it out at [transedward/relay-chat](https://github.com/transedward/relay-chat).

14
content/blog/2016-02-19-new-versioning-scheme.md

@ -13,21 +13,21 @@ The core of the React API has been stable for years. Our business as well as man
React isn't just a library but an ecosystem. We know that your applications and ours are not just isolated islands of code. It is a network of your own application code, your own open source components and third party libraries that all depend on React.
<img src="../img/blog/versioning-1.png" width="403">
<img src="../images/blog/versioning-1.png" width="403">
Therefore it is important that we don't just upgrade our own codebases but that we bring our whole community with us. We take the upgrade path very seriously - for everyone.
<img src="../img/blog/versioning-poll.png" width="596">
<img src="../images/blog/versioning-poll.png" width="596">
## Introducing Minor Releases
Ideally everyone could just depend on the latest version of React all the time.
<img src="../img/blog/versioning-2.png" width="463">
<img src="../images/blog/versioning-2.png" width="463">
We know that in practice that is not possible. In the future, we expect more new additive APIs rather than breakage of existing ones. By moving to major revisions in the semver scheme, we can release new versions without breaking existing ones.
<img src="../img/blog/versioning-3.png" width="503">
<img src="../images/blog/versioning-3.png" width="503">
That means that if one component needs a new API, there is no need for any of the other components to do any further work. They remain compatible.
@ -47,14 +47,14 @@ Once we've reached the end of life for a particular major version, we'll release
If you try to upgrade your component to 16.0.0 you might find that your application no longer works if you still have other dependencies. E.g. if Ryan's and Jed's components are only compatible with 15.x.x.
<img src="../img/blog/versioning-4.png" width="498">
<img src="../images/blog/versioning-4.png" width="498">
Worst case, you revert back to 15.1.0 for your application. Since you'll want to use your component, you might also revert that one.
<img src="../img/blog/versioning-5.png" width="493">
<img src="../images/blog/versioning-5.png" width="493">
Of course, Ryan and Jed think the same way. If we're not careful, we can hit a cliff where nobody upgrades. This has happened to many software project ecosystems in the past.
Therefore, we're committed to making it easy for most components and libraries built on top of React to be compatible with two major versions at the same time. We will do this by introducing new APIs before completely removing the old ones, thereby avoiding those cliffs.
<img src="../img/blog/versioning-6.png" width="493">
<img src="../images/blog/versioning-6.png" width="493">

12
content/blog/2016-07-22-create-apps-with-no-configuration.md

@ -27,22 +27,22 @@ create-react-app hello-world
This will take a while as npm installs the transitive dependencies, but once it’s done, you will see a list of commands you can run in the created folder:
![created folder](../img/blog/create-apps-with-no-configuration/created-folder.png)
![created folder](../images/blog/create-apps-with-no-configuration/created-folder.png)
### Starting the Server
Run `npm start` to launch the development server. The browser will open automatically with the created app’s URL.
![compiled successfully](../img/blog/create-apps-with-no-configuration/compiled-successfully.png)
![compiled successfully](../images/blog/create-apps-with-no-configuration/compiled-successfully.png)
Create React App uses both webpack and Babel under the hood.
The console output is tuned to be minimal to help you focus on the problems:
![failed to compile](../img/blog/create-apps-with-no-configuration/failed-to-compile.png)
![failed to compile](../images/blog/create-apps-with-no-configuration/failed-to-compile.png)
ESLint is also integrated so lint warnings are displayed right in the console:
![compiled with warnings](../img/blog/create-apps-with-no-configuration/compiled-with-warnings.png)
![compiled with warnings](../images/blog/create-apps-with-no-configuration/compiled-with-warnings.png)
We only picked a small subset of lint rules that often lead to bugs.
@ -50,7 +50,7 @@ We only picked a small subset of lint rules that often lead to bugs.
To build an optimized bundle, run `npm run build`:
![npm run build](../img/blog/create-apps-with-no-configuration/npm-run-build.png)
![npm run build](../images/blog/create-apps-with-no-configuration/npm-run-build.png)
It is minified, correctly envified, and the assets include content hashes for caching.
@ -139,7 +139,7 @@ Still, we knew it was frustrating to spend days setting up a project when all yo
We found ourselves in an unusual dilemma.
So far, [our strategy](/contributing/design-principles.html#dogfooding) has been to only release the code that we are using at Facebook. This helped us ensure that every project is battle-tested and has clearly defined scope and priorities.
So far, [our strategy](/docs/design-principles.html#dogfooding) has been to only release the code that we are using at Facebook. This helped us ensure that every project is battle-tested and has clearly defined scope and priorities.
However, tooling at Facebook is different than at many smaller companies. Linting, transpilation, and packaging are all handled by powerful remote development servers, and product engineers don’t need to configure them. While we wish we could give a dedicated server to every user of React, even Facebook cannot scale that well!

4
content/blog/2016-09-28-our-first-50000-stars.md

@ -9,7 +9,7 @@ Just three and a half years ago we open sourced a little JavaScript library call
In order to celebrate 50,000 GitHub stars, [Maggie Appleton](http://www.maggieappleton.com/) from [egghead.io](http://egghead.io/) has designed us a special T-shirt, which will be available for purchase from Teespring **only for a week** through Thursday, October 6. Maggie also wrote [a blog post](https://www.behance.net/gallery/43269677/Reacts-50000-Stars-Shirt) showing all the different concepts she came up with before settling on the final design.
<a target="_blank" href="https://teespring.com/react-50000-stars"><img src="../img/blog/react-50k-tshirt.jpg" width="650" height="340" alt="React 50k Tshirt" /></a>
<a target="_blank" href="https://teespring.com/react-50000-stars"><img src="../images/blog/react-50k-tshirt.jpg" width="650" height="340" alt="React 50k Tshirt" /></a>
The T-shirts are super soft using American Apparel's tri-blend fabric; we also have kids and toddler T-shirts and baby onesies available.
@ -222,7 +222,7 @@ To make this happen, React had to be decoupled from Facebook's infrastructure, s
As we started to prepare for the open source launch, [Maykel Loomans](https://twitter.com/miekd), a designer on Instagram, made a mock of what the website could look like. The header ended up defining the visual identity of React: its logo and the electric blue color!
<center><a target="_blank" href="../img/blog/react-50k-mock-full.jpg"><img src="../img/blog/react-50k-mock.jpg" width="400" height="410" alt="React website mock" /></a></center>
<center><a target="_blank" href="../images/blog/react-50k-mock-full.jpg"><img src="../images/blog/react-50k-mock.jpg" width="400" height="410" alt="React website mock" /></a></center>
In its earliest days, React benefited tremendously from feedback, ideas, and technical contributions of early adopters and collaborators all over the company. While it might look like an overnight success in hindsight, the story of React is actually a great example of how new ideas often need to go through several rounds of refinement, iteration, and course correction over a long period of time before reaching their full potential.

2
content/blog/2016-11-16-react-v15.4.0.md

@ -25,7 +25,7 @@ Another thing to watch out for is that React DOM Server is now about the same si
You can now visualize React components in the Chrome Timeline. This lets you see which components exactly get mounted, updated, and unmounted, how much time they take relative to each other.
<img src="../img/blog/react-perf-chrome-timeline.png" width="651" height="228" alt="React components in Chrome timeline" />
<img src="../images/blog/react-perf-chrome-timeline.png" width="651" height="228" alt="React components in Chrome timeline" />
To use it:

2
content/blog/2017-04-07-react-v15.5.0.md

@ -3,7 +3,7 @@ title: "React v15.5.0"
author: [acdlite]
---
It's been exactly one year since the last breaking change to React. Our next major release, React 16, will include some exciting improvements, including a [complete rewrite](https://www.youtube.com/watch?v=ZCuYPiUIONs) of React's internals. [We take stability seriously](/contributing/design-principles.html#stability), and are committed to bringing those improvements to all of our users with minimal effort.
It's been exactly one year since the last breaking change to React. Our next major release, React 16, will include some exciting improvements, including a [complete rewrite](https://www.youtube.com/watch?v=ZCuYPiUIONs) of React's internals. [We take stability seriously](/docs/design-principles.html#stability), and are committed to bringing those improvements to all of our users with minimal effort.
To that end, today we're releasing React 15.5.0.

12
content/blog/2017-05-18-whats-new-in-create-react-app.md

@ -23,7 +23,7 @@ If you had to eject your app for one reason or another, Webpack provides a [conf
The biggest notable webpack 2 feature is the ability to write and import [ES6 modules](http://2ality.com/2014/09/es6-modules-final.html) directly without compiling them to CommonJS. This shouldn’t affect how you write code since you likely already use `import` and `export` statements, but it will help catch more mistakes like missing named exports at compile time:
![Export validation](../img/blog/cra-update-exports.gif)
![Export validation](../images/blog/cra-update-exports.gif)
In the future, as the ecosystem around ES6 modules matures, you can expect more improvements to your app's bundle size thanks to [tree shaking](https://webpack.js.org/guides/tree-shaking/).
@ -37,7 +37,7 @@ To address these issues, we are introducing an overlay that pops up whenever the
A GIF is worth a thousand words:
![Runtime error overlay](../img/blog/cra-runtime-error.gif)
![Runtime error overlay](../images/blog/cra-runtime-error.gif)
(Yes, it integrates with your editor!)
@ -50,7 +50,7 @@ In the future, we plan to teach the runtime error overlay to understand more abo
Newly created projects are built as [Progressive Web Apps](https://developers.google.com/web/progressive-web-apps/) by default. This means that they employ [service workers](https://developers.google.com/web/fundamentals/getting-started/primers/service-workers) with an [offline-first caching strategy](https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#cache-falling-back-to-network) to minimize the time it takes to serve the app to the users who visit it again. You can opt out of this behavior, but we recommend it both for new and existing apps, especially if you target mobile devices.
![Loading assets from service worker](../img/blog/cra-pwa.png)
![Loading assets from service worker](../images/blog/cra-pwa.png)
New apps automatically have these features, but you can easily convert an existing project to a Progressive Web App by following [our migration guide](https://github.com/facebookincubator/create-react-app/releases/tag/v1.0.0).
@ -65,7 +65,7 @@ We are now using the latest version of Jest that includes numerous bugfixes and
Highlights include a new [immersive watch mode](https://facebook.github.io/jest/blog/2017/02/21/jest-19-immersive-watch-mode-test-platform-improvements.html#immersive-watch-mode), [a better snapshot format](https://facebook.github.io/jest/blog/2017/02/21/jest-19-immersive-watch-mode-test-platform-improvements.html#snapshot-updates), [improvements to printing skipped tests](https://facebook.github.io/jest/blog/2017/02/21/jest-19-immersive-watch-mode-test-platform-improvements.html#improved-printing-of-skipped-tests), and [new testing APIs](https://facebook.github.io/jest/blog/2017/05/06/jest-20-delightful-testing-multi-project-runner.html#new-improved-testing-apis).
![Immersive test watcher](../img/blog/cra-jest-search.gif)
![Immersive test watcher](../images/blog/cra-jest-search.gif)
Additionally, Create React App now support configuring a few Jest options related to coverage reporting.
@ -77,7 +77,7 @@ It is important to keep the initial JavaScript payload of web apps down to the m
In this release, we are adding support for the [dynamic `import()` proposal](http://2ality.com/2017/01/import-operator.html#loading-code-on-demand) which aligns with the future web standards. Unlike `require.ensure()`, it doesn't break Jest tests, and should eventually become a part of JavaScript. We encourage you to use `import()` to delay loading the code for non-critical component subtrees until you need to render them.
![Creating chunks with dynamic import](../img/blog/cra-dynamic-import.gif)
![Creating chunks with dynamic import](../images/blog/cra-dynamic-import.gif)
### Better Console Output
@ -87,7 +87,7 @@ We have improved the console output across the board.
For example, when you start the development server, we now display the LAN address in additional to the localhost address so that you can quickly access the app from a mobile device on the same network:
![Better console output](../img/blog/cra-better-output.png)
![Better console output](../images/blog/cra-better-output.png)
When lint errors are reported, we no longer show the warnings so that you can concentrate on more critical issues. Errors and warnings in the production build output are better formatted, and the build error overlay font size now matches the browser font size more closely.

4
content/blog/2017-07-26-error-handling-in-react-16.md

@ -79,11 +79,11 @@ We also encourage you to use JS error reporting services (or build your own) so
React 16 prints all errors that occurred during rendering to the console in development, even if the application accidentally swallows them. In addition to the error message and the JavaScript stack, it also provides component stack traces. Now you can see where exactly in the component tree the failure has happened:
<img src="../img/blog/error-boundaries-stack-trace.png" alt="Component stack traces in error message" style="width: 100%;">
<img src="../images/blog/error-boundaries-stack-trace.png" alt="Component stack traces in error message" style="width: 100%;">
You can also see the filenames and line numbers in the component stack trace. This works by default in [Create React App](https://github.com/facebookincubator/create-react-app) projects:
<img src="../img/blog/error-boundaries-stack-trace-line-numbers.png" alt="Component stack traces with line numbers in error message" style="width: 100%;">
<img src="../images/blog/error-boundaries-stack-trace-line-numbers.png" alt="Component stack traces with line numbers in error message" style="width: 100%;">
If you don’t use Create React App, you can add [this plugin](https://www.npmjs.com/package/babel-plugin-transform-react-jsx-source) manually to your Babel configuration. Note that it’s intended only for development and **must be disabled in production**.

6
content/community/videos.it-IT.md

@ -17,7 +17,7 @@ next: complementary-tools-it-IT.html
### Pensare in react - tagtree.tv
Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare in React](/docs/thinking-in-react.html) mentre costruisci una semplice applicazione
<figure><a href="http://tagtree.tv/thinking-in-react"><img src="../img/docs/thinking-in-react-tagtree.png"></a></figure>
<figure><a href="http://tagtree.tv/thinking-in-react"><img src="../images/docs/thinking-in-react-tagtree.png"></a></figure>
* * *
@ -39,7 +39,7 @@ Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare i
### CodeWinds
[Pete Hunt](http://www.petehunt.net/) ha parlato con [Jeff Barczewski](http://jeff.barczewski.com/) a proposito di React nell'Episodio 4 di CodeWinds.
<figure><a href="http://codewinds.com/4"><img src="../img/docs/codewinds-004.png"></a></figure>
<figure><a href="http://codewinds.com/4"><img src="../images/docs/codewinds-004.png"></a></figure>
<table width="100%"><tr><td>
02:08 - Cos'è React e perché usarlo?<br />
@ -72,7 +72,7 @@ Un video di [tagtree.tv](http://tagtree.tv/) che espone i principi di [Pensare i
### JavaScript Jabber
[Pete Hunt](http://www.petehunt.net/) e [Jordan Walke](https://github.com/jordwalke) hanno parlato di React in JavaScript Jabber 73.
<figure><a href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../img/docs/javascript-jabber.png"></a></figure>
<figure><a href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../images/docs/javascript-jabber.png"></a></figure>
<table width="100%"><tr><td>
01:34 – Introduzione di Pete Hunt<br />

6
content/community/videos.ko-KR.md

@ -17,7 +17,7 @@ next: complementary-tools-ko-KR.html
### Thinking in react - tagtree.tv
[tagtree.tv](http://tagtree.tv/)의 비디오는 간단한 어플리케이션을 구성하면서 [Thinking in React](/docs/thinking-in-react-ko-KR.html)의 원리들을 전달합니다.
<figure><a href="http://tagtree.tv/thinking-in-react"><img src="../img/docs/thinking-in-react-tagtree.png"></a></figure>
<figure><a href="http://tagtree.tv/thinking-in-react"><img src="../images/docs/thinking-in-react-tagtree.png"></a></figure>
* * *
@ -40,7 +40,7 @@ next: complementary-tools-ko-KR.html
CodeWinds Episode 4 에서 [Pete Hunt](http://www.petehunt.net/)와 [Jeff Barczewski](http://jeff.barczewski.com/)가 React에 대해서 이야기 합니다.
<figure><a href="http://codewinds.com/4"><img src="../img/docs/codewinds-004.png"></a></figure>
<figure><a href="http://codewinds.com/4"><img src="../images/docs/codewinds-004.png"></a></figure>
<table width="100%"><tr><td>
02:08 - What is React and why use it?<br />
@ -74,7 +74,7 @@ CodeWinds Episode 4 에서 [Pete Hunt](http://www.petehunt.net/)와 [Jeff Barcze
JavaScript Jabber 73에서 [Pete Hunt](http://www.petehunt.net/)와 [Jordan Walke](https://github.com/jordwalke)가 React에 대해서 이야기했습니다.
<figure><a href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../img/docs/javascript-jabber.png"></a></figure>
<figure><a href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../images/docs/javascript-jabber.png"></a></figure>
<table width="100%"><tr><td>
01:34 – Pete Hunt Introduction<br />

4
content/community/videos.md

@ -88,7 +88,7 @@ Facebook engineers [Bill Fisher](https://twitter.com/fisherwebdev) and [Jing Che
### CodeWinds Podcast
[Pete Hunt](http://www.petehunt.net/) talked with [Jeff Barczewski](http://jeff.barczewski.com/) about React in [CodeWinds Episode 4](http://codewinds.com/podcast/004.html).
<figure><a aria-label="link to play Codewinds Podcast episode 4" href="http://codewinds.com/4"><img src="../img/docs/codewinds-004.png"></a></figure>
<figure><a aria-label="link to play Codewinds Podcast episode 4" href="http://codewinds.com/4"><img src="../images/docs/codewinds-004.png"></a></figure>
<table width="100%">
<tr>
@ -136,7 +136,7 @@ Facebook engineers [Bill Fisher](https://twitter.com/fisherwebdev) and [Jing Che
### JavaScript Jabber Podcast
[Pete Hunt](http://www.petehunt.net/) and [Jordan Walke](https://github.com/jordwalke) talked about React in [JavaScript Jabber 73](https://devchat.tv/js-jabber/073-jsj-react-with-pete-hunt-and-jordan-walke).
<figure><a aria-label="link to play JavaScript Jabber Podcast episode 73" href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../img/docs/javascript-jabber.png"></a></figure>
<figure><a aria-label="link to play JavaScript Jabber Podcast episode 73" href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../images/docs/javascript-jabber.png"></a></figure>
<table width="100%">
<tr>

6
content/community/videos.zh-CN.md

@ -17,7 +17,7 @@ next: complementary-tools-zh-CN.html
### Thinking in react - tagtree.tv
一个 [tagtree.tv](http://tagtree.tv/) 传达 [Thinking in React](/docs/thinking-in-react.html) 原则的视频 在构建一个简单app时。
<figure><a href="http://tagtree.tv/thinking-in-react"><img src="../img/docs/thinking-in-react-tagtree.png"></a></figure>
<figure><a href="http://tagtree.tv/thinking-in-react"><img src="../images/docs/thinking-in-react-tagtree.png"></a></figure>
* * *
@ -39,7 +39,7 @@ next: complementary-tools-zh-CN.html
### CodeWinds
[Pete Hunt](http://www.petehunt.net/) 与 [Jeff Barczewski](http://jeff.barczewski.com/) 在 CodeWinds Episode 4 上关于 React 的谈话.
<figure><a href="http://codewinds.com/4"><img src="../img/docs/codewinds-004.png"></a></figure>
<figure><a href="http://codewinds.com/4"><img src="../images/docs/codewinds-004.png"></a></figure>
<table width="100%"><tr><td>
02:08 - 什么是React,为什么我们用它?<br />
@ -72,7 +72,7 @@ next: complementary-tools-zh-CN.html
### JavaScript Jabber
[Pete Hunt](http://www.petehunt.net/) 和 [Jordan Walke](https://github.com/jordwalke) 在 JavaScript Jabber 73 上关于React的谈话.
<figure><a href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../img/docs/javascript-jabber.png"></a></figure>
<figure><a href="http://javascriptjabber.com/073-jsj-react-with-pete-hunt-and-jordan-walke/#content"><img src="../images/docs/javascript-jabber.png"></a></figure>
<table width="100%"><tr><td>
01:34 – Pete Hunt 介绍<br />

2
content/docs/accessibility.md

@ -76,7 +76,7 @@ Ensure that your web application can be fully operated with the keyboard only:
Keyboard focus refers to the current element in the DOM that is selected to accept input from the keyboard. We see it everywhere as a focus outline similar to that shown in the following image:
<img src="../img/docs/keyboard-focus.png" alt="Blue keyboard focus outline around a selected link." />
<img src="../images/docs/keyboard-focus.png" alt="Blue keyboard focus outline around a selected link." />
Only ever use CSS that removes this outline, for example by setting `outline: 0`, if you are replacing it with another focus outline implementation.

8
content/docs/addons-perf.md

@ -97,7 +97,7 @@ Perf.printInclusive(measurements)
Prints the overall time taken. When no arguments are passed, `printInclusive` defaults to all the measurements from the last recording. This prints a nicely formatted table in the console, like so:
![](../img/docs/perf-inclusive.png)
![](../images/docs/perf-inclusive.png)
* * *
@ -109,7 +109,7 @@ Perf.printExclusive(measurements)
"Exclusive" times don't include the times taken to mount the components: processing props, calling `componentWillMount` and `componentDidMount`, etc.
![](../img/docs/perf-exclusive.png)
![](../images/docs/perf-exclusive.png)
* * *
@ -123,7 +123,7 @@ Perf.printWasted(measurements)
"Wasted" time is spent on components that didn't actually render anything, e.g. the render stayed the same, so the DOM wasn't touched.
![](../img/docs/perf-wasted.png)
![](../images/docs/perf-wasted.png)
* * *
@ -135,7 +135,7 @@ Perf.printOperations(measurements)
Prints the underlying DOM manipulations, e.g. "set innerHTML" and "remove".
![](../img/docs/perf-dom.png)
![](../images/docs/perf-dom.png)
* * *

11
content/docs/codebase-overview.md

@ -2,14 +2,15 @@
id: codebase-overview
title: Codebase Overview
layout: contributing
permalink: contributing/codebase-overview.html
permalink: docs/codebase-overview.html
prev: how-to-contribute.html
next: implementation-notes.html
redirect_from: "contributing/codebase-overview.html"
---
This section will give you an overview of the React codebase organization, its conventions, and the implementation.
If you want to [contribute to React](/contributing/how-to-contribute.html) we hope that this guide will help you feel more comfortable making changes.
If you want to [contribute to React](/docs/how-to-contribute.html) we hope that this guide will help you feel more comfortable making changes.
We don't necessarily recommend any of these conventions in React apps. Many of them exist for historical reasons and might change with time.
@ -68,7 +69,7 @@ After cloning the [React repository](https://github.com/facebook/react), you wil
* [`docs`](https://github.com/facebook/react/tree/master/docs) is the React documentation website. When you change APIs, make sure to update the relevant Markdown files.
* [`fixtures`](https://github.com/facebook/react/tree/master/fixtures) contains a few small React test applications for contributors.
* [`packages`](https://github.com/facebook/react/tree/master/packages) contains metadata (such as `package.json`) for all packages in the React repository. Nevertheless, their source code is still located inside [`src`](https://github.com/facebook/react/tree/master/src).
* `build` is the build output of React. It is not in the repository but it will appear in your React clone after you [build it](/contributing/how-to-contribute.html#development-workflow) for the first time.
* `build` is the build output of React. It is not in the repository but it will appear in your React clone after you [build it](/docs/how-to-contribute.html#development-workflow) for the first time.
There are a few other top-level folders but they are mostly used for the tooling and you likely won't ever encounter them when contributing.
@ -373,7 +374,7 @@ It is important to understand that the stack reconciler always processes the com
#### Learn More
**The [next section](/contributing/implementation-notes.html) describes the current implementation in more details.**
**The [next section](/docs/implementation-notes.html) describes the current implementation in more details.**
### Fiber Reconciler
@ -401,4 +402,4 @@ There is a [video with a deep code dive into it](https://www.youtube.com/watch?v
### What Next?
Read the [next section](/contributing/implementation-notes.html) to learn about the current implementation of reconciler in more detail.
Read the [next section](/docs/implementation-notes.html) to learn about the current implementation of reconciler in more detail.

2
content/docs/cross-origin-errors.md

@ -24,7 +24,7 @@ When loading React (or other libraries that might throw errors) from a CDN, add
Also ensure the CDN responds with the `Access-Control-Allow-Origin: *` HTTP header:
![Access-Control-Allow-Origin: *](../img/docs/cdn-cors-header.png)
![Access-Control-Allow-Origin: *](../images/docs/cdn-cors-header.png)
### Webpack

3
content/docs/design-principles.md

@ -2,8 +2,9 @@
id: design-principles
title: Design Principles
layout: contributing
permalink: contributing/design-principles.html
permalink: docs/design-principles.html
prev: implementation-notes.html
redirect_from: "contributing/design-principles.html"
---
We wrote this document so that you have a better idea of how we decide what React does and what React doesn't do, and what our development philosophy is like. While we are excited to see community contributions, we are not likely to choose a path that violates one or more of these principles.

8
content/docs/how-to-contribute.md

@ -2,9 +2,11 @@
id: how-to-contribute
title: How to Contribute
layout: contributing
permalink: contributing/how-to-contribute.html
permalink: docs/how-to-contribute.html
next: codebase-overview.html
redirect_from: "tips/introduction.html"
redirect_from:
- "contributing/how-to-contribute.html"
- "tips/introduction.html"
---
React is one of Facebook's first open source projects that is both under very active development and is also being used to ship code to everybody on [facebook.com](https://www.facebook.com). We're still working out the kinks to make contributing to this project as easy and transparent as possible, but we're not quite there yet. Hopefully this document makes the process for contributing clear and answers some questions that you may have.
@ -160,4 +162,4 @@ By contributing to React, you agree that your contributions will be licensed und
### What Next?
Read the [next section](/contributing/codebase-overview.html) to learn how the codebase is organized.
Read the [next section](/docs/codebase-overview.html) to learn how the codebase is organized.

19
content/docs/implementation-notes.md

@ -2,14 +2,15 @@
id: implementation-notes
title: Implementation Notes
layout: contributing
permalink: contributing/implementation-notes.html
permalink: docs/implementation-notes.html
prev: codebase-overview.html
next: design-principles.html
redirect_from: "contributing/implementation-notes.html"
---
This section is a collection of implementation notes for the [stack reconciler](/contributing/codebase-overview.html#stack-reconciler).
This section is a collection of implementation notes for the [stack reconciler](/docs/codebase-overview.html#stack-reconciler).
It is very technical and assumes a strong understanding of React public API as well as how it's divided into core, renderers, and the reconciler. If you're not very familiar with the React codebase, read [the codebase overview](/contributing/codebase-overview.html) first.
It is very technical and assumes a strong understanding of React public API as well as how it's divided into core, renderers, and the reconciler. If you're not very familiar with the React codebase, read [the codebase overview](/docs/codebase-overview.html) first.
It also assumes an understanding of the [differences between React components, their instances, and elements](/blog/2015/12/18/react-components-elements-and-instances.html).
@ -23,7 +24,7 @@ Both this document and his talk are simplifications of the real codebase so you
### Overview
The reconciler itself doesn't have a public API. [Renderers](/contributing/codebase-overview.html#stack-renderers) like React DOM and React Native use it to efficiently update the user interface according to the React components written by the user.
The reconciler itself doesn't have a public API. [Renderers](/docs/codebase-overview.html#stack-renderers) like React DOM and React Native use it to efficiently update the user interface according to the React components written by the user.
### Mounting as a Recursive Process
@ -241,7 +242,7 @@ ReactDOM.render(<App />, rootEl);
However, our implementation above only knows how to mount the initial tree. It can't perform updates on it because it doesn't store all the necessary information, such as all the `publicInstance`s, or which DOM `node`s correspond to which components.
The stack reconciler codebase solves this by making the `mount()` function a method and putting it on a class. There are drawbacks to this approach, and we are going in the opposite direction in the [ongoing rewrite of the reconciler](/contributing/codebase-overview.html#fiber-reconciler). Nevertheless this is how it works now.
The stack reconciler codebase solves this by making the `mount()` function a method and putting it on a class. There are drawbacks to this approach, and we are going in the opposite direction in the [ongoing rewrite of the reconciler](/docs/codebase-overview.html#fiber-reconciler). Nevertheless this is how it works now.
Instead of separate `mountHost` and `mountComposite` functions, we will create two classes: `DOMComponent` and `CompositeComponent`.
@ -408,7 +409,7 @@ The host internal instances need to store:
If you're struggling to imagine how an internal instance tree is structured in more complex applications, [React DevTools](https://github.com/facebook/react-devtools) can give you a close approximation, as it highlights host instances with grey, and composite instances with purple:
<img src="../img/docs/implementation-notes-tree.png" width="500" style="max-width: 100%" alt="React DevTools tree" />
<img src="../images/docs/implementation-notes-tree.png" width="500" style="max-width: 100%" alt="React DevTools tree" />
To complete this refactoring, we will introduce a function that mounts a complete tree into a container node, just like `ReactDOM.render()`. It returns a public instance, also like `ReactDOM.render()`:
@ -858,7 +859,7 @@ This document is simplified compared to the real codebase. There are a few impor
* In addition to composite and host internal instance classes, there are also classes for "text" and "empty" components. They represent text nodes and the "empty slots" you get by rendering `null`.
* Renderers use [injection](/contributing/codebase-overview.html#dynamic-injection) to pass the host internal class to the reconciler. For example, React DOM tells the reconciler to use `ReactDOMComponent` as the host internal instance implementation.
* Renderers use [injection](/docs/codebase-overview.html#dynamic-injection) to pass the host internal class to the reconciler. For example, React DOM tells the reconciler to use `ReactDOMComponent` as the host internal instance implementation.
* The logic for updating the list of children is extracted into a mixin called `ReactMultiChild` which is used by the host internal instance class implementations both in React DOM and React Native.
@ -889,8 +890,8 @@ This document is simplified compared to the real codebase. There are a few impor
### Future Directions
Stack reconciler has inherent limitations such as being synchronous and unable to interrupt the work or split it in chunks. There is a work in progress on the [new Fiber reconciler](/contributing/codebase-overview.html#fiber-reconciler) with a [completely different architecture](https://github.com/acdlite/react-fiber-architecture). In the future, we intend to replace stack reconciler with it, but at the moment it is far from feature parity.
Stack reconciler has inherent limitations such as being synchronous and unable to interrupt the work or split it in chunks. There is a work in progress on the [new Fiber reconciler](/docs/codebase-overview.html#fiber-reconciler) with a [completely different architecture](https://github.com/acdlite/react-fiber-architecture). In the future, we intend to replace stack reconciler with it, but at the moment it is far from feature parity.
### Next Steps
Read the [next section](/contributing/design-principles.html) to learn about the guiding principles we use for React development.
Read the [next section](/docs/design-principles.html) to learn about the guiding principles we use for React development.

2
content/docs/installation.md

@ -153,6 +153,6 @@ If you serve React from a CDN, we recommend to keep the [`crossorigin`](https://
We also recommend to verify that the CDN you are using sets the `Access-Control-Allow-Origin: *` HTTP header:
![Access-Control-Allow-Origin: *](../img/docs/cdn-cors-header.png)
![Access-Control-Allow-Origin: *](../images/docs/cdn-cors-header.png)
This enables a better [error handling experience](/blog/2017/07/26/error-handling-in-react-16.html) in React 16 and later.

2
content/docs/lifting-state-up.md

@ -322,4 +322,4 @@ If something can be derived from either props or state, it probably shouldn't be
When you see something wrong in the UI, you can use [React Developer Tools](https://github.com/facebook/react-devtools) to inspect the props and move up the tree until you find the component responsible for updating the state. This lets you trace the bugs to their source:
<img src="../img/docs/react-devtools-state.gif" alt="Monitoring State in React DevTools" width="100%">
<img src="../images/docs/react-devtools-state.gif" alt="Monitoring State in React DevTools" width="100%">

2
content/docs/nav.yml

@ -88,4 +88,4 @@
- id: implementation-notes
title: Implementation Notes
- id: design-principles
title: Design Principles
title: Design Principles

8
content/docs/optimizing-performance.md

@ -15,11 +15,11 @@ By default, React includes many helpful warnings. These warnings are very useful
If you aren't sure whether your build process is set up correctly, you can check it by installing [React Developer Tools for Chrome](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi). If you visit a site with React in production mode, the icon will have a dark background:
<img src="../img/docs/devtools-prod.png" style="max-width:100%" alt="React DevTools on a website with production version of React">
<img src="../images/docs/devtools-prod.png" style="max-width:100%" alt="React DevTools on a website with production version of React">
If you visit a site with React in development mode, the icon will have a red background:
<img src="../img/docs/devtools-dev.png" style="max-width:100%" alt="React DevTools on a website with development version of React">
<img src="../images/docs/devtools-dev.png" style="max-width:100%" alt="React DevTools on a website with development version of React">
It is expected that you use the development mode when working on your app, and the production mode when deploying your app to the users.
@ -162,7 +162,7 @@ Remember that you only need to do this for production builds. You shouldn't appl
In the **development** mode, you can visualize how components mount, update, and unmount, using the performance tools in supported browsers. For example:
<center><img src="../img/blog/react-perf-chrome-timeline.png" style="max-width:100%" alt="React components in Chrome timeline" /></center>
<center><img src="../images/blog/react-perf-chrome-timeline.png" style="max-width:100%" alt="React components in Chrome timeline" /></center>
To do this in Chrome:
@ -201,7 +201,7 @@ If you know that in some situations your component doesn't need to update, you c
Here's a subtree of components. For each one, `SCU` indicates what `shouldComponentUpdate` returned, and `vDOMEq` indicates whether the rendered React elements were equivalent. Finally, the circle's color indicates whether the component had to be reconciled or not.
<figure><img src="../img/docs/should-component-update.png" style="max-width:100%" /></figure>
<figure><img src="../images/docs/should-component-update.png" style="max-width:100%" /></figure>
Since `shouldComponentUpdate` returned `false` for the subtree rooted at C2, React did not attempt to render C2, and thus didn't even have to invoke `shouldComponentUpdate` on C4 and C5.

2
content/docs/rendering-elements.md

@ -88,7 +88,7 @@ React DOM compares the element and its children to the previous one, and only ap
You can verify by inspecting the [last example](http://codepen.io/gaearon/pen/gwoJZk?editors=0010) with the browser tools:
![DOM inspector showing granular updates](../img/docs/granular-dom-updates.gif)
![DOM inspector showing granular updates](../images/docs/granular-dom-updates.gif)
Even though we create an element describing the whole UI tree on every tick, only the text node whose contents has changed gets updated by React DOM.

4
content/docs/thinking-in-react.md

@ -16,7 +16,7 @@ One of the many great parts of React is how it makes you think about apps as you
Imagine that we already have a JSON API and a mock from our designer. The mock looks like this:
![Mockup](../img/blog/thinking-in-react-mock.png)
![Mockup](../images/blog/thinking-in-react-mock.png)
Our JSON API returns some data that looks like this:
@ -39,7 +39,7 @@ But how do you know what should be its own component? Just use the same techniqu
Since you're often displaying a JSON data model to a user, you'll find that if your model was built correctly, your UI (and therefore your component structure) will map nicely. That's because UI and data models tend to adhere to the same *information architecture*, which means the work of separating your UI into components is often trivial. Just break it up into components that represent exactly one piece of your data model.
![Component diagram](../img/blog/thinking-in-react-components.png)
![Component diagram](../images/blog/thinking-in-react-components.png)
You'll see here that we have five components in our simple app. We've italicized the data each component represents.

8
content/docs/web-components.md

@ -41,10 +41,8 @@ function BrickFlipbox() {
## Using React in your Web Components
Similarly, you can call `ReactDOM.render()` from inside a web component:
```javascript
class XSearch extends HTMLElement {
class XSearch {
connectedCallback() {
const mountPoint = document.createElement('span');
this.attachShadow({ mode: 'open' }).appendChild(mountPoint);
@ -56,7 +54,3 @@ class XSearch extends HTMLElement {
}
customElements.define('x-search', XSearch);
```
>Note:
>
>This code will **not** work if compiled with Babel [due to an intentional limitation in the specification](https://github.com/w3c/webcomponents/issues/587). It will only work if you use the `class` syntax directly in the browser without compiling the code first.

6
content/tutorial/tutorial.md

@ -166,11 +166,11 @@ class Square extends React.Component {
Before:
![React Devtools](../img/tutorial/tictac-empty.png)
![React Devtools](../images/tutorial/tictac-empty.png)
After: You should see a number in each square in the rendered output.
![React Devtools](../img/tutorial/tictac-numbers.png)
![React Devtools](../images/tutorial/tictac-numbers.png)
[View the current code.](https://codepen.io/gaearon/pen/aWWQOG?editors=0010)
@ -255,7 +255,7 @@ If you click on any square, an X should show up in it.
The React Devtools extension for [Chrome](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=en) and [Firefox](https://addons.mozilla.org/en-US/firefox/addon/react-devtools/) lets you inspect a React component tree in your browser devtools.
<img src="../img/tutorial/devtools.png" alt="React Devtools" style="max-width: 100%">
<img src="../images/tutorial/devtools.png" alt="React Devtools" style="max-width: 100%">
It lets you inspect the props and state of any of the components in your tree.

Loading…
Cancel
Save