diff --git a/blog/2013/06/02/jsfiddle-integration.html b/blog/2013/06/02/jsfiddle-integration.html index 1bc8db6f58..f0b2ae3695 100644 --- a/blog/2013/06/02/jsfiddle-integration.html +++ b/blog/2013/06/02/jsfiddle-integration.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/06/05/why-react.html b/blog/2013/06/05/why-react.html index af6c729bb1..3fa0b2c1ae 100644 --- a/blog/2013/06/05/why-react.html +++ b/blog/2013/06/05/why-react.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/06/12/community-roundup.html b/blog/2013/06/12/community-roundup.html index 4fe4bd10dc..1e00a72388 100644 --- a/blog/2013/06/12/community-roundup.html +++ b/blog/2013/06/12/community-roundup.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/06/19/community-roundup-2.html b/blog/2013/06/19/community-roundup-2.html index 00736a8d5c..689641e10e 100644 --- a/blog/2013/06/19/community-roundup-2.html +++ b/blog/2013/06/19/community-roundup-2.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/06/21/react-v0-3-3.html b/blog/2013/06/21/react-v0-3-3.html index 7aa121b5fb..f22af469f3 100644 --- a/blog/2013/06/21/react-v0-3-3.html +++ b/blog/2013/06/21/react-v0-3-3.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/06/27/community-roundup-3.html b/blog/2013/06/27/community-roundup-3.html index baecacad36..2b999bb016 100644 --- a/blog/2013/06/27/community-roundup-3.html +++ b/blog/2013/06/27/community-roundup-3.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/07/02/react-v0-4-autobind-by-default.html b/blog/2013/07/02/react-v0-4-autobind-by-default.html index afb7b634f5..85981eafb1 100644 --- a/blog/2013/07/02/react-v0-4-autobind-by-default.html +++ b/blog/2013/07/02/react-v0-4-autobind-by-default.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/07/03/community-roundup-4.html b/blog/2013/07/03/community-roundup-4.html index 7872302e9c..dacdf13f03 100644 --- a/blog/2013/07/03/community-roundup-4.html +++ b/blog/2013/07/03/community-roundup-4.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/07/11/react-v0-4-prop-validation-and-default-values.html b/blog/2013/07/11/react-v0-4-prop-validation-and-default-values.html index 9505734858..c4377d4c0d 100644 --- a/blog/2013/07/11/react-v0-4-prop-validation-and-default-values.html +++ b/blog/2013/07/11/react-v0-4-prop-validation-and-default-values.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/07/17/react-v0-4-0.html b/blog/2013/07/17/react-v0-4-0.html index 005e69a43f..acb9e8eb8c 100644 --- a/blog/2013/07/17/react-v0-4-0.html +++ b/blog/2013/07/17/react-v0-4-0.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/07/23/community-roundup-5.html b/blog/2013/07/23/community-roundup-5.html index 6d406f4e80..b2d59d907e 100644 --- a/blog/2013/07/23/community-roundup-5.html +++ b/blog/2013/07/23/community-roundup-5.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/07/26/react-v0-4-1.html b/blog/2013/07/26/react-v0-4-1.html index d160a7fb64..5b830886f5 100644 --- a/blog/2013/07/26/react-v0-4-1.html +++ b/blog/2013/07/26/react-v0-4-1.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/07/30/use-react-and-jsx-in-ruby-on-rails.html b/blog/2013/07/30/use-react-and-jsx-in-ruby-on-rails.html index 52a73fd4f6..ca35eb1e49 100644 --- a/blog/2013/07/30/use-react-and-jsx-in-ruby-on-rails.html +++ b/blog/2013/07/30/use-react-and-jsx-in-ruby-on-rails.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/08/05/community-roundup-6.html b/blog/2013/08/05/community-roundup-6.html index b4c6bab4e1..789731f7e3 100644 --- a/blog/2013/08/05/community-roundup-6.html +++ b/blog/2013/08/05/community-roundup-6.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/08/19/use-react-and-jsx-in-python-applications.html b/blog/2013/08/19/use-react-and-jsx-in-python-applications.html index 7cdf5a83a5..1cfe5fa285 100644 --- a/blog/2013/08/19/use-react-and-jsx-in-python-applications.html +++ b/blog/2013/08/19/use-react-and-jsx-in-python-applications.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/08/26/community-roundup-7.html b/blog/2013/08/26/community-roundup-7.html index af79f5d14c..31b650eb91 100644 --- a/blog/2013/08/26/community-roundup-7.html +++ b/blog/2013/08/26/community-roundup-7.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/09/24/community-roundup-8.html b/blog/2013/09/24/community-roundup-8.html index 067d857c0e..f6696cec1c 100644 --- a/blog/2013/09/24/community-roundup-8.html +++ b/blog/2013/09/24/community-roundup-8.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/10/03/community-roundup-9.html b/blog/2013/10/03/community-roundup-9.html index 01f18fc67a..acea78ab15 100644 --- a/blog/2013/10/03/community-roundup-9.html +++ b/blog/2013/10/03/community-roundup-9.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/10/16/react-v0.5.0.html b/blog/2013/10/16/react-v0.5.0.html index 23f279fbf4..ce4fb4d333 100644 --- a/blog/2013/10/16/react-v0.5.0.html +++ b/blog/2013/10/16/react-v0.5.0.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/10/29/react-v0-5-1.html b/blog/2013/10/29/react-v0-5-1.html index 0ecc13d23a..37957f103a 100644 --- a/blog/2013/10/29/react-v0-5-1.html +++ b/blog/2013/10/29/react-v0-5-1.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/11/05/thinking-in-react.html b/blog/2013/11/05/thinking-in-react.html index 1d3e14c69e..5d93b767ed 100644 --- a/blog/2013/11/05/thinking-in-react.html +++ b/blog/2013/11/05/thinking-in-react.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/11/06/community-roundup-10.html b/blog/2013/11/06/community-roundup-10.html index 1042dcd3d2..580ebb411d 100644 --- a/blog/2013/11/06/community-roundup-10.html +++ b/blog/2013/11/06/community-roundup-10.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/11/18/community-roundup-11.html b/blog/2013/11/18/community-roundup-11.html index 7e8cecfd1b..dad52fefd0 100644 --- a/blog/2013/11/18/community-roundup-11.html +++ b/blog/2013/11/18/community-roundup-11.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/12/18/react-v0.5.2-v0.4.2.html b/blog/2013/12/18/react-v0.5.2-v0.4.2.html index 813fe49de3..37ded1cf8e 100644 --- a/blog/2013/12/18/react-v0.5.2-v0.4.2.html +++ b/blog/2013/12/18/react-v0.5.2-v0.4.2.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/12/19/react-v0.8.0.html b/blog/2013/12/19/react-v0.8.0.html index 0db52c39a1..284f66391e 100644 --- a/blog/2013/12/19/react-v0.8.0.html +++ b/blog/2013/12/19/react-v0.8.0.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/12/23/community-roundup-12.html b/blog/2013/12/23/community-roundup-12.html index f66e3eb311..fd3da6b273 100644 --- a/blog/2013/12/23/community-roundup-12.html +++ b/blog/2013/12/23/community-roundup-12.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2013/12/30/community-roundup-13.html b/blog/2013/12/30/community-roundup-13.html index 56779cb46e..682a96d937 100644 --- a/blog/2013/12/30/community-roundup-13.html +++ b/blog/2013/12/30/community-roundup-13.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/01/02/react-chrome-developer-tools.html b/blog/2014/01/02/react-chrome-developer-tools.html index 12fbd9ef14..7d627cfda4 100644 --- a/blog/2014/01/02/react-chrome-developer-tools.html +++ b/blog/2014/01/02/react-chrome-developer-tools.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/01/06/community-roundup-14.html b/blog/2014/01/06/community-roundup-14.html index 2016932635..e6397b5f03 100644 --- a/blog/2014/01/06/community-roundup-14.html +++ b/blog/2014/01/06/community-roundup-14.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/02/05/community-roundup-15.html b/blog/2014/02/05/community-roundup-15.html index a1ea1a9f79..fdb2b9eae2 100644 --- a/blog/2014/02/05/community-roundup-15.html +++ b/blog/2014/02/05/community-roundup-15.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/02/15/community-roundup-16.html b/blog/2014/02/15/community-roundup-16.html index 05196c1f36..b78180aaa8 100644 --- a/blog/2014/02/15/community-roundup-16.html +++ b/blog/2014/02/15/community-roundup-16.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/02/16/react-v0.9-rc1.html b/blog/2014/02/16/react-v0.9-rc1.html index 5c1176b78b..09be07fe7f 100644 --- a/blog/2014/02/16/react-v0.9-rc1.html +++ b/blog/2014/02/16/react-v0.9-rc1.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/02/20/react-v0.9.html b/blog/2014/02/20/react-v0.9.html index be3ba568cd..4afd2a6437 100644 --- a/blog/2014/02/20/react-v0.9.html +++ b/blog/2014/02/20/react-v0.9.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/02/24/community-roundup-17.html b/blog/2014/02/24/community-roundup-17.html index 10b5afbd6c..6e220d8b90 100644 --- a/blog/2014/02/24/community-roundup-17.html +++ b/blog/2014/02/24/community-roundup-17.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/03/14/community-roundup-18.html b/blog/2014/03/14/community-roundup-18.html index a8ce60fe08..cdd4bf7c17 100644 --- a/blog/2014/03/14/community-roundup-18.html +++ b/blog/2014/03/14/community-roundup-18.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/03/19/react-v0.10-rc1.html b/blog/2014/03/19/react-v0.10-rc1.html index b5755eb4aa..a4a42a900a 100644 --- a/blog/2014/03/19/react-v0.10-rc1.html +++ b/blog/2014/03/19/react-v0.10-rc1.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/03/21/react-v0.10.html b/blog/2014/03/21/react-v0.10.html index caf6d724b2..924fba3dfb 100644 --- a/blog/2014/03/21/react-v0.10.html +++ b/blog/2014/03/21/react-v0.10.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/03/28/the-road-to-1.0.html b/blog/2014/03/28/the-road-to-1.0.html index c7c3757531..6572a29d46 100644 --- a/blog/2014/03/28/the-road-to-1.0.html +++ b/blog/2014/03/28/the-road-to-1.0.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/04/04/reactnet.html b/blog/2014/04/04/reactnet.html index b12c9abbc7..1287215efb 100644 --- a/blog/2014/04/04/reactnet.html +++ b/blog/2014/04/04/reactnet.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/05/06/flux.html b/blog/2014/05/06/flux.html index 2e9094b298..bcaa403723 100644 --- a/blog/2014/05/06/flux.html +++ b/blog/2014/05/06/flux.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/05/29/one-year-of-open-source-react.html b/blog/2014/05/29/one-year-of-open-source-react.html index 1453120355..9c176cd04f 100644 --- a/blog/2014/05/29/one-year-of-open-source-react.html +++ b/blog/2014/05/29/one-year-of-open-source-react.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/06/27/community-roundup-19.html b/blog/2014/06/27/community-roundup-19.html index b4898091da..80b7f37ff9 100644 --- a/blog/2014/06/27/community-roundup-19.html +++ b/blog/2014/06/27/community-roundup-19.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/07/13/react-v0.11-rc1.html b/blog/2014/07/13/react-v0.11-rc1.html index a895ae3c7b..469081fb44 100644 --- a/blog/2014/07/13/react-v0.11-rc1.html +++ b/blog/2014/07/13/react-v0.11-rc1.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/07/17/react-v0.11.html b/blog/2014/07/17/react-v0.11.html index b0760a1c39..917da753dd 100644 --- a/blog/2014/07/17/react-v0.11.html +++ b/blog/2014/07/17/react-v0.11.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/07/25/react-v0.11.1.html b/blog/2014/07/25/react-v0.11.1.html index 68b9d7afa8..560ec082b8 100644 --- a/blog/2014/07/25/react-v0.11.1.html +++ b/blog/2014/07/25/react-v0.11.1.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/07/28/community-roundup-20.html b/blog/2014/07/28/community-roundup-20.html index 98e3e47163..ff52af3db6 100644 --- a/blog/2014/07/28/community-roundup-20.html +++ b/blog/2014/07/28/community-roundup-20.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/07/30/flux-actions-and-the-dispatcher.html b/blog/2014/07/30/flux-actions-and-the-dispatcher.html index 9dcbef02b2..008c4537ef 100644 --- a/blog/2014/07/30/flux-actions-and-the-dispatcher.html +++ b/blog/2014/07/30/flux-actions-and-the-dispatcher.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/08/03/community-roundup-21.html b/blog/2014/08/03/community-roundup-21.html index 506ce5c6dc..d9027f8603 100644 --- a/blog/2014/08/03/community-roundup-21.html +++ b/blog/2014/08/03/community-roundup-21.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/09/03/introducing-the-jsx-specification.html b/blog/2014/09/03/introducing-the-jsx-specification.html index 15ce2e6d18..fadba2f96e 100644 --- a/blog/2014/09/03/introducing-the-jsx-specification.html +++ b/blog/2014/09/03/introducing-the-jsx-specification.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/09/12/community-round-up-22.html b/blog/2014/09/12/community-round-up-22.html index f6f1044d76..97285b41f8 100644 --- a/blog/2014/09/12/community-round-up-22.html +++ b/blog/2014/09/12/community-round-up-22.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/09/16/react-v0.11.2.html b/blog/2014/09/16/react-v0.11.2.html index bcaaa7bc32..177b4651c9 100644 --- a/blog/2014/09/16/react-v0.11.2.html +++ b/blog/2014/09/16/react-v0.11.2.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/09/24/testing-flux-applications.html b/blog/2014/09/24/testing-flux-applications.html index e8e25c4887..45287bc8d9 100644 --- a/blog/2014/09/24/testing-flux-applications.html +++ b/blog/2014/09/24/testing-flux-applications.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/10/14/introducing-react-elements.html b/blog/2014/10/14/introducing-react-elements.html index d5440c8ad9..f6cca3a7c0 100644 --- a/blog/2014/10/14/introducing-react-elements.html +++ b/blog/2014/10/14/introducing-react-elements.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/10/16/react-v0.12-rc1.html b/blog/2014/10/16/react-v0.12-rc1.html index 1d7d42c713..53496526cd 100644 --- a/blog/2014/10/16/react-v0.12-rc1.html +++ b/blog/2014/10/16/react-v0.12-rc1.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/10/17/community-roundup-23.html b/blog/2014/10/17/community-roundup-23.html index f1980cf397..d5c151ef72 100644 --- a/blog/2014/10/17/community-roundup-23.html +++ b/blog/2014/10/17/community-roundup-23.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/10/27/react-js-conf.html b/blog/2014/10/27/react-js-conf.html index b1dcdd855e..84106c2394 100644 --- a/blog/2014/10/27/react-js-conf.html +++ b/blog/2014/10/27/react-js-conf.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/10/28/react-v0.12.html b/blog/2014/10/28/react-v0.12.html index 504bb7ed59..d85fbbbbfb 100644 --- a/blog/2014/10/28/react-v0.12.html +++ b/blog/2014/10/28/react-v0.12.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/11/24/react-js-conf-updates.html b/blog/2014/11/24/react-js-conf-updates.html index 91c7a6032a..eb41bcda93 100644 --- a/blog/2014/11/24/react-js-conf-updates.html +++ b/blog/2014/11/24/react-js-conf-updates.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/11/25/community-roundup-24.html b/blog/2014/11/25/community-roundup-24.html index 7a2a938f5e..2c117aa9ee 100644 --- a/blog/2014/11/25/community-roundup-24.html +++ b/blog/2014/11/25/community-roundup-24.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/12/18/react-v0.12.2.html b/blog/2014/12/18/react-v0.12.2.html index f12f7f66b4..ca5c82910f 100644 --- a/blog/2014/12/18/react-v0.12.2.html +++ b/blog/2014/12/18/react-v0.12.2.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2014/12/19/react-js-conf-diversity-scholarship.html b/blog/2014/12/19/react-js-conf-diversity-scholarship.html index 3b90394d7e..3a522677bd 100644 --- a/blog/2014/12/19/react-js-conf-diversity-scholarship.html +++ b/blog/2014/12/19/react-js-conf-diversity-scholarship.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2015/01/27/react-v0.13.0-beta-1.html b/blog/2015/01/27/react-v0.13.0-beta-1.html index 9e0fddb686..41a9f5e874 100644 --- a/blog/2015/01/27/react-v0.13.0-beta-1.html +++ b/blog/2015/01/27/react-v0.13.0-beta-1.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2015/02/18/react-conf-roundup-2015.html b/blog/2015/02/18/react-conf-roundup-2015.html index b95514be6b..40a1f94d30 100644 --- a/blog/2015/02/18/react-conf-roundup-2015.html +++ b/blog/2015/02/18/react-conf-roundup-2015.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2015/02/20/introducing-relay-and-graphql.html b/blog/2015/02/20/introducing-relay-and-graphql.html index a24dbb9da8..f5ee13e688 100644 --- a/blog/2015/02/20/introducing-relay-and-graphql.html +++ b/blog/2015/02/20/introducing-relay-and-graphql.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2015/02/24/react-v0.13-rc1.html b/blog/2015/02/24/react-v0.13-rc1.html index 5ac367db33..794716bce2 100644 --- a/blog/2015/02/24/react-v0.13-rc1.html +++ b/blog/2015/02/24/react-v0.13-rc1.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2015/02/24/streamlining-react-elements.html b/blog/2015/02/24/streamlining-react-elements.html index a8f6ccae06..f5a7df6c16 100644 --- a/blog/2015/02/24/streamlining-react-elements.html +++ b/blog/2015/02/24/streamlining-react-elements.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/2015/03/03/community-roundup-25.html b/blog/2015/03/03/community-roundup-25.html new file mode 100644 index 0000000000..bd2387afe4 --- /dev/null +++ b/blog/2015/03/03/community-roundup-25.html @@ -0,0 +1,188 @@ + + + + + + + Community Round-up #25 | React + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + +
    + + +
    +

    Community Round-up #25

    +

    March 3, 2015 by Matthew Johnston

    + +
    + +
    +

    React 101 #

    +

    Interest in React has been exploding recently, so it's a good time to explore some great recent tutorials and videos that cover getting started.

    + +

    Ryan Clarke (rynclark) provides a great overview of the basics of React with the goal of building a really simple dropdown nav.

    + +

    Formidable Labs (FormidableLabs) and Seattle JS recently hosted a series of React, Flux, and Flow workshops, and the first part is available to watch online:

    + + + +

    AEFlash (aearly) writes up some best practices and tips to help you avoid potential pitfalls when developing with React.

    + +

    Black Mutt Media takes us through their usage of React and Ruby to build an autocomplete field, and some of the pitfalls they encountered along the way.

    + +

    Our own Sebastian Markbåge was on the Web Platform Podcast to have a chat about all aspects of React.

    +

    Community Additions #

    +

    Formidable Labs (FormidableLabs) have been busy, as they've also just launched Radium, a React component that provides you with the ability to use inline styles instead of CSS. They're also looking for some help contributing to a Radium Bootstrap implementation.

    + +

    Reactiflux.com is a new Slack community based around (you guessed it!) React, and Flux.

    + +

    React Week is a week-long learning workshop, happening next week, for React, Flux, and other related technologies, run by Ryan Florence (ryanflorence).

    + +

    Babel-sublime is a new package which provides Sublime with language definitions for ES6 JavaScript with React JSX syntax extensions.

    + +

    react-meteor, a package that replaces the default templating system of the Meteor platform with React, recently received a big update.

    +

    Rebuilding with React #

    +

    Rich Manalang (rmanalan) from Atlassian explains why they rebuilt their HipChat web client from scratch using React, and how they're already using it to rebuild their native desktop clients.

    + +

    Andrew Hillel of the BBC gives an excellent and thorough breakdown of the stack they used to rebuild their homepage, with React as an integral part of the front-end.

    + +

    A team from New Zealand called Atomic is building web and mobile prototyping and design tools entirely in-browser, and as co-founder Darryl Gray says, “React.js “totally changed” the fact that browser performance often wasn’t good enough for complex tools like this.”.

    + +

    Polarr (polarrco) have rebuilt their browser-based photo editor with React.

    +

    It's F8! #

    +

    F8 2015 is just around the corner, and you can sign up for the video streams in advance because we're sure to be covering all things React.

    +

    Meetups #

    + + + + + + + + + + + + + + + + +
    + +
    +
    +
    + + + +
    +
    + + + + diff --git a/blog/2015/03/03/react-v0.13-rc2.html b/blog/2015/03/03/react-v0.13-rc2.html index 593f31bad5..97bb0f4df6 100644 --- a/blog/2015/03/03/react-v0.13-rc2.html +++ b/blog/2015/03/03/react-v0.13-rc2.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • diff --git a/blog/all.html b/blog/all.html index 91e25f8a4b..ec2618a740 100644 --- a/blog/all.html +++ b/blog/all.html @@ -63,6 +63,8 @@

    React v0.13 RC2 on March 3, 2015 by Sebastian Markbåge

    +

    Community Round-up #25 on March 3, 2015 by Matthew Johnston

    +

    React v0.13 RC on February 24, 2015 by Paul O'Shannessy

    Streamlining React Elements on February 24, 2015 by Sebastian Markbåge

    diff --git a/blog/index.html b/blog/index.html index d9721d78d7..79ff61b2a2 100644 --- a/blog/index.html +++ b/blog/index.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • @@ -147,6 +147,65 @@ Minified build for production: +

    Community Round-up #25

    +

    March 3, 2015 by Matthew Johnston

    +
    +
    +

    React 101 #

    +

    Interest in React has been exploding recently, so it's a good time to explore some great recent tutorials and videos that cover getting started.

    + +

    Ryan Clarke (rynclark) provides a great overview of the basics of React with the goal of building a really simple dropdown nav.

    + +

    Formidable Labs (FormidableLabs) and Seattle JS recently hosted a series of React, Flux, and Flow workshops, and the first part is available to watch online:

    + + + +

    AEFlash (aearly) writes up some best practices and tips to help you avoid potential pitfalls when developing with React.

    + +

    Black Mutt Media takes us through their usage of React and Ruby to build an autocomplete field, and some of the pitfalls they encountered along the way.

    + +

    Our own Sebastian Markbåge was on the Web Platform Podcast to have a chat about all aspects of React.

    +

    Community Additions #

    +

    Formidable Labs (FormidableLabs) have been busy, as they've also just launched Radium, a React component that provides you with the ability to use inline styles instead of CSS. They're also looking for some help contributing to a Radium Bootstrap implementation.

    + +

    Reactiflux.com is a new Slack community based around (you guessed it!) React, and Flux.

    + +

    React Week is a week-long learning workshop, happening next week, for React, Flux, and other related technologies, run by Ryan Florence (ryanflorence).

    + +

    Babel-sublime is a new package which provides Sublime with language definitions for ES6 JavaScript with React JSX syntax extensions.

    + +

    react-meteor, a package that replaces the default templating system of the Meteor platform with React, recently received a big update.

    +

    Rebuilding with React #

    +

    Rich Manalang (rmanalan) from Atlassian explains why they rebuilt their HipChat web client from scratch using React, and how they're already using it to rebuild their native desktop clients.

    + +

    Andrew Hillel of the BBC gives an excellent and thorough breakdown of the stack they used to rebuild their homepage, with React as an integral part of the front-end.

    + +

    A team from New Zealand called Atomic is building web and mobile prototyping and design tools entirely in-browser, and as co-founder Darryl Gray says, “React.js “totally changed” the fact that browser performance often wasn’t good enough for complex tools like this.”.

    + +

    Polarr (polarrco) have rebuilt their browser-based photo editor with React.

    +

    It's F8! #

    +

    F8 2015 is just around the corner, and you can sign up for the video streams in advance because we're sure to be covering all things React.

    +

    Meetups #

    +

    Our @reactjs meetup is in full effect #ReactJS btw bathroom code is 6012 lol pic.twitter.com/7iUpvmm3zz

    — littleBits (@littleBits) February 25, 2015
    + + + +

    @yrezgui captivating us with @reactjs at @DevRocketUK. Thanks to the amazing sponsors @makersacademy and @couchbase. pic.twitter.com/xwA773omky

    — James Nocentini (@jamiltz) February 24, 2015
    + + + +

    Listening to a bunch of very clever geekoids at the @reactjs seminar. Nice! pic.twitter.com/0TeTOJOerO

    — Nick Middleweek (@nmiddleweek) February 18, 2015
    + + + +

    Watching the @FrontendMasters ReactJS workshop! pic.twitter.com/YraYIK97Lu

    — ReactJS News (@ReactJSNews) February 13, 2015
    + + + +
    + +

    React v0.13 RC

    February 24, 2015 by Paul O'Shannessy

    @@ -433,275 +492,6 @@ Minified build for production: -

    React.js Conf Round-up 2015

    -

    February 18, 2015 by Steven Luscher

    -
    -
    -

    It was a privilege to welcome the React community to Facebook HQ on January 28–29 for the first-ever React.js Conf, and a pleasure to be be able to unveil three new technologies that we've been using internally at Facebook for some time: GraphQL, Relay, and React Native.

    -

    The talks #

    -
    -
    -

    Keynote #

    -

    - Tom Occhino opened with a history of how React came to be, before announcing Facebook’s answer to a long-looming what-if question: what if we could use React to target something other than the DOM? -

    -
    -
    - -
    -
    - -
    -
    -

    Tweaking in real time #

    -

    - Brenton Simpson showed us how eBay brings Bret Victor’s feedback loop to your favorite editor using Webpack, react-hot-loader, and Ambidex. -

    -
    -
    - -
    -
    - -
    -
    -

    Abstract Syntax Trees #

    -

    - Gurdas Nijor showed us how we can leverage some conventions of React to perform source code transformations that unlock an inspirational set of use cases. -

    -
    -
    - -
    -
    - -
    -
    -

    Relay and GraphQL #

    -

    - Daniel Schafer and Jing Chen showed us how Facebook approaches data fetching with React, giving us an early peek at the forthcoming duo of Relay and GraphQL. -

    -
    -
    - -
    -
    - -
    -
    -

    Channels #

    -

    - James Long explores what might happen if we introduce channels, a new style of coordinating actions, to React. -

    -
    -
    - -
    -
    - -
    -
    -

    React Router #

    -

    - Michael Jackson reminded us that URLs should be part of our design process, and showed us how react-router can help to manage the transitions between them. -

    -
    -
    - -
    -
    - -
    -
    -

    Full-stack Flux #

    -

    - Pete Hunt showed us how a Flux approach can help us scale actions and questions on the backend in addition to the frontend. -

    -
    -
    - -
    -
    - -
    -
    -

    High-performance #

    -

    - Jason Bonta showed us how complex user interfaces can get, and how his team keeps them performant as they scale. He also had the pleasure of open-sourcing his team’s work on FixedDataTable. -

    -
    -
    - -
    -
    - -
    -
    -

    FormatJS and react-intl #

    -

    - Eric Ferraiuolo showed how you can bring your app to a worldwide audience using a series of polyfills and emerging ECMAScript APIs. -

    -
    -
    - -
    -
    - -
    -
    -

    Hype! #

    -

    - Ryan Florence showed us how easy it is to transition from a career selling life insurance, to a burgeoning one as a software developer. All you have to do is to learn how to say “yes.” -

    -
    -
    - -
    -
    - -
    -
    -

    React Native #

    -

    - Christopher Chedeau showed us how to bring the developer experience of working with React on the web to native app development, using React Native. -

    -
    -
    - -
    -
    - -
    -
    -

    Components #

    -

    - Andrew Rota explained how React and Web Components can work together, and how to avoid some common pitfalls. -

    -
    -
    - -
    -
    - -
    -
    -

    Immutability #

    -

    - Lee Byron led a master-class on persistent immutable data structures, showing us the world of possibility that they can unlock for your software, and perhaps Javascript in general. -

    -
    -
    - -
    -
    - -
    -
    -

    Beyond the DOM #

    -

    - Jafar Husain told us a story about how Netflix was able to push React into places where the DOM could not go. -

    -
    - -
    -
    - -
    -
    -

    Data Visualization #

    -

    - Zach Nation showed us how we can produce visualizations from over 45 million data points without breaking a sweat. -

    -
    - -
    -
    - -
    -
    -

    React Refracted #

    -

    - David Nolen gave us a view of React from a non-JavaScript perspective, challenging some common intuition along the way. -

    -
    - -
    -
    - -
    -
    -

    Flux Panel #

    -

    - Bill Fisher coordinated a Flux panel together with Michael Ridgway, Spike Brehm, Andres Suarez, Jing Chen, Ian Obermiller, and Kyle Davis. -

    -
    - -
    -
    - -
    -
    -

    Component communication #

    -

    - Bonnie Eisenman led us through the ‘adapter’ approach to inter-component communication taken by her team at Codecademy. -

    -
    - -
    -
    - -
    -
    -

    Flow and TypeScript #

    -

    - James Brantly demonstrated how we can reap the benefits of static typing using both Flow and TypeScript. -

    -
    - -
    -
    - -
    -
    -

    Core Team Q&A #

    -

    - Tom Occhino, Ben Alpert, Lee Byron, Christopher Chedeau, Sebastian Markbåge, Jing Chen, and Dan Schafer closed the conference with a Q&A session. -

    -
    - -
    -
    -

    Reactions #

    -

    The conference is over, but the conversation has just begun.

    - -

    Mihai Parparita detailed his efforts to hack his way to a React.js Conf ticket; James Long blogged about his first encounter with React Native; Eric Florenzano talked about how he perceives the impact of Relay, GraphQL, and React Native on software development; Margaret Staples blogged about her experience of being on-campus at Facebook HQ; Jeff Barczewski tied his experience of attending the conference up with a bow in this blog post filled with photos, videos, and links; Kevin Old left us with his takeaways; Paul Wittmann found React Native freshly on his radar; and finally, undeterred by not being able to attend the conference in person, Justin Ball summarized it from afar.

    - -

    And, in case you missed a session, you can borrow Michael Chan’s drawings, Mihai Parparita’s summary, or Shaohua Zhou’s day 1 / day 2 notes.

    - -
    -
    - - - -
    -
    - - - - -
    -
    - - - -

    All proceeds from React.js Conf 2015 were donated to the wonderful programs at code.org. These programs aim to increase access to the field of computer science by underrepresented members of our community. Watch this video to learn more.

    - - - -
    -
    - @@ -90,6 +90,84 @@
    +
    +

    Community Round-up #11

    +

    November 18, 2013 by Vjeux

    +
    +
    +

    This round-up is the proof that React has taken off from its Facebook's root: it features three in-depth presentations of React done by external people. This is awesome, keep them coming!

    +

    Super VanJS 2013 Talk #

    +

    Steve Luscher working at LeanPub made a 30 min talk at Super VanJS. He does a remarkable job at explaining why React is so fast with very exciting demos using the HTML5 Audio API.

    + +
    +

    React Tips #

    +

    Connor McSheffrey and Cheng Lou added a new section to the documentation. It's a list of small tips that you will probably find useful while working on React. Since each article is very small and focused, we encourage you to contribute!

    + + +

    Intro to the React Framework #

    +

    Pavan Podila 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. +

    + +

    Read the full article ...

    +
    +

    140-characters textarea #

    +

    Brian Kim wrote a small textarea component that gradually turns red as you reach the 140-characters limit. Because he only changes the background color, React is smart enough not to mess with the text selection.

    + +

    See the Pen FECGb by Brian Kim (@brainkim) on CodePen

    + + +

    Genesis Skeleton #

    +

    Eric Clemmons 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. +

    +

    AgFlow Talk #

    +

    Robert Zaremba working on AgFlow recently talked in Poland about React.

    + +
    +

    In a nutshell, I presented why we chose React among other available options (ember.js, angular, backbone ...) in AgFlow, where I’m leading an application development.

    + +

    During the talk a wanted to highlight that React is not about implementing a Model, but a way to construct visible components with some state. React is simple. It is super simple, you can learn it in 1h. On the other hand what is model? Which functionality it should provide? React does one thing and does it the best (for me)!

    + +

    Read the full article...

    +
    + +
    +

    JSX #

    +

    Todd Kennedy working at Condé Nast wrote JSXHint and explains in a blog post his perspective on JSX.

    + +
    +

    Lets start with the elephant in the room: JSX? +Is this some sort of template language? Specifically no. This might have been the first big stumbling block. What looks like to be a templating language is actually an in-line DSL that gets transpiled directly into JavaScript by the JSX transpiler.

    + +

    Creating elements in memory is quick -- copying those elements into the DOM is where the slowness occurs. This is due to a variety of issues, most namely reflow/paint. Changing the items in the DOM causes the browser to re-paint the display, apply styles, etc. We want to keep those operations to an absolute minimum, especially if we're dealing with something that needs to update the DOM frequently.

    + +

    Read the full article...

    +
    +

    Photo Gallery #

    +

    Maykel Loomans, designer at Instagram, wrote a gallery for photos he shot using React. +

    +

    Random Tweet #

    +

    +

    + +
    +
    +

    Community Round-up #10

    November 6, 2013 by Vjeux

    @@ -425,92 +503,6 @@
    -
    -

    Community Round-up #9

    -

    October 3, 2013 by 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.

    - -

    -

    React Hackathon Winner #

    -

    Alex Swan implemented Qu.izti.me, a multi-player quiz game. It is real-time via Web Socket and mobile friendly.

    - -
    -

    The game itself is pretty simple. People join the "room" by going to 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. -

    - -

    Read More...

    -
    -

    JSConf EU Talk: Rethinking Best Practices #

    -

    Pete Hunt presented React at JSConf EU. He covers three controversial design decisions of React:

    - -
      -
    1. Build components, not templates
    2. -
    3. Re-render the whole app on every update
    4. -
    5. Virtual DOM
    6. -
    - -

    The video will be available soon on the JSConf EU website, but in the meantime, here are Pete's slides:

    - -
    -

    Pump - Clojure bindings for React #

    -

    Alexander Solovyov has been working on React bindings for ClojureScript. This is really exciting as it is using "native" ClojureScript data structures.

    -
    (ns your.app
    -  (:require-macros [pump.def-macros :refer [defr]])
    -  (:require [pump.core]))
    -
    -(defr Component
    -  :get-initial-state #(identity {:some-value ""})
    -
    -  [component props state]
    -
    -  [:div {:class-name "test"} "hello"])
    -
    -

    Check it out on GitHub...

    -

    JSXHint #

    -

    Todd Kennedy working at Condé Nast implemented a wrapper on-top of JSHint that first converts JSX files to JS.

    - -
    -

    A wrapper around JSHint to allow linting of files containg JSX syntax. Accepts glob patterns. Respects your local .jshintrc file and .gitignore to filter your glob patterns.

    -
    npm install -g jsxhint
    -
    -

    Check it out on GitHub...

    -
    -

    Turbo React #

    -

    Ross Allen working at Mesosphere combined Turbolinks, a library used by Ruby on Rails to speed up page transition, and React.

    - -
    -

    "Re-request this page" is just a link to the current page. When you click it, Turbolinks intercepts the GET request and fetchs the full page via XHR.

    - -

    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 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. -

    - -

    Check out the demo...

    -
    -

    Reactive Table #

    -

    Stoyan Stefanov continues his series of blog posts about React. This one is an introduction tutorial on rendering a simple table with React.

    - -
    -

    React is all about components. So let's build one.

    - -

    Let's call it Table (to avoid any confusion what the component is about).

    -
    var Table = React.createClass({
    -  /*stuff goeth here*/
    -});
    -
    -

    You see that React components are defined using a regular JS object. Some properties and methods of the object such as render() have special meanings, the rest is upforgrabs.

    - -

    Read the full article...

    -
    - -
    -
    - @@ -90,6 +90,92 @@
    +
    +

    Community Round-up #9

    +

    October 3, 2013 by 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.

    + +

    +

    React Hackathon Winner #

    +

    Alex Swan implemented Qu.izti.me, a multi-player quiz game. It is real-time via Web Socket and mobile friendly.

    + +
    +

    The game itself is pretty simple. People join the "room" by going to 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. +

    + +

    Read More...

    +
    +

    JSConf EU Talk: Rethinking Best Practices #

    +

    Pete Hunt presented React at JSConf EU. He covers three controversial design decisions of React:

    + +
      +
    1. Build components, not templates
    2. +
    3. Re-render the whole app on every update
    4. +
    5. Virtual DOM
    6. +
    + +

    The video will be available soon on the JSConf EU website, but in the meantime, here are Pete's slides:

    + +
    +

    Pump - Clojure bindings for React #

    +

    Alexander Solovyov has been working on React bindings for ClojureScript. This is really exciting as it is using "native" ClojureScript data structures.

    +
    (ns your.app
    +  (:require-macros [pump.def-macros :refer [defr]])
    +  (:require [pump.core]))
    +
    +(defr Component
    +  :get-initial-state #(identity {:some-value ""})
    +
    +  [component props state]
    +
    +  [:div {:class-name "test"} "hello"])
    +
    +

    Check it out on GitHub...

    +

    JSXHint #

    +

    Todd Kennedy working at Condé Nast implemented a wrapper on-top of JSHint that first converts JSX files to JS.

    + +
    +

    A wrapper around JSHint to allow linting of files containg JSX syntax. Accepts glob patterns. Respects your local .jshintrc file and .gitignore to filter your glob patterns.

    +
    npm install -g jsxhint
    +
    +

    Check it out on GitHub...

    +
    +

    Turbo React #

    +

    Ross Allen working at Mesosphere combined Turbolinks, a library used by Ruby on Rails to speed up page transition, and React.

    + +
    +

    "Re-request this page" is just a link to the current page. When you click it, Turbolinks intercepts the GET request and fetchs the full page via XHR.

    + +

    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 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. +

    + +

    Check out the demo...

    +
    +

    Reactive Table #

    +

    Stoyan Stefanov continues his series of blog posts about React. This one is an introduction tutorial on rendering a simple table with React.

    + +
    +

    React is all about components. So let's build one.

    + +

    Let's call it Table (to avoid any confusion what the component is about).

    +
    var Table = React.createClass({
    +  /*stuff goeth here*/
    +});
    +
    +

    You see that React components are defined using a regular JS object. Some properties and methods of the object such as render() have special meanings, the rest is upforgrabs.

    + +

    Read the full article...

    +
    + +
    +
    +

    Community Round-up #8

    September 24, 2013 by Vjeux

    @@ -349,42 +435,6 @@
    -
    -

    Use React and JSX in Ruby on Rails

    -

    July 30, 2013 by Paul O'Shannessy

    -
    -
    -

    Today we're releasing a gem to make it easier to use React and JSX in Ruby on Rails applications: react-rails.

    - -

    This gem has 2 primary purposes:

    - -
      -
    1. To package react.js in a way that's easy to use and easy to update.
    2. -
    3. To allow you to write JSX without an external build step to transform that into JS.
    4. -
    -

    Packaging react.js #

    -

    To make react.js available for use client-side, simply add react to your manifest, and declare the variant you'd like to use in your environment. When you use :production, the minified and optimized react.min.js will be used instead of the development version. For example:

    -
    # config/environments/development.rb
    -
    -MyApp::Application.configure do
    -  config.react.variant = :development
    -  # use :production in production.rb
    -end
    -
    // app/assets/javascript/application.js
    -
    -//= require react
    -

    Writing JSX #

    -

    When you name your file with myfile.js.jsx, react-rails will automatically try to transform that file. For the time being, we still require that you include the docblock at the beginning of the file. For example, this file will get transformed on request.

    -
    /** @jsx React.DOM */
    -React.renderComponent(<MyComponent/>, document.body)
    -

    Asset Pipeline #

    -

    react-rails takes advantage of the asset pipeline that was introduced in Rails 3.1. A very important part of that pipeline is the assets:precompile Rake task. react-rails will ensure that your JSX files will be transformed into regular JS before all of your assets are minified and packaged.

    -

    Installation #

    -

    Installation follows the same process you're familiar with. You can install it globally with gem install react-rails, though we suggest you add the dependency to your Gemfile directly.

    - -
    -
    - @@ -90,6 +90,42 @@
    +
    +

    Use React and JSX in Ruby on Rails

    +

    July 30, 2013 by Paul O'Shannessy

    +
    +
    +

    Today we're releasing a gem to make it easier to use React and JSX in Ruby on Rails applications: react-rails.

    + +

    This gem has 2 primary purposes:

    + +
      +
    1. To package react.js in a way that's easy to use and easy to update.
    2. +
    3. To allow you to write JSX without an external build step to transform that into JS.
    4. +
    +

    Packaging react.js #

    +

    To make react.js available for use client-side, simply add react to your manifest, and declare the variant you'd like to use in your environment. When you use :production, the minified and optimized react.min.js will be used instead of the development version. For example:

    +
    # config/environments/development.rb
    +
    +MyApp::Application.configure do
    +  config.react.variant = :development
    +  # use :production in production.rb
    +end
    +
    // app/assets/javascript/application.js
    +
    +//= require react
    +

    Writing JSX #

    +

    When you name your file with myfile.js.jsx, react-rails will automatically try to transform that file. For the time being, we still require that you include the docblock at the beginning of the file. For example, this file will get transformed on request.

    +
    /** @jsx React.DOM */
    +React.renderComponent(<MyComponent/>, document.body)
    +

    Asset Pipeline #

    +

    react-rails takes advantage of the asset pipeline that was introduced in Rails 3.1. A very important part of that pipeline is the assets:precompile Rake task. react-rails will ensure that your JSX files will be transformed into regular JS before all of your assets are minified and packaged.

    +

    Installation #

    +

    Installation follows the same process you're familiar with. You can install it globally with gem install react-rails, though we suggest you add the dependency to your Gemfile directly.

    + +
    +
    +

    React v0.4.1

    July 26, 2013 by Paul O'Shannessy

    @@ -305,75 +341,6 @@ If you were using React without JSX previously, your code should still work.
    -
    -

    Community Round-up #4

    -

    July 3, 2013 by Vjeux

    -
    -
    -

    React reconciliation process appears to be very well suited to implement a text editor with a live preview as people at Khan Academy show us.

    -

    Khan Academy #

    -

    Ben Kamens explains how Ben Alpert and Joel Burget are promoting React inside of Khan Academy. They now have three projects in the works using React.

    - -
    -

    Recently two Khan Academy devs dropped into our team chat and said they were gonna use React to write a new feature. They even hinted that we may want to adopt it product-wide.

    - -

    "The library is only a week old. It's a brand new way of thinking about things. We're the first to use it outside of Facebook. Heck, even the React devs were surprised to hear we're using this in production!!!"

    - -

    Read the full post...

    -
    - -

    The best part is the demo of how React reconciliation process makes live editing more user-friendly.

    - -
    -

    Our renderer, post-React, is on the left. A typical math editor's preview is on the right. -

    -
    -

    React Snippets #

    -

    Over the past several weeks, members of our team, Pete Hunt and Paul O'Shannessy, answered many questions that were asked in the React group. They give a good overview of how to integrate React with other libraries and APIs through the use of Mixins and Lifecycle Methods.

    - -
    -

    Listening Scroll Event

    - -
      -
    • JSFiddle: Basically I've given you two mixins. The first lets you react to global scroll events. The second is, IMO, much more useful: it gives you scroll start and scroll end events, which you can use with setState() to create components that react based on whether the user is scrolling or not.
    • -
    - -

    Fade-in Transition

    - -
      -
    • JSFiddle: Creating a new <FadeInWhenAdded> component and using jQuery .fadeIn() function on the DOM node.
    • -
    • JSFiddle: Using CSS transition instead.
    • -
    - -

    Socket.IO Integration

    - -
      -
    • Gist: The big thing to notice is that my component is pretty dumb (it doesn't have to be but that's how I chose to model it). All it does is render itself based on the props that are passed in. renderOrUpdate is where the "magic" happens.
    • -
    • Gist: This example is doing everything -- including the IO -- inside of a single React component.
    • -
    • Gist: One pattern that we use at Instagram a lot is to employ separation of concerns and consolidate I/O and state into components higher in the hierarchy to keep the rest of the components mostly stateless and purely display.
    • -
    - -

    Sortable jQuery Plugin Integration

    - -
      -
    • JSFiddle: Your React component simply render empty divs, and then in componentDidMount() you call React.renderComponent() on each of those divs to set up a new root React tree. Be sure to explicitly unmountAndReleaseReactRootNode() for each component in componentWillUnmount().
    • -
    -
    -

    Introduction to React Screencast #

    -

    Pete Hunt recorded himself implementing a simple <Blink> tag in React.

    - -
    -

    Snake in React #

    -

    Tom Occhino implemented Snake in 150 lines with React.

    - -
    -

    Check the source on Github -

    -
    - -
    -
    - @@ -90,6 +90,75 @@
    +
    +

    Community Round-up #4

    +

    July 3, 2013 by Vjeux

    +
    +
    +

    React reconciliation process appears to be very well suited to implement a text editor with a live preview as people at Khan Academy show us.

    +

    Khan Academy #

    +

    Ben Kamens explains how Ben Alpert and Joel Burget are promoting React inside of Khan Academy. They now have three projects in the works using React.

    + +
    +

    Recently two Khan Academy devs dropped into our team chat and said they were gonna use React to write a new feature. They even hinted that we may want to adopt it product-wide.

    + +

    "The library is only a week old. It's a brand new way of thinking about things. We're the first to use it outside of Facebook. Heck, even the React devs were surprised to hear we're using this in production!!!"

    + +

    Read the full post...

    +
    + +

    The best part is the demo of how React reconciliation process makes live editing more user-friendly.

    + +
    +

    Our renderer, post-React, is on the left. A typical math editor's preview is on the right. +

    +
    +

    React Snippets #

    +

    Over the past several weeks, members of our team, Pete Hunt and Paul O'Shannessy, answered many questions that were asked in the React group. They give a good overview of how to integrate React with other libraries and APIs through the use of Mixins and Lifecycle Methods.

    + +
    +

    Listening Scroll Event

    + +
      +
    • JSFiddle: Basically I've given you two mixins. The first lets you react to global scroll events. The second is, IMO, much more useful: it gives you scroll start and scroll end events, which you can use with setState() to create components that react based on whether the user is scrolling or not.
    • +
    + +

    Fade-in Transition

    + +
      +
    • JSFiddle: Creating a new <FadeInWhenAdded> component and using jQuery .fadeIn() function on the DOM node.
    • +
    • JSFiddle: Using CSS transition instead.
    • +
    + +

    Socket.IO Integration

    + +
      +
    • Gist: The big thing to notice is that my component is pretty dumb (it doesn't have to be but that's how I chose to model it). All it does is render itself based on the props that are passed in. renderOrUpdate is where the "magic" happens.
    • +
    • Gist: This example is doing everything -- including the IO -- inside of a single React component.
    • +
    • Gist: One pattern that we use at Instagram a lot is to employ separation of concerns and consolidate I/O and state into components higher in the hierarchy to keep the rest of the components mostly stateless and purely display.
    • +
    + +

    Sortable jQuery Plugin Integration

    + +
      +
    • JSFiddle: Your React component simply render empty divs, and then in componentDidMount() you call React.renderComponent() on each of those divs to set up a new root React tree. Be sure to explicitly unmountAndReleaseReactRootNode() for each component in componentWillUnmount().
    • +
    +
    +

    Introduction to React Screencast #

    +

    Pete Hunt recorded himself implementing a simple <Blink> tag in React.

    + +
    +

    Snake in React #

    +

    Tom Occhino implemented Snake in 150 lines with React.

    + +
    +

    Check the source on Github +

    +
    + +
    +
    +

    New in React v0.4: Autobind by Default

    July 2, 2013 by Paul O'Shannessy

    @@ -311,57 +380,6 @@
    -
    -

    Community Round-up #1

    -

    June 12, 2013 by Vjeux

    -
    -
    -

    React was open sourced two weeks ago and it's time for a little round-up of what has been going on.

    -

    Khan Academy Question Editor #

    -

    It looks like Ben Alpert is the first person outside of Facebook and Instagram to push React code to production. We are very grateful for his contributions in form of pull requests, bug reports and presence on IRC (#reactjs on Freenode). Ben wrote about his experience using React:

    - -
    -

    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: -

    - -

    Read the full post...

    -
    -

    Pimp my Backbone.View (by replacing it with React) #

    -

    Paul Seiffert wrote a blog post that explains how to integrate React into Backbone applications.

    - -
    -

    React has some interesting concepts for JavaScript view objects that can be used to eliminate this one big problem I have with Backbone.js.

    - -

    As in most MVC implementations (although React is probably just a VC implementation), a view is one portion of the screen that is managed by a controlling object. This object is responsible for deciding when to re-render the view and how to react to user input. With React, these view-controllers objects are called components. A component knows how to render its view and how to handle to the user's interaction with it.

    - -

    The interesting thing is that React is figuring out by itself when to re-render a view and how to do this in the most efficient way.

    - -

    Read the full post...

    -
    -

    Using facebook's React with require.js #

    -

    Mario Mueller wrote a menu component in React and was able to easily integrate it with require.js, EventEmitter2 and bower.

    - -
    -

    I recently stumbled upon facebook's React library, which is a Javascript library for building reusable frontend components. Even if this lib is only at version 0.3.x it behaves very stable, it is fast and is fun to code. I'm a big fan of require.js, so I tried to use React within the require.js eco system. It was not as hard as expected and here are some examples and some thoughts about it.

    - -

    Read the full post...

    -
    -

    Origins of React #

    -

    Pete Hunt explained what differentiates React from other JavaScript libraries in a previous blog post. Lee Byron gives another perspective on Quora:

    - -
    -

    React isn't quite like any other popular Javascript libraries, and it solves a very specific problem: complex UI rendering. It's also intended to be used along side many other popular libraries. For example, React works well with Backbone.js, amongst many others.

    - -

    React was born out of frustrations with the common pattern of writing two-way data bindings in complex MVC apps. React is an implementation of one-way data bindings.

    - -

    Read the full post...

    -
    - -
    -
    - @@ -90,6 +90,57 @@
    +
    +

    Community Round-up #1

    +

    June 12, 2013 by Vjeux

    +
    +
    +

    React was open sourced two weeks ago and it's time for a little round-up of what has been going on.

    +

    Khan Academy Question Editor #

    +

    It looks like Ben Alpert is the first person outside of Facebook and Instagram to push React code to production. We are very grateful for his contributions in form of pull requests, bug reports and presence on IRC (#reactjs on Freenode). Ben wrote about his experience using React:

    + +
    +

    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: +

    + +

    Read the full post...

    +
    +

    Pimp my Backbone.View (by replacing it with React) #

    +

    Paul Seiffert wrote a blog post that explains how to integrate React into Backbone applications.

    + +
    +

    React has some interesting concepts for JavaScript view objects that can be used to eliminate this one big problem I have with Backbone.js.

    + +

    As in most MVC implementations (although React is probably just a VC implementation), a view is one portion of the screen that is managed by a controlling object. This object is responsible for deciding when to re-render the view and how to react to user input. With React, these view-controllers objects are called components. A component knows how to render its view and how to handle to the user's interaction with it.

    + +

    The interesting thing is that React is figuring out by itself when to re-render a view and how to do this in the most efficient way.

    + +

    Read the full post...

    +
    +

    Using facebook's React with require.js #

    +

    Mario Mueller wrote a menu component in React and was able to easily integrate it with require.js, EventEmitter2 and bower.

    + +
    +

    I recently stumbled upon facebook's React library, which is a Javascript library for building reusable frontend components. Even if this lib is only at version 0.3.x it behaves very stable, it is fast and is fun to code. I'm a big fan of require.js, so I tried to use React within the require.js eco system. It was not as hard as expected and here are some examples and some thoughts about it.

    + +

    Read the full post...

    +
    +

    Origins of React #

    +

    Pete Hunt explained what differentiates React from other JavaScript libraries in a previous blog post. Lee Byron gives another perspective on Quora:

    + +
    +

    React isn't quite like any other popular Javascript libraries, and it solves a very specific problem: complex UI rendering. It's also intended to be used along side many other popular libraries. For example, React works well with Backbone.js, amongst many others.

    + +

    React was born out of frustrations with the common pattern of writing two-way data bindings in complex MVC apps. React is an implementation of one-way data bindings.

    + +

    Read the full post...

    +
    + +
    +
    +

    Why did we build React?

    June 5, 2013 by Pete Hunt

    diff --git a/blog/page2/index.html b/blog/page2/index.html index f2dd19f892..7e4a9b0098 100644 --- a/blog/page2/index.html +++ b/blog/page2/index.html @@ -65,6 +65,8 @@
  • React v0.13 RC2
  • +
  • Community Round-up #25
  • +
  • React v0.13 RC
  • Streamlining React Elements
  • @@ -81,8 +83,6 @@
  • Community Round-up #24
  • -
  • React.js Conf Updates
  • -
  • All posts ...
  • @@ -90,6 +90,275 @@
    +
    +

    React.js Conf Round-up 2015

    +

    February 18, 2015 by Steven Luscher

    +
    +
    +

    It was a privilege to welcome the React community to Facebook HQ on January 28–29 for the first-ever React.js Conf, and a pleasure to be be able to unveil three new technologies that we've been using internally at Facebook for some time: GraphQL, Relay, and React Native.

    +

    The talks #

    +
    +
    +

    Keynote #

    +

    + Tom Occhino opened with a history of how React came to be, before announcing Facebook’s answer to a long-looming what-if question: what if we could use React to target something other than the DOM? +

    +
    +
    + +
    +
    + +
    +
    +

    Tweaking in real time #

    +

    + Brenton Simpson showed us how eBay brings Bret Victor’s feedback loop to your favorite editor using Webpack, react-hot-loader, and Ambidex. +

    +
    +
    + +
    +
    + +
    +
    +

    Abstract Syntax Trees #

    +

    + Gurdas Nijor showed us how we can leverage some conventions of React to perform source code transformations that unlock an inspirational set of use cases. +

    +
    +
    + +
    +
    + +
    +
    +

    Relay and GraphQL #

    +

    + Daniel Schafer and Jing Chen showed us how Facebook approaches data fetching with React, giving us an early peek at the forthcoming duo of Relay and GraphQL. +

    +
    +
    + +
    +
    + +
    +
    +

    Channels #

    +

    + James Long explores what might happen if we introduce channels, a new style of coordinating actions, to React. +

    +
    +
    + +
    +
    + +
    +
    +

    React Router #

    +

    + Michael Jackson reminded us that URLs should be part of our design process, and showed us how react-router can help to manage the transitions between them. +

    +
    +
    + +
    +
    + +
    +
    +

    Full-stack Flux #

    +

    + Pete Hunt showed us how a Flux approach can help us scale actions and questions on the backend in addition to the frontend. +

    +
    +
    + +
    +
    + +
    +
    +

    High-performance #

    +

    + Jason Bonta showed us how complex user interfaces can get, and how his team keeps them performant as they scale. He also had the pleasure of open-sourcing his team’s work on FixedDataTable. +

    +
    +
    + +
    +
    + +
    +
    +

    FormatJS and react-intl #

    +

    + Eric Ferraiuolo showed how you can bring your app to a worldwide audience using a series of polyfills and emerging ECMAScript APIs. +

    +
    +
    + +
    +
    + +
    +
    +

    Hype! #

    +

    + Ryan Florence showed us how easy it is to transition from a career selling life insurance, to a burgeoning one as a software developer. All you have to do is to learn how to say “yes.” +

    +
    +
    + +
    +
    + +
    +
    +

    React Native #

    +

    + Christopher Chedeau showed us how to bring the developer experience of working with React on the web to native app development, using React Native. +

    +
    +
    + +
    +
    + +
    +
    +

    Components #

    +

    + Andrew Rota explained how React and Web Components can work together, and how to avoid some common pitfalls. +

    +
    +
    + +
    +
    + +
    +
    +

    Immutability #

    +

    + Lee Byron led a master-class on persistent immutable data structures, showing us the world of possibility that they can unlock for your software, and perhaps Javascript in general. +

    +
    +
    + +
    +
    + +
    +
    +

    Beyond the DOM #

    +

    + Jafar Husain told us a story about how Netflix was able to push React into places where the DOM could not go. +

    +
    + +
    +
    + +
    +
    +

    Data Visualization #

    +

    + Zach Nation showed us how we can produce visualizations from over 45 million data points without breaking a sweat. +

    +
    + +
    +
    + +
    +
    +

    React Refracted #

    +

    + David Nolen gave us a view of React from a non-JavaScript perspective, challenging some common intuition along the way. +

    +
    + +
    +
    + +
    +
    +

    Flux Panel #

    +

    + Bill Fisher coordinated a Flux panel together with Michael Ridgway, Spike Brehm, Andres Suarez, Jing Chen, Ian Obermiller, and Kyle Davis. +

    +
    + +
    +
    + +
    +
    +

    Component communication #

    +

    + Bonnie Eisenman led us through the ‘adapter’ approach to inter-component communication taken by her team at Codecademy. +

    +
    + +
    +
    + +
    +
    +

    Flow and TypeScript #

    +

    + James Brantly demonstrated how we can reap the benefits of static typing using both Flow and TypeScript. +

    +
    + +
    +
    + +
    +
    +

    Core Team Q&A #

    +

    + Tom Occhino, Ben Alpert, Lee Byron, Christopher Chedeau, Sebastian Markbåge, Jing Chen, and Dan Schafer closed the conference with a Q&A session. +

    +
    + +
    +
    +

    Reactions #

    +

    The conference is over, but the conversation has just begun.

    + +

    Mihai Parparita detailed his efforts to hack his way to a React.js Conf ticket; James Long blogged about his first encounter with React Native; Eric Florenzano talked about how he perceives the impact of Relay, GraphQL, and React Native on software development; Margaret Staples blogged about her experience of being on-campus at Facebook HQ; Jeff Barczewski tied his experience of attending the conference up with a bow in this blog post filled with photos, videos, and links; Kevin Old left us with his takeaways; Paul Wittmann found React Native freshly on his radar; and finally, undeterred by not being able to attend the conference in person, Justin Ball summarized it from afar.

    + +

    And, in case you missed a session, you can borrow Michael Chan’s drawings, Mihai Parparita’s summary, or Shaohua Zhou’s day 1 / day 2 notes.

    + +
    +
    + + + +
    +
    + + + + +
    +
    + + + +

    All proceeds from React.js Conf 2015 were donated to the wonderful programs at code.org. These programs aim to increase access to the field of computer science by underrepresented members of our community. Watch this video to learn more.

    + + + +
    +
    +

    React v0.13.0 Beta 1

    January 27, 2015 by Sebastian Markbåge

    @@ -385,51 +654,6 @@ Minified build for production: -

    React.js Conf Updates

    -

    November 24, 2014 by Vjeux

    -
    -
    -

    Yesterday was the React.js Conf call for presenters submission deadline. We were -surprised to have received a total of one hundred talk proposals and were -amazed that 600 people requested to be notified when ticket go on sale. This is incredible!

    - -

    When we organized the conference, we decided to start small since this is the -first React.js conference. Also, we weren't sure what level of demand to expect, -so we planned for a single-track, two-day conference on Facebook's campus. The -largest room available would accomodate 18 speaking slots and 200 attendees. -The spacial configuration makes it difficult to add a second track and changing -venues only two months in advance would be too difficult, so we are deciding to -stick with the originally planned format and venue on Facebook's campus.

    - -

    Unfortunately, this means that we can only accept a small number of the awesome -conference talk proposals. In order to make sure attendees get a fair shot at -registering, we're going to to sell tickets in three separate first-come, -first-serve phases. Tickets will cost $200 regardless of which phase they are -purchased from and all proceeds will go to charity.

    - -
      -
    • Friday November 28th 2014 — Noon PST: First wave of tickets
    • -
    • Friday December 5th 2014 — Noon PST: Second wave of tickets
    • -
    • Friday December 12th 2014 — Noon PST: Third and last wave of tickets
    • -
    - -

    We really do wish that everyone could attend React.js Conf, but in order to -ensure a quality experience for those who attend, we feel it will be best to -limit the size of the conference to what was originally planned for. This means -that not everyone who wants to attend will be able to, and many talks that -would be excellent contributions to the conference will have to be postponed -until the next conference. All the talks will be recorded and put online shortly after.

    - -

    We hope to see many of you at React.js Conf this January.

    - -

    Sincerely,

    - -

    React Core Team

    - -
    -
    - @@ -90,6 +90,51 @@
    +
    +

    React.js Conf Updates

    +

    November 24, 2014 by Vjeux

    +
    +
    +

    Yesterday was the React.js Conf call for presenters submission deadline. We were +surprised to have received a total of one hundred talk proposals and were +amazed that 600 people requested to be notified when ticket go on sale. This is incredible!

    + +

    When we organized the conference, we decided to start small since this is the +first React.js conference. Also, we weren't sure what level of demand to expect, +so we planned for a single-track, two-day conference on Facebook's campus. The +largest room available would accomodate 18 speaking slots and 200 attendees. +The spacial configuration makes it difficult to add a second track and changing +venues only two months in advance would be too difficult, so we are deciding to +stick with the originally planned format and venue on Facebook's campus.

    + +

    Unfortunately, this means that we can only accept a small number of the awesome +conference talk proposals. In order to make sure attendees get a fair shot at +registering, we're going to to sell tickets in three separate first-come, +first-serve phases. Tickets will cost $200 regardless of which phase they are +purchased from and all proceeds will go to charity.

    + +
      +
    • Friday November 28th 2014 — Noon PST: First wave of tickets
    • +
    • Friday December 5th 2014 — Noon PST: Second wave of tickets
    • +
    • Friday December 12th 2014 — Noon PST: Third and last wave of tickets
    • +
    + +

    We really do wish that everyone could attend React.js Conf, but in order to +ensure a quality experience for those who attend, we feel it will be best to +limit the size of the conference to what was originally planned for. This means +that not everyone who wants to attend will be able to, and many talks that +would be excellent contributions to the conference will have to be postponed +until the next conference. All the talks will be recorded and put online shortly after.

    + +

    We hope to see many of you at React.js Conf this January.

    + +

    Sincerely,

    + +

    React Core Team

    + +
    +
    +

    React v0.12

    October 28, 2014 by Paul O’Shannessy

    @@ -458,160 +503,6 @@ Minified build for production: -

    Introducing React Elements

    -

    October 14, 2014 by Sebastian Markbåge

    -
    -
    -

    The upcoming React 0.12 tweaks some APIs to get us close to the final 1.0 API. This release is all about setting us up for making the ReactElement type really FAST, jest unit testing easier, making classes simpler (in preparation for ES6 classes) and better integration with third-party languages!

    - -

    If you currently use JSX everywhere, you don't really have to do anything to get these benefits! The updated transformer will do it for you.

    - -

    If you can't or don't want to use JSX, then please insert some hints for us. Add a React.createFactory call around your imported class when you require it:

    -
    var MyComponent = React.createFactory(require('MyComponent'));
    -
    -

    Everything is backwards compatible for now, and as always React will provide you with descriptive console messaging to help you upgrade.

    - -

    ReactElement is the primary API of React. Making it faster has shown to give us several times faster renders on common benchmarks. The API tweaks in this release helps us get there.

    - -

    Continue reading if you want all the nitty gritty details...

    -

    New Terminology #

    -

    We wanted to make it easier for new users to see the parallel with the DOM (and why React is different). To align our terminology we now use the term ReactElement instead of descriptor. Likewise, we use the term ReactNode instead of renderable.

    - -

    See the full React terminology guide.

    -

    Creating a ReactElement #

    -

    We now expose an external API for programmatically creating a ReactElement object.

    -
    var reactElement = React.createElement(type, props, children);
    -
    -

    The type argument is either a string (HTML tag) or a class. It's a description of what tag/class is going to be rendered and what props it will contain. You can also create factory functions for specific types. This basically just provides the type argument for you:

    -
    var div = React.createFactory('div');
    -var reactDivElement = div(props, children);
    -

    Deprecated: Auto-generated Factories #

    -

    Imagine if React.createClass was just a plain JavaScript class. If you call a class as a plain function you would call the component's constructor to create a Component instance, not a ReactElement:

    -
    new MyComponent(); // Component, not ReactElement
    -
    -

    React 0.11 gave you a factory function for free when you called React.createClass. This wrapped your internal class and then returned a ReactElement factory function for you.

    -
    var MyComponent = React.createFactory(
    -  class {
    -    render() {
    -      ...
    -    }
    -  }
    -);
    -
    -

    In future versions of React, we want to be able to support pure classes without any special React dependencies. To prepare for that we're deprecating the auto-generated factory.

    - -

    This is the biggest change to 0.12. Don't worry though. This functionality continues to work the same for this release, it just warns you if you're using a deprecated API. That way you can upgrade piece-by-piece instead of everything at once.

    -

    Upgrading to 0.12 #

    React With JSX #

    -

    If you use the React specific JSX transform, the upgrade path is simple. Just make sure you have React in scope.

    -
    // If you use node/browserify modules make sure
    -// that you require React into scope.
    -var React = require('react');
    -
    -

    React's JSX will create the ReactElement for you. You can continue to use JSX with regular classes:

    -
    var MyComponent = React.createClass(...);
    -
    -var MyOtherComponent = React.createClass({
    -  render: function() {
    -    return <MyComponent prop="value" />;
    -  }
    -});
    -
    -

    NOTE: React's JSX will not call arbitrary functions in future releases. This restriction is introduced so that it's easier to reason about the output of JSX by both the reader of your code and optimizing compilers. The JSX syntax is not tied to React. Just the transpiler. You can still use the JSX spec with a different transpiler for custom purposes.

    -

    React Without JSX #

    -

    If you don't use JSX and just call components as functions, you will need to explicitly create a factory before calling it:

    -
    var MyComponentClass = React.createClass(...);
    -
    -var MyComponent = React.createFactory(MyComponentClass); // New step
    -
    -var MyOtherComponent = React.createClass({
    -  render: function() {
    -    return MyComponent({ prop: 'value' });
    -  }
    -});
    -
    -

    If you're using a module system, the recommended solution is to export the class and create the factory on the requiring side.

    - -

    Your class creation is done just like before:

    -
    // MyComponent.js
    -var React = require('react');
    -var MyComponent = React.createClass(...);
    -module.exports = MyComponent;
    -
    -

    The other side uses React.createFactory after requireing the component class:

    -
    // MyOtherComponent.js
    -var React = require('react');
    -// All you have to do to upgrade is wrap your requires like this:
    -var MyComponent = React.createFactory(require('MyComponent'));
    -
    -var MyOtherComponent = React.createClass({
    -  render: function() {
    -    return MyComponent({ prop: 'value' });
    -  }
    -});
    -
    -module.exports = MyOtherComponent;
    -
    -

    You ONLY have to do this for custom classes. React still has built-in factories for common HTML elements.

    -
    var MyDOMComponent = React.createClass({
    -  render: function() {
    -    return React.DOM.div({ className: 'foo' }); // still ok
    -  }
    -});
    -
    -

    We realize that this is noisy. At least it's on the top of the file (out of sight, out of mind). This a tradeoff we had to make to get the other benefits that this model unlocks.

    -

    Anti-Pattern: Exporting Factories #

    -

    If you have an isolated project that only you use, then you could create a helper that creates both the class and the factory at once:

    -
    // Anti-pattern - Please, don't use
    -function createClass(spec) {
    -  return React.createFactory(React.createClass(spec));
    -}
    -
    -

    This makes your components incompatible with jest testing, consumers using JSX, third-party languages that implement their own optimized ReactElement creation, etc.

    - -

    It also encourages you to put more logic into these helper functions. Something that another language, a compiler or a reader of your code couldn't reason about.

    - -

    To fit into the React ecosystem we recommend that you always export pure classes from your shared modules and let the consumer decide the best strategy for generating ReactElements.

    -

    Third-party Languages #

    -

    The signature of a ReactElement is something like this:

    -
    {
    -  type : string | class,
    -  props : { children, className, etc. },
    -  key : string | boolean | number | null,
    -  ref : string | null
    -}
    -
    -

    Languages with static typing that don't need validation (e.g. Om in ClojureScript), and production level compilers will be able to generate these objects inline instead of going through the validation step. This optimization will allow significant performance improvements in React.

    -

    Your Thoughts and Ideas #

    -

    We'd love to hear your feedback on this API and your preferred style. A plausible alternative could be to directly inline objects instead of creating factory functions:

    -
    // MyOtherComponent.js
    -var React = require('react');
    -var MyComponent = require('MyComponent');
    -
    -var MyOtherComponent = React.createClass({
    -  render: function() {
    -    return { type: MyComponent, props: { prop: 'value' } };
    -  }
    -});
    -
    -module.exports = MyOtherComponent;
    -
    -

    This moves the noise down into the render method though. It also doesn't provide a hook for dynamic validation/type checking so you'll need some other way to verify that it's safe.

    - -

    NOTE: This won't work in this version of React because it's conflicting with other legacy APIs that we're deprecating. (We temporarily add a element._isReactElement = true marker on the object.)

    -

    The Next Step: ES6 Classes #

    -

    After 0.12 we'll begin work on moving to ES6 classes. We will still support React.createClass as a backwards compatible API. If you use an ES6 transpiler you will be able to declare your components like this:

    -
    export class MyComponent {
    -  render() {
    -    ...
    -  }
    -};
    -
    -

    This upcoming release is a stepping stone to make it as easy as this. Thanks for your support.

    - -
    -
    - @@ -90,6 +90,160 @@
    +
    +

    Introducing React Elements

    +

    October 14, 2014 by Sebastian Markbåge

    +
    +
    +

    The upcoming React 0.12 tweaks some APIs to get us close to the final 1.0 API. This release is all about setting us up for making the ReactElement type really FAST, jest unit testing easier, making classes simpler (in preparation for ES6 classes) and better integration with third-party languages!

    + +

    If you currently use JSX everywhere, you don't really have to do anything to get these benefits! The updated transformer will do it for you.

    + +

    If you can't or don't want to use JSX, then please insert some hints for us. Add a React.createFactory call around your imported class when you require it:

    +
    var MyComponent = React.createFactory(require('MyComponent'));
    +
    +

    Everything is backwards compatible for now, and as always React will provide you with descriptive console messaging to help you upgrade.

    + +

    ReactElement is the primary API of React. Making it faster has shown to give us several times faster renders on common benchmarks. The API tweaks in this release helps us get there.

    + +

    Continue reading if you want all the nitty gritty details...

    +

    New Terminology #

    +

    We wanted to make it easier for new users to see the parallel with the DOM (and why React is different). To align our terminology we now use the term ReactElement instead of descriptor. Likewise, we use the term ReactNode instead of renderable.

    + +

    See the full React terminology guide.

    +

    Creating a ReactElement #

    +

    We now expose an external API for programmatically creating a ReactElement object.

    +
    var reactElement = React.createElement(type, props, children);
    +
    +

    The type argument is either a string (HTML tag) or a class. It's a description of what tag/class is going to be rendered and what props it will contain. You can also create factory functions for specific types. This basically just provides the type argument for you:

    +
    var div = React.createFactory('div');
    +var reactDivElement = div(props, children);
    +

    Deprecated: Auto-generated Factories #

    +

    Imagine if React.createClass was just a plain JavaScript class. If you call a class as a plain function you would call the component's constructor to create a Component instance, not a ReactElement:

    +
    new MyComponent(); // Component, not ReactElement
    +
    +

    React 0.11 gave you a factory function for free when you called React.createClass. This wrapped your internal class and then returned a ReactElement factory function for you.

    +
    var MyComponent = React.createFactory(
    +  class {
    +    render() {
    +      ...
    +    }
    +  }
    +);
    +
    +

    In future versions of React, we want to be able to support pure classes without any special React dependencies. To prepare for that we're deprecating the auto-generated factory.

    + +

    This is the biggest change to 0.12. Don't worry though. This functionality continues to work the same for this release, it just warns you if you're using a deprecated API. That way you can upgrade piece-by-piece instead of everything at once.

    +

    Upgrading to 0.12 #

    React With JSX #

    +

    If you use the React specific JSX transform, the upgrade path is simple. Just make sure you have React in scope.

    +
    // If you use node/browserify modules make sure
    +// that you require React into scope.
    +var React = require('react');
    +
    +

    React's JSX will create the ReactElement for you. You can continue to use JSX with regular classes:

    +
    var MyComponent = React.createClass(...);
    +
    +var MyOtherComponent = React.createClass({
    +  render: function() {
    +    return <MyComponent prop="value" />;
    +  }
    +});
    +
    +

    NOTE: React's JSX will not call arbitrary functions in future releases. This restriction is introduced so that it's easier to reason about the output of JSX by both the reader of your code and optimizing compilers. The JSX syntax is not tied to React. Just the transpiler. You can still use the JSX spec with a different transpiler for custom purposes.

    +

    React Without JSX #

    +

    If you don't use JSX and just call components as functions, you will need to explicitly create a factory before calling it:

    +
    var MyComponentClass = React.createClass(...);
    +
    +var MyComponent = React.createFactory(MyComponentClass); // New step
    +
    +var MyOtherComponent = React.createClass({
    +  render: function() {
    +    return MyComponent({ prop: 'value' });
    +  }
    +});
    +
    +

    If you're using a module system, the recommended solution is to export the class and create the factory on the requiring side.

    + +

    Your class creation is done just like before:

    +
    // MyComponent.js
    +var React = require('react');
    +var MyComponent = React.createClass(...);
    +module.exports = MyComponent;
    +
    +

    The other side uses React.createFactory after requireing the component class:

    +
    // MyOtherComponent.js
    +var React = require('react');
    +// All you have to do to upgrade is wrap your requires like this:
    +var MyComponent = React.createFactory(require('MyComponent'));
    +
    +var MyOtherComponent = React.createClass({
    +  render: function() {
    +    return MyComponent({ prop: 'value' });
    +  }
    +});
    +
    +module.exports = MyOtherComponent;
    +
    +

    You ONLY have to do this for custom classes. React still has built-in factories for common HTML elements.

    +
    var MyDOMComponent = React.createClass({
    +  render: function() {
    +    return React.DOM.div({ className: 'foo' }); // still ok
    +  }
    +});
    +
    +

    We realize that this is noisy. At least it's on the top of the file (out of sight, out of mind). This a tradeoff we had to make to get the other benefits that this model unlocks.

    +

    Anti-Pattern: Exporting Factories #

    +

    If you have an isolated project that only you use, then you could create a helper that creates both the class and the factory at once:

    +
    // Anti-pattern - Please, don't use
    +function createClass(spec) {
    +  return React.createFactory(React.createClass(spec));
    +}
    +
    +

    This makes your components incompatible with jest testing, consumers using JSX, third-party languages that implement their own optimized ReactElement creation, etc.

    + +

    It also encourages you to put more logic into these helper functions. Something that another language, a compiler or a reader of your code couldn't reason about.

    + +

    To fit into the React ecosystem we recommend that you always export pure classes from your shared modules and let the consumer decide the best strategy for generating ReactElements.

    +

    Third-party Languages #

    +

    The signature of a ReactElement is something like this:

    +
    {
    +  type : string | class,
    +  props : { children, className, etc. },
    +  key : string | boolean | number | null,
    +  ref : string | null
    +}
    +
    +

    Languages with static typing that don't need validation (e.g. Om in ClojureScript), and production level compilers will be able to generate these objects inline instead of going through the validation step. This optimization will allow significant performance improvements in React.

    +

    Your Thoughts and Ideas #

    +

    We'd love to hear your feedback on this API and your preferred style. A plausible alternative could be to directly inline objects instead of creating factory functions:

    +
    // MyOtherComponent.js
    +var React = require('react');
    +var MyComponent = require('MyComponent');
    +
    +var MyOtherComponent = React.createClass({
    +  render: function() {
    +    return { type: MyComponent, props: { prop: 'value' } };
    +  }
    +});
    +
    +module.exports = MyOtherComponent;
    +
    +

    This moves the noise down into the render method though. It also doesn't provide a hook for dynamic validation/type checking so you'll need some other way to verify that it's safe.

    + +

    NOTE: This won't work in this version of React because it's conflicting with other legacy APIs that we're deprecating. (We temporarily add a element._isReactElement = true marker on the object.)

    +

    The Next Step: ES6 Classes #

    +

    After 0.12 we'll begin work on moving to ES6 classes. We will still support React.createClass as a backwards compatible API. If you use an ES6 transpiler you will be able to declare your components like this:

    +
    export class MyComponent {
    +  render() {
    +    ...
    +  }
    +};
    +
    +

    This upcoming release is a stepping stone to make it as easy as this. Thanks for your support.

    + +
    +
    +

    Testing Flux Applications

    September 24, 2014 by Bill Fisher

    @@ -528,91 +682,6 @@ Minified build for production: -

    Community Round-up #21

    -

    August 3, 2014 by Lou Husson

    -
    -
    -

    React Router #

    -

    Ryan Florence and Michael Jackson ported Ember's router to React in a project called React Router. This is a very good example of both communities working together to make the web better!

    -
    React.renderComponent((
    -  <Routes>
    -    <Route handler={App}>
    -      <Route name="about" handler={About}/>
    -      <Route name="users" handler={Users}>
    -        <Route name="user" path="/user/:userId" handler={User}/>
    -      </Route>
    -    </Route>
    -  </Routes>
    -), document.body);
    -

    Going Big with React #

    -

    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"

    - -

    - - -

    What is React? #

    -

    Craig McKeachie author of Javascript Framework Guide wrote an excellent news named "What is React.js? Another Template Library?

    - -
      -
    • Is React a template library?
    • -
    • Is React similar to Web Components?
    • -
    • Are the Virtual DOM and Shadow DOM the same?
    • -
    • Can React be used with other JavaScript MVC frameworks?
    • -
    • Who uses React?
    • -
    • Is React a premature optimization if you aren’t Facebook or Instagram?
    • -
    • Can I work with designers?
    • -
    • Will React hurt my search engine optimizations (SEO)?
    • -
    • Is React a framework for building applications or a library with one feature?
    • -
    • Are components a better way to build an application?
    • -
    • Can I build something complex with React?
    • -
    -

    Referencing Dynamic Children #

    -

    While Matt Zabriskie was working on react-tabs he discovered how to use React.Children.map and React.addons.cloneWithProps in order to reference dynamic children.

    -
    var App = React.createClass({
    -  render: function () {
    -    var children = React.Children.map(this.props.children, function(child, index) {
    -      return React.addons.cloneWithProps(child, {
    -        ref: 'child-' + index
    -      });
    -    });
    -    return <div>{children}</div>;
    -  }
    -});
    -

    JSX with Sweet.js using Readtables #

    -

    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.

    - -

    -

    First Look: Getting Started with React #

    -

    Kirill Buga wrote an article on Modern Web explaining how React is different from traditional MVC used by most JavaScript applications

    - -
    -

    React Draggable #

    -

    Matt Zabriskie released a project to make your react components draggable.

    - -

    -

    HTML Parser2 React #

    -

    Jason Brown adapted htmlparser2 to React: htmlparser2-react. That allows you to convert raw HTML to the virtual DOM. -This is not the intended way to use React but can be useful as last resort if you have an existing piece of HTML.

    -
    var html = '<div data-id="1" class="hey this is a class" ' +
    -  'style="width:100%;height: 100%;"><article id="this-article">' +
    -  '<p>hey this is a paragraph</p><div><ul><li>1</li><li>2</li>' +
    -  '<li>3</li></ul></div></article></div>';
    -var parsedComponent = reactParser(html, React);
    -

    Building UIs with React #

    -

    If you haven't yet tried out React, Jacob Rios did a Hangout where he covers the most important aspects and thankfully he recorded it!

    - - -

    Random Tweets #

    - - - - -
    -
    - @@ -90,6 +90,91 @@
    +
    +

    Community Round-up #21

    +

    August 3, 2014 by Lou Husson

    +
    +
    +

    React Router #

    +

    Ryan Florence and Michael Jackson ported Ember's router to React in a project called React Router. This is a very good example of both communities working together to make the web better!

    +
    React.renderComponent((
    +  <Routes>
    +    <Route handler={App}>
    +      <Route name="about" handler={About}/>
    +      <Route name="users" handler={Users}>
    +        <Route name="user" path="/user/:userId" handler={User}/>
    +      </Route>
    +    </Route>
    +  </Routes>
    +), document.body);
    +

    Going Big with React #

    +

    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"

    + +

    + + +

    What is React? #

    +

    Craig McKeachie author of Javascript Framework Guide wrote an excellent news named "What is React.js? Another Template Library?

    + +
      +
    • Is React a template library?
    • +
    • Is React similar to Web Components?
    • +
    • Are the Virtual DOM and Shadow DOM the same?
    • +
    • Can React be used with other JavaScript MVC frameworks?
    • +
    • Who uses React?
    • +
    • Is React a premature optimization if you aren’t Facebook or Instagram?
    • +
    • Can I work with designers?
    • +
    • Will React hurt my search engine optimizations (SEO)?
    • +
    • Is React a framework for building applications or a library with one feature?
    • +
    • Are components a better way to build an application?
    • +
    • Can I build something complex with React?
    • +
    +

    Referencing Dynamic Children #

    +

    While Matt Zabriskie was working on react-tabs he discovered how to use React.Children.map and React.addons.cloneWithProps in order to reference dynamic children.

    +
    var App = React.createClass({
    +  render: function () {
    +    var children = React.Children.map(this.props.children, function(child, index) {
    +      return React.addons.cloneWithProps(child, {
    +        ref: 'child-' + index
    +      });
    +    });
    +    return <div>{children}</div>;
    +  }
    +});
    +

    JSX with Sweet.js using Readtables #

    +

    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.

    + +

    +

    First Look: Getting Started with React #

    +

    Kirill Buga wrote an article on Modern Web explaining how React is different from traditional MVC used by most JavaScript applications

    + +
    +

    React Draggable #

    +

    Matt Zabriskie released a project to make your react components draggable.

    + +

    +

    HTML Parser2 React #

    +

    Jason Brown adapted htmlparser2 to React: htmlparser2-react. That allows you to convert raw HTML to the virtual DOM. +This is not the intended way to use React but can be useful as last resort if you have an existing piece of HTML.

    +
    var html = '<div data-id="1" class="hey this is a class" ' +
    +  'style="width:100%;height: 100%;"><article id="this-article">' +
    +  '<p>hey this is a paragraph</p><div><ul><li>1</li><li>2</li>' +
    +  '<li>3</li></ul></div></article></div>';
    +var parsedComponent = reactParser(html, React);
    +

    Building UIs with React #

    +

    If you haven't yet tried out React, Jacob Rios did a Hangout where he covers the most important aspects and thankfully he recorded it!

    + + +

    Random Tweets #

    + + + + +
    +
    +

    Flux: Actions and the Dispatcher

    July 30, 2014 by Bill Fisher

    @@ -391,141 +476,6 @@ Minified build for production: React Tools Module # -
      -
    • Improved readme with usage and API information
    • -
    • Improved ES6 transforms available with --harmony option
    • -
    • Added --source-map-inline option to the jsx executable
    • -
    • New transformWithDetails API which gives access to the raw sourcemap data
    • -
    - -
    -
    - -
    -

    React v0.11 RC

    -

    July 13, 2014 by Paul O’Shannessy

    -
    -
    -

    It's that time again… we're just about ready to ship a new React release! v0.11 includes a wide array of bug fixes and features. We highlighted some of the most important changes below, along with the full changelog.

    - -

    The release candidate is available for download from the CDN:

    - - - -

    We've also published version 0.11.0-rc1 of the react and react-tools packages on npm and the react package on bower.

    - -

    Please try these builds out and file an issue on GitHub if you see anything awry.

    -

    getDefaultProps #

    -

    Starting in React 0.11, getDefaultProps() is called only once when React.createClass() is called, instead of each time a component is rendered. This means that getDefaultProps() can no longer vary its return value based on this.props and any objects will be shared across all instances. This change improves performance and will make it possible in the future to do PropTypes checks earlier in the rendering process, allowing us to give better error messages.

    -

    Rendering to null #

    -

    Since React's release, people have been using work arounds to "render nothing". Usually this means returning an empty <div/> or <span/>. Some people even got clever and started returning <noscript/> to avoid extraneous DOM nodes. We finally provided a "blessed" solution that allows developers to write meaningful code. Returning null is an explicit indication to React that you do not want anything rendered. Behind the scenes we make this work with a <noscript> element, though in the future we hope to not put anything in the document. In the mean time, <noscript> elements do not affect layout in any way, so you can feel safe using null today!

    -
    // Before
    -render: function() {
    -  if (!this.state.visible) {
    -    return <span/>;
    -  }
    -  // ...
    -}
    -
    -// After
    -render: function() {
    -  if (!this.state.visible) {
    -    return null;
    -  }
    -  // ...
    -}
    -

    JSX Namespacing #

    -

    Another feature request we've been hearing for a long time is the ability to have namespaces in JSX. Given that JSX is just JavaScript, we didn't want to use XML namespacing. Instead we opted for a standard JS approach: object property access. Instead of assigning variables to access components stored in an object (such as a component library), you can now use the component directly as <Namespace.Component/>.

    -
    // Before
    -var UI = require('UI');
    -var UILayout = UI.Layout;
    -var UIButton = UI.Button;
    -var UILabel = UI.Label;
    -
    -render: function() {
    -  return <UILayout><UIButton /><UILabel>text</UILabel></UILayout>;
    -}
    -
    -// After
    -var UI = require('UI');
    -
    -render: function() {
    -  return <UI.Layout><UI.Button /><UI.Label>text</UI.Label></UI.Layout>;
    -}
    -

    Improved keyboard event normalization #

    -

    Keyboard events now contain a normalized e.key value according to the DOM Level 3 Events spec, allowing you to write simpler key handling code that works in all browsers, such as:

    -
    handleKeyDown: function(e) {
    -  if (e.key === 'Enter') {
    -    // Handle enter key
    -  } else if (e.key === ' ') {
    -    // Handle spacebar
    -  } else if (e.key === 'ArrowLeft') {
    -    // Handle left arrow
    -  }
    -},
    -
    -

    Keyboard and mouse events also now include a normalized e.getModifierState() that works consistently across browsers.

    -

    Changelog #

    React Core #

    Breaking Changes #

    -
      -
    • getDefaultProps() is now called once per class and shared across all instances
    • -
    -

    New Features #

    -
      -
    • Rendering to null
    • -
    • Keyboard events include normalized e.key and e.getModifierState() properties
    • -
    • New normalized onBeforeInput event
    • -
    • React.Children.count has been added as a helper for counting the number of children
    • -
    -

    Bug Fixes #

    -
      -
    • Re-renders are batched in more cases
    • -
    • Events: e.view properly normalized
    • -
    • Added Support for more HTML attributes (coords, crossOrigin, download, hrefLang, mediaGroup, muted, scrolling, shape, srcSet, start, useMap)
    • -
    • Improved SVG support - -
        -
      • Changing className on a mounted SVG component now works correctly
      • -
      • Added support for elements mask and tspan
      • -
      • Added support for attributes dx, dy, fillOpacity, fontFamily, fontSize, markerEnd, markerMid, markerStart, opacity, patternContentUnits, patternUnits, preserveAspectRatio, strokeDasharray, strokeOpacity
      • -
    • -
    • CSS property names with vendor prefixes (Webkit, ms, Moz, O) are now handled properly
    • -
    • Duplicate keys no longer cause a hard error; now a warning is logged (and only one of the children with the same key is shown)
    • -
    • img event listeners are now unbound properly, preventing the error "Two valid but unequal nodes with the same data-reactid"
    • -
    • Added explicit warning when missing polyfills
    • -
    -

    React With Addons #

    -
      -
    • PureRenderMixin
    • -
    • Perf: a new set of tools to help with performance analysis
    • -
    • Update: New $apply command to transform values
    • -
    • TransitionGroup bug fixes with null elements, Android
    • -
    -

    React NPM Module #

    -
      -
    • Now includes the pre-built packages under dist/.
    • -
    • envify is properly listed as a dependency instead of a peer dependency
    • -
    -

    JSX #

    -
    @@ -90,6 +90,141 @@
    +
    +

    React v0.11 RC

    +

    July 13, 2014 by Paul O’Shannessy

    +
    +
    +

    It's that time again… we're just about ready to ship a new React release! v0.11 includes a wide array of bug fixes and features. We highlighted some of the most important changes below, along with the full changelog.

    + +

    The release candidate is available for download from the CDN:

    + + + +

    We've also published version 0.11.0-rc1 of the react and react-tools packages on npm and the react package on bower.

    + +

    Please try these builds out and file an issue on GitHub if you see anything awry.

    +

    getDefaultProps #

    +

    Starting in React 0.11, getDefaultProps() is called only once when React.createClass() is called, instead of each time a component is rendered. This means that getDefaultProps() can no longer vary its return value based on this.props and any objects will be shared across all instances. This change improves performance and will make it possible in the future to do PropTypes checks earlier in the rendering process, allowing us to give better error messages.

    +

    Rendering to null #

    +

    Since React's release, people have been using work arounds to "render nothing". Usually this means returning an empty <div/> or <span/>. Some people even got clever and started returning <noscript/> to avoid extraneous DOM nodes. We finally provided a "blessed" solution that allows developers to write meaningful code. Returning null is an explicit indication to React that you do not want anything rendered. Behind the scenes we make this work with a <noscript> element, though in the future we hope to not put anything in the document. In the mean time, <noscript> elements do not affect layout in any way, so you can feel safe using null today!

    +
    // Before
    +render: function() {
    +  if (!this.state.visible) {
    +    return <span/>;
    +  }
    +  // ...
    +}
    +
    +// After
    +render: function() {
    +  if (!this.state.visible) {
    +    return null;
    +  }
    +  // ...
    +}
    +

    JSX Namespacing #

    +

    Another feature request we've been hearing for a long time is the ability to have namespaces in JSX. Given that JSX is just JavaScript, we didn't want to use XML namespacing. Instead we opted for a standard JS approach: object property access. Instead of assigning variables to access components stored in an object (such as a component library), you can now use the component directly as <Namespace.Component/>.

    +
    // Before
    +var UI = require('UI');
    +var UILayout = UI.Layout;
    +var UIButton = UI.Button;
    +var UILabel = UI.Label;
    +
    +render: function() {
    +  return <UILayout><UIButton /><UILabel>text</UILabel></UILayout>;
    +}
    +
    +// After
    +var UI = require('UI');
    +
    +render: function() {
    +  return <UI.Layout><UI.Button /><UI.Label>text</UI.Label></UI.Layout>;
    +}
    +

    Improved keyboard event normalization #

    +

    Keyboard events now contain a normalized e.key value according to the DOM Level 3 Events spec, allowing you to write simpler key handling code that works in all browsers, such as:

    +
    handleKeyDown: function(e) {
    +  if (e.key === 'Enter') {
    +    // Handle enter key
    +  } else if (e.key === ' ') {
    +    // Handle spacebar
    +  } else if (e.key === 'ArrowLeft') {
    +    // Handle left arrow
    +  }
    +},
    +
    +

    Keyboard and mouse events also now include a normalized e.getModifierState() that works consistently across browsers.

    +

    Changelog #

    React Core #

    Breaking Changes #

    +
      +
    • getDefaultProps() is now called once per class and shared across all instances
    • +
    +

    New Features #

    +
      +
    • Rendering to null
    • +
    • Keyboard events include normalized e.key and e.getModifierState() properties
    • +
    • New normalized onBeforeInput event
    • +
    • React.Children.count has been added as a helper for counting the number of children
    • +
    +

    Bug Fixes #

    +
      +
    • Re-renders are batched in more cases
    • +
    • Events: e.view properly normalized
    • +
    • Added Support for more HTML attributes (coords, crossOrigin, download, hrefLang, mediaGroup, muted, scrolling, shape, srcSet, start, useMap)
    • +
    • Improved SVG support + +
        +
      • Changing className on a mounted SVG component now works correctly
      • +
      • Added support for elements mask and tspan
      • +
      • Added support for attributes dx, dy, fillOpacity, fontFamily, fontSize, markerEnd, markerMid, markerStart, opacity, patternContentUnits, patternUnits, preserveAspectRatio, strokeDasharray, strokeOpacity
      • +
    • +
    • CSS property names with vendor prefixes (Webkit, ms, Moz, O) are now handled properly
    • +
    • Duplicate keys no longer cause a hard error; now a warning is logged (and only one of the children with the same key is shown)
    • +
    • img event listeners are now unbound properly, preventing the error "Two valid but unequal nodes with the same data-reactid"
    • +
    • Added explicit warning when missing polyfills
    • +
    +

    React With Addons #

    +
      +
    • PureRenderMixin
    • +
    • Perf: a new set of tools to help with performance analysis
    • +
    • Update: New $apply command to transform values
    • +
    • TransitionGroup bug fixes with null elements, Android
    • +
    +

    React NPM Module #

    +
      +
    • Now includes the pre-built packages under dist/.
    • +
    • envify is properly listed as a dependency instead of a peer dependency
    • +
    +

    JSX #

    +
      +
    • Added support for namespaces, eg <Components.Checkbox />
    • +
    • JSXTransformer + +
        +
      • Enable the same harmony features available in the command line with <script type="text/jsx;harmony=true">
      • +
      • Scripts are downloaded in parallel for more speed. They are still executed in order (as you would expect with normal script tags)
      • +
      • Fixed a bug preventing sourcemaps from working in Firefox
      • +
    • +
    +

    React Tools Module #

    +
      +
    • Improved readme with usage and API information
    • +
    • Improved ES6 transforms available with --harmony option
    • +
    • Added --source-map-inline option to the jsx executable
    • +
    • New transformWithDetails API which gives access to the raw sourcemap data
    • +
    + +
    +
    +

    Community Round-up #19

    June 27, 2014 by Cheng Lou

    @@ -220,43 +355,6 @@ report bugs on GitHub.

    -
    -

    The Road to 1.0

    -

    March 28, 2014 by Paul O'Shannessy

    -
    -
    -

    When we launched React last spring, we purposefully decided not to call it 1.0. It was production ready, but we had plans to evolve APIs and behavior as we saw how people were using React, both internally and externally. We've learned a lot over the past 9 months and we've thought a lot about what 1.0 will mean for React. A couple weeks ago, I outlined several projects that we have planned to take us to 1.0 and beyond. Today I'm writing a bit more about them to give our users a better insight into our plans.

    - -

    Our primary goal with 1.0 is to clarify our messaging and converge on an API that is aligned with our goals. In order to do that, we want to clean up bad patterns we've seen in use and really help enable developers write good code.

    -

    Descriptors #

    -

    The first part of this is what we're calling "descriptors". I talked about this briefly in our v0.10 announcements. The goal here is to separate our virtual DOM representation from our use of it. Simply, this means the return value of a component (e.g. React.DOM.div(), MyComponent()) will be a simple object containing the information React needs to render. Currently the object returned is actually linked to React's internal representation of the component and even directly to the DOM element. This has enabled some bad patterns that are quite contrary to how we want people to use React. That's our failure.

    - -

    We added some warnings in v0.9 to start migrating some of these bad patterns. With v0.10 we'll catch more. You'll see more on this soon as we expect to ship v0.11 with descriptors.

    -

    API Cleanup #

    -

    This is really connected to everything. We want to keep the API as simple as possible and help developers fall into the pit of success. Enabling bad patterns with bad APIs is not success.

    -

    ES6 #

    -

    Before we even launched React publicly, members of the team were talking about how we could leverage ES6, namely classes, to improve the experience of creating React components. Calling React.createClass(...) isn't great. We don't quite have the right answer here yet, but we're close. We want to make sure we make this as simple as possible. It could look like this:

    -
    class MyComponent extends React.Component {
    -  render() {
    -    ...
    -  }
    -}
    -
    -

    There are other features of ES6 we're already using in core. I'm sure we'll see more of that. The jsx executable we ship with react-tools already supports transforming many parts of ES6 into code that will run on older browsers.

    -

    Context #

    -

    While we haven't documented context, it exists in some form in React already. It exists as a way to pass values through a tree without having to use props at every single point. We've seen this need crop up time and time again, so we want to make this as easy as possible. It's use has performance tradeoffs, and there are known weaknesses in our implementation, so we want to make sure this is a solid feature.

    -

    Addons #

    -

    As you may know, we ship a separate build of React with some extra features we called "addons". While this has served us fine, it's not great for our users. It's made testing harder, but also results in more cache misses for people using a CDN. The problem we face is that many of these "addons" need access to parts of React that we don't expose publicly. Our goal is to ship each addon on its own and let each hook into React as needed. This would also allow others to write and distribute "addons".

    -

    Browser Support #

    -

    As much as we'd all like to stop supporting older browsers, it's not always possible. Facebook still supports IE8. While React won't support IE8 forever, our goal is to have 1.0 support IE8. Hopefully we can continue to abstract some of these rough parts.

    -

    Animations #

    -

    Finding a way to define animations in a declarative way is a hard problem. We've been exploring the space for a long time. We've introduced some half-measures to alleviate some use cases, but the larger problem remains. While we'd like to make this a part of 1.0, realistically we don't think we'll have a good solution in place.

    -

    Miscellaneous #

    -

    There are several other things I listed on our projects page that we're tracking. Some of them are internals and have no obvious outward effect (improve tests, repo separation, updated test runner). I encourage you to take a look.

    - -
    -
    - @@ -90,6 +90,43 @@
    +
    +

    The Road to 1.0

    +

    March 28, 2014 by Paul O'Shannessy

    +
    +
    +

    When we launched React last spring, we purposefully decided not to call it 1.0. It was production ready, but we had plans to evolve APIs and behavior as we saw how people were using React, both internally and externally. We've learned a lot over the past 9 months and we've thought a lot about what 1.0 will mean for React. A couple weeks ago, I outlined several projects that we have planned to take us to 1.0 and beyond. Today I'm writing a bit more about them to give our users a better insight into our plans.

    + +

    Our primary goal with 1.0 is to clarify our messaging and converge on an API that is aligned with our goals. In order to do that, we want to clean up bad patterns we've seen in use and really help enable developers write good code.

    +

    Descriptors #

    +

    The first part of this is what we're calling "descriptors". I talked about this briefly in our v0.10 announcements. The goal here is to separate our virtual DOM representation from our use of it. Simply, this means the return value of a component (e.g. React.DOM.div(), MyComponent()) will be a simple object containing the information React needs to render. Currently the object returned is actually linked to React's internal representation of the component and even directly to the DOM element. This has enabled some bad patterns that are quite contrary to how we want people to use React. That's our failure.

    + +

    We added some warnings in v0.9 to start migrating some of these bad patterns. With v0.10 we'll catch more. You'll see more on this soon as we expect to ship v0.11 with descriptors.

    +

    API Cleanup #

    +

    This is really connected to everything. We want to keep the API as simple as possible and help developers fall into the pit of success. Enabling bad patterns with bad APIs is not success.

    +

    ES6 #

    +

    Before we even launched React publicly, members of the team were talking about how we could leverage ES6, namely classes, to improve the experience of creating React components. Calling React.createClass(...) isn't great. We don't quite have the right answer here yet, but we're close. We want to make sure we make this as simple as possible. It could look like this:

    +
    class MyComponent extends React.Component {
    +  render() {
    +    ...
    +  }
    +}
    +
    +

    There are other features of ES6 we're already using in core. I'm sure we'll see more of that. The jsx executable we ship with react-tools already supports transforming many parts of ES6 into code that will run on older browsers.

    +

    Context #

    +

    While we haven't documented context, it exists in some form in React already. It exists as a way to pass values through a tree without having to use props at every single point. We've seen this need crop up time and time again, so we want to make this as easy as possible. It's use has performance tradeoffs, and there are known weaknesses in our implementation, so we want to make sure this is a solid feature.

    +

    Addons #

    +

    As you may know, we ship a separate build of React with some extra features we called "addons". While this has served us fine, it's not great for our users. It's made testing harder, but also results in more cache misses for people using a CDN. The problem we face is that many of these "addons" need access to parts of React that we don't expose publicly. Our goal is to ship each addon on its own and let each hook into React as needed. This would also allow others to write and distribute "addons".

    +

    Browser Support #

    +

    As much as we'd all like to stop supporting older browsers, it's not always possible. Facebook still supports IE8. While React won't support IE8 forever, our goal is to have 1.0 support IE8. Hopefully we can continue to abstract some of these rough parts.

    +

    Animations #

    +

    Finding a way to define animations in a declarative way is a hard problem. We've been exploring the space for a long time. We've introduced some half-measures to alleviate some use cases, but the larger problem remains. While we'd like to make this a part of 1.0, realistically we don't think we'll have a good solution in place.

    +

    Miscellaneous #

    +

    There are several other things I listed on our projects page that we're tracking. Some of them are internals and have no obvious outward effect (improve tests, repo separation, updated test runner). I encourage you to take a look.

    + +
    +
    +

    React v0.10

    March 21, 2014 by Paul O’Shannessy

    @@ -375,142 +412,6 @@ Thomas Boyt (@thomasaboyt) wrote <
    -
    -

    React v0.9

    -

    February 20, 2014 by Ben Alpert

    -
    -
    -

    I'm excited to announce that today we're releasing React v0.9, which incorporates many bug fixes and several new features since the last release. This release contains almost four months of work, including over 800 commits from over 70 committers!

    - -

    Thanks to everyone who tested the release candidate; we were able to find and fix an error in the event handling code, we upgraded envify to make running browserify on React faster, and we added support for five new attributes.

    - -

    As always, the release is available for download from the CDN:

    - - - -

    We've also published version 0.9.0 of the react and react-tools packages on npm and the react package on bower.

    -

    What’s New? #

    -

    This version includes better support for normalizing event properties across all supported browsers so that you need to worry even less about cross-browser differences. We've also made many improvements to error messages and have refactored the core to never rethrow errors, so stack traces are more accurate and Chrome's purple break-on-error stop sign now works properly.

    - -

    We've also added to the add-ons build React.addons.TestUtils, a set of new utilities to help you write unit tests for React components. You can now simulate events on your components, and several helpers are provided to help make assertions about the rendered DOM tree.

    - -

    We've also made several other improvements and a few breaking changes; the full changelog is provided below.

    -

    JSX Whitespace #

    -

    In addition to the changes to React core listed below, we've made a small change to the way JSX interprets whitespace to make things more consistent. With this release, space between two components on the same line will be preserved, while a newline separating a text node from a tag will be eliminated in the output. Consider the code:

    -
    <div>
    -  Monkeys:
    -  {listOfMonkeys} {submitButton}
    -</div>
    -
    -

    In v0.8 and below, it was transformed to the following:

    -
    React.DOM.div(null,
    -  " Monkeys: ",
    -  listOfMonkeys, submitButton
    -)
    -
    -

    In v0.9, it will be transformed to this JS instead:

    -
    React.DOM.div(null,
    -  "Monkeys:",
    -  listOfMonkeys, " ", submitButton
    -)
    -
    -

    We believe this new behavior is more helpful and elimates cases where unwanted whitespace was previously added.

    - -

    In cases where you want to preserve the space adjacent to a newline, you can write {'Monkeys: '} or Monkeys:{' '} in your JSX source. We've included a script to do an automated codemod of your JSX source tree that preserves the old whitespace behavior by adding and removing spaces appropriately. You can install jsx_whitespace_transformer from npm and run it over your source tree to modify files in place. The transformed JSX files will preserve your code's existing whitespace behavior.

    -

    Changelog #

    React Core #

    Breaking Changes #

    -
      -
    • The lifecycle methods componentDidMount and componentDidUpdate no longer receive the root node as a parameter; use this.getDOMNode() instead
    • -
    • Whenever a prop is equal to undefined, the default value returned by getDefaultProps will now be used instead
    • -
    • React.unmountAndReleaseReactRootNode was previously deprecated and has now been removed
    • -
    • React.renderComponentToString is now synchronous and returns the generated HTML string
    • -
    • Full-page rendering (that is, rendering the <html> tag using React) is now supported only when starting with server-rendered markup
    • -
    • On mouse wheel events, deltaY is no longer negated
    • -
    • When prop types validation fails, a warning is logged instead of an error thrown (with the production build of React, type checks are now skipped for performance)
    • -
    • On input, select, and textarea elements, .getValue() is no longer supported; use .getDOMNode().value instead
    • -
    • this.context on components is now reserved for internal use by React
    • -
    -

    New Features #

    -
      -
    • React now never rethrows errors, so stack traces are more accurate and Chrome's purple break-on-error stop sign now works properly
    • -
    • Added support for SVG tags defs, linearGradient, polygon, radialGradient, stop
    • -
    • Added support for more attributes: - -
        -
      • crossOrigin for CORS requests
      • -
      • download and hrefLang for <a> tags
      • -
      • mediaGroup and muted for <audio> and <video> tags
      • -
      • noValidate and formNoValidate for forms
      • -
      • property for Open Graph <meta> tags
      • -
      • sandbox, seamless, and srcDoc for <iframe> tags
      • -
      • scope for screen readers
      • -
      • span for <colgroup> tags
      • -
    • -
    • Added support for defining propTypes in mixins
    • -
    • Added any, arrayOf, component, oneOfType, renderable, shape to React.PropTypes
    • -
    • Added support for statics on component spec for static component methods
    • -
    • On all events, .currentTarget is now properly set
    • -
    • On keyboard events, .key is now polyfilled in all browsers for special (non-printable) keys
    • -
    • On clipboard events, .clipboardData is now polyfilled in IE
    • -
    • On drag events, .dataTransfer is now present
    • -
    • Added support for onMouseOver and onMouseOut in addition to the existing onMouseEnter and onMouseLeave events
    • -
    • Added support for onLoad and onError on <img> elements
    • -
    • Added support for onReset on <form> elements
    • -
    • The autoFocus attribute is now polyfilled consistently on input, select, and textarea
    • -
    -

    Bug Fixes #

    -
      -
    • React no longer adds an __owner__ property to each component's props object; passed-in props are now never mutated
    • -
    • When nesting top-level components (e.g., calling React.renderComponent within componentDidMount), events now properly bubble to the parent component
    • -
    • Fixed a case where nesting top-level components would throw an error when updating
    • -
    • Passing an invalid or misspelled propTypes type now throws an error
    • -
    • On mouse enter/leave events, .target, .relatedTarget, and .type are now set properly
    • -
    • On composition events, .data is now properly normalized in IE9 and IE10
    • -
    • CSS property values no longer have px appended for the unitless properties columnCount, flex, flexGrow, flexShrink, lineClamp, order, widows
    • -
    • Fixed a memory leak when unmounting children with a componentWillUnmount handler
    • -
    • Fixed a memory leak when renderComponentToString would store event handlers
    • -
    • Fixed an error that could be thrown when removing form elements during a click handler
    • -
    • Boolean attributes such as disabled are rendered without a value (previously disabled="true", now simply disabled)
    • -
    • key values containing . are now supported
    • -
    • Shortened data-reactid values for performance
    • -
    • Components now always remount when the key property changes
    • -
    • Event handlers are attached to document only when necessary, improving performance in some cases
    • -
    • Events no longer use .returnValue in modern browsers, eliminating a warning in Chrome
    • -
    • scrollLeft and scrollTop are no longer accessed on document.body, eliminating a warning in Chrome
    • -
    • General performance fixes, memory optimizations, improvements to warnings and error messages
    • -
    -

    React with Addons #

    -
      -
    • React.addons.TestUtils was added to help write unit tests
    • -
    • React.addons.TransitionGroup was renamed to React.addons.CSSTransitionGroup
    • -
    • React.addons.TransitionGroup was added as a more general animation wrapper
    • -
    • React.addons.cloneWithProps was added for cloning components and modifying their props
    • -
    • Bug fix for adding back nodes during an exit transition for CSSTransitionGroup
    • -
    • Bug fix for changing transitionLeave in CSSTransitionGroup
    • -
    • Performance optimizations for CSSTransitionGroup
    • -
    • On checkbox <input> elements, checkedLink is now supported for two-way binding
    • -
    -

    JSX Compiler and react-tools Package #

    -
      -
    • Whitespace normalization has changed; now space between two tags on the same line will be preserved, while newlines between two tags will be removed
    • -
    • The react-tools npm package no longer includes the React core libraries; use the react package instead.
    • -
    • displayName is now added in more cases, improving error messages and names in the React Dev Tools
    • -
    • Fixed an issue where an invalid token error was thrown after a JSX closing tag
    • -
    • JSXTransformer now uses source maps automatically in modern browsers
    • -
    • JSXTransformer error messages now include the filename and problematic line contents when a file fails to parse
    • -
    - -
    -
    - @@ -90,6 +90,142 @@
    +
    +

    React v0.9

    +

    February 20, 2014 by Ben Alpert

    +
    +
    +

    I'm excited to announce that today we're releasing React v0.9, which incorporates many bug fixes and several new features since the last release. This release contains almost four months of work, including over 800 commits from over 70 committers!

    + +

    Thanks to everyone who tested the release candidate; we were able to find and fix an error in the event handling code, we upgraded envify to make running browserify on React faster, and we added support for five new attributes.

    + +

    As always, the release is available for download from the CDN:

    + + + +

    We've also published version 0.9.0 of the react and react-tools packages on npm and the react package on bower.

    +

    What’s New? #

    +

    This version includes better support for normalizing event properties across all supported browsers so that you need to worry even less about cross-browser differences. We've also made many improvements to error messages and have refactored the core to never rethrow errors, so stack traces are more accurate and Chrome's purple break-on-error stop sign now works properly.

    + +

    We've also added to the add-ons build React.addons.TestUtils, a set of new utilities to help you write unit tests for React components. You can now simulate events on your components, and several helpers are provided to help make assertions about the rendered DOM tree.

    + +

    We've also made several other improvements and a few breaking changes; the full changelog is provided below.

    +

    JSX Whitespace #

    +

    In addition to the changes to React core listed below, we've made a small change to the way JSX interprets whitespace to make things more consistent. With this release, space between two components on the same line will be preserved, while a newline separating a text node from a tag will be eliminated in the output. Consider the code:

    +
    <div>
    +  Monkeys:
    +  {listOfMonkeys} {submitButton}
    +</div>
    +
    +

    In v0.8 and below, it was transformed to the following:

    +
    React.DOM.div(null,
    +  " Monkeys: ",
    +  listOfMonkeys, submitButton
    +)
    +
    +

    In v0.9, it will be transformed to this JS instead:

    +
    React.DOM.div(null,
    +  "Monkeys:",
    +  listOfMonkeys, " ", submitButton
    +)
    +
    +

    We believe this new behavior is more helpful and elimates cases where unwanted whitespace was previously added.

    + +

    In cases where you want to preserve the space adjacent to a newline, you can write {'Monkeys: '} or Monkeys:{' '} in your JSX source. We've included a script to do an automated codemod of your JSX source tree that preserves the old whitespace behavior by adding and removing spaces appropriately. You can install jsx_whitespace_transformer from npm and run it over your source tree to modify files in place. The transformed JSX files will preserve your code's existing whitespace behavior.

    +

    Changelog #

    React Core #

    Breaking Changes #

    +
      +
    • The lifecycle methods componentDidMount and componentDidUpdate no longer receive the root node as a parameter; use this.getDOMNode() instead
    • +
    • Whenever a prop is equal to undefined, the default value returned by getDefaultProps will now be used instead
    • +
    • React.unmountAndReleaseReactRootNode was previously deprecated and has now been removed
    • +
    • React.renderComponentToString is now synchronous and returns the generated HTML string
    • +
    • Full-page rendering (that is, rendering the <html> tag using React) is now supported only when starting with server-rendered markup
    • +
    • On mouse wheel events, deltaY is no longer negated
    • +
    • When prop types validation fails, a warning is logged instead of an error thrown (with the production build of React, type checks are now skipped for performance)
    • +
    • On input, select, and textarea elements, .getValue() is no longer supported; use .getDOMNode().value instead
    • +
    • this.context on components is now reserved for internal use by React
    • +
    +

    New Features #

    +
      +
    • React now never rethrows errors, so stack traces are more accurate and Chrome's purple break-on-error stop sign now works properly
    • +
    • Added support for SVG tags defs, linearGradient, polygon, radialGradient, stop
    • +
    • Added support for more attributes: + +
        +
      • crossOrigin for CORS requests
      • +
      • download and hrefLang for <a> tags
      • +
      • mediaGroup and muted for <audio> and <video> tags
      • +
      • noValidate and formNoValidate for forms
      • +
      • property for Open Graph <meta> tags
      • +
      • sandbox, seamless, and srcDoc for <iframe> tags
      • +
      • scope for screen readers
      • +
      • span for <colgroup> tags
      • +
    • +
    • Added support for defining propTypes in mixins
    • +
    • Added any, arrayOf, component, oneOfType, renderable, shape to React.PropTypes
    • +
    • Added support for statics on component spec for static component methods
    • +
    • On all events, .currentTarget is now properly set
    • +
    • On keyboard events, .key is now polyfilled in all browsers for special (non-printable) keys
    • +
    • On clipboard events, .clipboardData is now polyfilled in IE
    • +
    • On drag events, .dataTransfer is now present
    • +
    • Added support for onMouseOver and onMouseOut in addition to the existing onMouseEnter and onMouseLeave events
    • +
    • Added support for onLoad and onError on <img> elements
    • +
    • Added support for onReset on <form> elements
    • +
    • The autoFocus attribute is now polyfilled consistently on input, select, and textarea
    • +
    +

    Bug Fixes #

    +
      +
    • React no longer adds an __owner__ property to each component's props object; passed-in props are now never mutated
    • +
    • When nesting top-level components (e.g., calling React.renderComponent within componentDidMount), events now properly bubble to the parent component
    • +
    • Fixed a case where nesting top-level components would throw an error when updating
    • +
    • Passing an invalid or misspelled propTypes type now throws an error
    • +
    • On mouse enter/leave events, .target, .relatedTarget, and .type are now set properly
    • +
    • On composition events, .data is now properly normalized in IE9 and IE10
    • +
    • CSS property values no longer have px appended for the unitless properties columnCount, flex, flexGrow, flexShrink, lineClamp, order, widows
    • +
    • Fixed a memory leak when unmounting children with a componentWillUnmount handler
    • +
    • Fixed a memory leak when renderComponentToString would store event handlers
    • +
    • Fixed an error that could be thrown when removing form elements during a click handler
    • +
    • Boolean attributes such as disabled are rendered without a value (previously disabled="true", now simply disabled)
    • +
    • key values containing . are now supported
    • +
    • Shortened data-reactid values for performance
    • +
    • Components now always remount when the key property changes
    • +
    • Event handlers are attached to document only when necessary, improving performance in some cases
    • +
    • Events no longer use .returnValue in modern browsers, eliminating a warning in Chrome
    • +
    • scrollLeft and scrollTop are no longer accessed on document.body, eliminating a warning in Chrome
    • +
    • General performance fixes, memory optimizations, improvements to warnings and error messages
    • +
    +

    React with Addons #

    +
      +
    • React.addons.TestUtils was added to help write unit tests
    • +
    • React.addons.TransitionGroup was renamed to React.addons.CSSTransitionGroup
    • +
    • React.addons.TransitionGroup was added as a more general animation wrapper
    • +
    • React.addons.cloneWithProps was added for cloning components and modifying their props
    • +
    • Bug fix for adding back nodes during an exit transition for CSSTransitionGroup
    • +
    • Bug fix for changing transitionLeave in CSSTransitionGroup
    • +
    • Performance optimizations for CSSTransitionGroup
    • +
    • On checkbox <input> elements, checkedLink is now supported for two-way binding
    • +
    +

    JSX Compiler and react-tools Package #

    +
      +
    • Whitespace normalization has changed; now space between two tags on the same line will be preserved, while newlines between two tags will be removed
    • +
    • The react-tools npm package no longer includes the React core libraries; use the react package instead.
    • +
    • displayName is now added in more cases, improving error messages and names in the React Dev Tools
    • +
    • Fixed an issue where an invalid token error was thrown after a JSX closing tag
    • +
    • JSXTransformer now uses source maps automatically in modern browsers
    • +
    • JSXTransformer error messages now include the filename and problematic line contents when a file fails to parse
    • +
    + +
    +
    +

    React v0.9 RC

    February 16, 2014 by Ben Alpert

    @@ -469,27 +605,6 @@ rails s
    -
    -

    React Chrome Developer Tools

    -

    January 2, 2014 by Sebastian Markbåge

    -
    -
    -

    With the new year, we thought you'd enjoy some new tools for debugging React code. Today we're releasing the React Developer Tools, an extension to the Chrome Developer Tools. Download them from the Chrome Web Store.

    - -
    - -

    You will get a new tab titled "React" in your Chrome DevTools. This tab shows you a list of the root React Components that are rendered on the page as well as the subcomponents that each root renders.

    - -

    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. -

    - -

    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.

    - -
    -
    - @@ -90,6 +90,27 @@
    +
    +

    React Chrome Developer Tools

    +

    January 2, 2014 by Sebastian Markbåge

    +
    +
    +

    With the new year, we thought you'd enjoy some new tools for debugging React code. Today we're releasing the React Developer Tools, an extension to the Chrome Developer Tools. Download them from the Chrome Web Store.

    + +
    + +

    You will get a new tab titled "React" in your Chrome DevTools. This tab shows you a list of the root React Components that are rendered on the page as well as the subcomponents that each root renders.

    + +

    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. +

    + +

    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.

    + +
    +
    +

    Community Round-up #13

    December 30, 2013 by Vjeux

    @@ -339,84 +360,6 @@ componentDidUpdate: function() {
    -
    -

    Community Round-up #11

    -

    November 18, 2013 by Vjeux

    -
    -
    -

    This round-up is the proof that React has taken off from its Facebook's root: it features three in-depth presentations of React done by external people. This is awesome, keep them coming!

    -

    Super VanJS 2013 Talk #

    -

    Steve Luscher working at LeanPub made a 30 min talk at Super VanJS. He does a remarkable job at explaining why React is so fast with very exciting demos using the HTML5 Audio API.

    - -
    -

    React Tips #

    -

    Connor McSheffrey and Cheng Lou added a new section to the documentation. It's a list of small tips that you will probably find useful while working on React. Since each article is very small and focused, we encourage you to contribute!

    - - -

    Intro to the React Framework #

    -

    Pavan Podila 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. -

    - -

    Read the full article ...

    -
    -

    140-characters textarea #

    -

    Brian Kim wrote a small textarea component that gradually turns red as you reach the 140-characters limit. Because he only changes the background color, React is smart enough not to mess with the text selection.

    - -

    See the Pen FECGb by Brian Kim (@brainkim) on CodePen

    - - -

    Genesis Skeleton #

    -

    Eric Clemmons 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. -

    -

    AgFlow Talk #

    -

    Robert Zaremba working on AgFlow recently talked in Poland about React.

    - -
    -

    In a nutshell, I presented why we chose React among other available options (ember.js, angular, backbone ...) in AgFlow, where I’m leading an application development.

    - -

    During the talk a wanted to highlight that React is not about implementing a Model, but a way to construct visible components with some state. React is simple. It is super simple, you can learn it in 1h. On the other hand what is model? Which functionality it should provide? React does one thing and does it the best (for me)!

    - -

    Read the full article...

    -
    - -
    -

    JSX #

    -

    Todd Kennedy working at Condé Nast wrote JSXHint and explains in a blog post his perspective on JSX.

    - -
    -

    Lets start with the elephant in the room: JSX? -Is this some sort of template language? Specifically no. This might have been the first big stumbling block. What looks like to be a templating language is actually an in-line DSL that gets transpiled directly into JavaScript by the JSX transpiler.

    - -

    Creating elements in memory is quick -- copying those elements into the DOM is where the slowness occurs. This is due to a variety of issues, most namely reflow/paint. Changing the items in the DOM causes the browser to re-paint the display, apply styles, etc. We want to keep those operations to an absolute minimum, especially if we're dealing with something that needs to update the DOM frequently.

    - -

    Read the full article...

    -
    -

    Photo Gallery #

    -

    Maykel Loomans, designer at Instagram, wrote a gallery for photos he shot using React. -

    -

    Random Tweet #

    -

    -

    - -
    -
    -