{"componentChunkName":"component---src-templates-blog-js","path":"/blog/2017/05/18/whats-new-in-create-react-app.html","result":{"data":{"markdownRemark":{"html":"<p>Less than a year ago, we introduced <a href=\"/blog/2016/07/22/create-apps-with-no-configuration.html\">Create React App</a> as an officially supported way to create apps with zero configuration. The project has since enjoyed tremendous growth, with over 950 commits by more than 250 contributors.</p>\n<p>Today, we are excited to announce that many features that have been in the pipeline for the last few months are finally released.</p>\n<p>As usual with Create React App, <strong>you can enjoy these improvements in your existing non-ejected apps by updating a single dependency</strong> and following our <a href=\"https://github.com/facebookincubator/create-react-app/releases/tag/v1.0.0\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">migration instructions</a>.</p>\n<p>Newly created apps will get these improvements automatically.</p>\n<h3 id=\"webpack-2\"><a href=\"#webpack-2\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>webpack 2 </h3>\n<blockquote>\n<p><em>This change was contributed by <a href=\"https://github.com/Timer\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@Timer</a> in <a href=\"https://github.com/facebookincubator/create-react-app/pull/1291\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#1291</a>.</em></p>\n</blockquote>\n<p>We have upgraded to webpack 2 which has been <a href=\"https://medium.com/webpack/webpack-2-and-beyond-40520af9067f\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">officially released</a> a few months ago. It is a big upgrade with many bugfixes and general improvements. We have been testing it for a while, and now consider it stable enough to recommend it to everyone.</p>\n<p>While the Webpack configuration format has changed, Create React App users who didn’t eject don’t need to worry about it as we have updated the configuration on our side.</p>\n<p>If you had to eject your app for one reason or another, Webpack provides a <a href=\"https://webpack.js.org/guides/migrating/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">configuration migration guide</a> that you can follow to update your apps. Note that with each release of Create React App, we are working to support more use cases out of the box so that you don’t have to eject in the future.</p>\n<p>The biggest notable webpack 2 feature is the ability to write and import <a href=\"http://2ality.com/2014/09/es6-modules-final.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">ES6 modules</a> directly without compiling them to CommonJS. This shouldn’t affect how you write code since you likely already use <code class=\"gatsby-code-text\">import</code> and <code class=\"gatsby-code-text\">export</code> statements, but it will help catch more mistakes like missing named exports at compile time:</p>\n<p><img src=\"/d9aaae3589e6a7b6076b64de79f4bd13/cra-update-exports.gif\" alt=\"Export validation\"> </p>\n<p>In the future, as the ecosystem around ES6 modules matures, you can expect more improvements to your app’s bundle size thanks to <a href=\"https://webpack.js.org/guides/tree-shaking/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">tree shaking</a>.</p>\n<h3 id=\"error-overlay\"><a href=\"#error-overlay\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a> Runtime Error Overlay </h3>\n<blockquote>\n<p><em>This change was contributed by <a href=\"https://github.com/Timer\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@Timer</a> and <a href=\"https://github.com/nicinabox\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@nicinabox</a> in <a href=\"https://github.com/facebookincubator/create-react-app/pull/1101\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#1101</a>, <a href=\"https://github.com/bvaughn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@bvaughn</a> in <a href=\"https://github.com/facebookincubator/create-react-app/pull/2201\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#2201</a>.</em></p>\n</blockquote>\n<p>Have you ever made a mistake in code and only realized it after the console is flooded with cryptic errors? Or worse, have you ever shipped an app with crashes in production because you accidentally missed an error in development?</p>\n<p>To address these issues, we are introducing an overlay that pops up whenever there is an uncaught error in your application. It only appears in development, and you can dismiss it by pressing Escape. </p>\n<p>A GIF is worth a thousand words:</p>\n<p><img src=\"/a0c1e436d1ea034c8ecaf48e8bcb2890/cra-runtime-error.gif\" alt=\"Runtime error overlay\"> </p>\n<p>(Yes, it integrates with your editor!)</p>\n<p>In the future, we plan to teach the runtime error overlay to understand more about your React app. For example, after React 16 we plan to show React component stacks in addition to the JavaScript stacks when an error is thrown.</p>\n<h3 id=\"progressive-web-apps-by-default\"><a href=\"#progressive-web-apps-by-default\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Progressive Web Apps by Default </h3>\n<blockquote>\n<p><em>This change was contributed by <a href=\"https://github.com/jeffposnick\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jeffposnick</a> in <a href=\"https://github.com/facebookincubator/create-react-app/pull/1728\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#1728</a>.</em></p>\n</blockquote>\n<p>Newly created projects are built as <a href=\"https://developers.google.com/web/progressive-web-apps/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Progressive Web Apps</a> by default. This means that they employ <a href=\"https://developers.google.com/web/fundamentals/getting-started/primers/service-workers\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">service workers</a> with an <a href=\"https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#cache-falling-back-to-network\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">offline-first caching strategy</a> to minimize the time it takes to serve the app to the users who visit it again. You can opt out of this behavior, but we recommend it both for new and existing apps, especially if you target mobile devices.</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/cff5fa9b92de804e655ea669a53d4d9c/d74fe/cra-pwa.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 840px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 41.42857142857143%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAABYlAAAWJQFJUiTwAAABUklEQVQY0zVQ226DMAzl/7+o0rTuKlg7tdrDVO2FwrgnIYEkECCQZIa1lmMdH1/kHE98XxiqsDR9SRRvCaVVhXk/cyGyLK8Q6vue0hoh1DTNMAyEEMYYRIyxV1RVXUMVqEZKWRRleI0QRtcoBhDFMfCsaYQQsKW7m1IKmj0YxJhcLj95UQIOw6goy5bzJE0BkJrGv0l4jaGbc4EJGccRhuEiYLx5np1zxljwFWhtlgXAsiz/wGy+MsboaQJgrZ0mDdGDZ2/51gO7VsLdxgR3jBpGbUPdoG6FzdZhTGqt9ZY4EElw3smulZ2qiT0d3Onozp/g+uC3+wd19FFeTHpmlIJ4HsI4z8skydIsAw0hLfJczsvwspfBIxVhrVIiI6ZpTmi123H/XRk4iIN+noGfaPjLNE7TshmosJ7Xd8v5qINn7T/r4Gn+eNXB2/h1Np2yd/sDkEDBJGkq800AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"Loading assets from service worker\"\n        title=\"\"\n        src=\"/static/cff5fa9b92de804e655ea669a53d4d9c/1e088/cra-pwa.png\"\n        srcset=\"/static/cff5fa9b92de804e655ea669a53d4d9c/65ed1/cra-pwa.png 210w,\n/static/cff5fa9b92de804e655ea669a53d4d9c/d10fb/cra-pwa.png 420w,\n/static/cff5fa9b92de804e655ea669a53d4d9c/1e088/cra-pwa.png 840w,\n/static/cff5fa9b92de804e655ea669a53d4d9c/d74fe/cra-pwa.png 1164w\"\n        sizes=\"(max-width: 840px) 100vw, 840px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n     </p>\n<p>New apps automatically have these features, but you can easily convert an existing project to a Progressive Web App  by following <a href=\"https://github.com/facebookincubator/create-react-app/releases/tag/v1.0.0\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">our migration guide</a>.</p>\n<p>We will be adding <a href=\"https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md#making-a-progressive-web-app\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">more documentation</a> on this topic in the coming weeks. Please feel free to <a href=\"https://github.com/facebookincubator/create-react-app/issues/new\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">ask any questions</a> on the issue tracker!</p>\n<h3 id=\"jest-20\"><a href=\"#jest-20\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Jest 20 </h3>\n<blockquote>\n<p><em>This change was contributed by <a href=\"https://github.com/rogeliog\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@rogeliog</a> in <a href=\"https://github.com/facebookincubator/create-react-app/pull/1614\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#1614</a> and <a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> in <a href=\"https://github.com/facebookincubator/create-react-app/pull/2171\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#2171</a>.</em></p>\n</blockquote>\n<p>We are now using the latest version of Jest that includes numerous bugfixes and improvements. You can read more about the changes in <a href=\"https://facebook.github.io/jest/blog/2017/02/21/jest-19-immersive-watch-mode-test-platform-improvements.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Jest 19</a> and <a href=\"http://facebook.github.io/jest/blog/2017/05/06/jest-20-delightful-testing-multi-project-runner.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Jest 20</a> blog posts.</p>\n<p>Highlights include a new <a href=\"https://facebook.github.io/jest/blog/2017/02/21/jest-19-immersive-watch-mode-test-platform-improvements.html#immersive-watch-mode\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">immersive watch mode</a>, <a href=\"https://facebook.github.io/jest/blog/2017/02/21/jest-19-immersive-watch-mode-test-platform-improvements.html#snapshot-updates\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">a better snapshot format</a>, <a href=\"https://facebook.github.io/jest/blog/2017/02/21/jest-19-immersive-watch-mode-test-platform-improvements.html#improved-printing-of-skipped-tests\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">improvements to printing skipped tests</a>, and <a href=\"https://facebook.github.io/jest/blog/2017/05/06/jest-20-delightful-testing-multi-project-runner.html#new-improved-testing-apis\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">new testing APIs</a>.</p>\n<p><img src=\"/bf7aa2c62ad1f43fca436bfb4d8b3a0f/cra-jest-search.gif\" alt=\"Immersive test watcher\"> </p>\n<p>Additionally, Create React App now support configuring a few Jest options related to coverage reporting.</p>\n<h3 id=\"code-splitting-with-dynamic-import\"><a href=\"#code-splitting-with-dynamic-import\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Code Splitting with Dynamic import() </h3>\n<blockquote>\n<p><em>This change was contributed by <a href=\"https://github.com/Timer\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@Timer</a> in <a href=\"https://github.com/facebookincubator/create-react-app/pull/1538\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#1538</a> and <a href=\"https://github.com/tharakawj\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@tharakawj</a> in <a href=\"https://github.com/facebookincubator/create-react-app/pull/1801\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#1801</a>.</em></p>\n</blockquote>\n<p>It is important to keep the initial JavaScript payload of web apps down to the minimum, and <a href=\"https://medium.com/@addyosmani/progressive-web-apps-with-react-js-part-2-page-load-performance-33b932d97cf2\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">load the rest of the code on demand</a>. Although Create React App supported <a href=\"https://webpack.js.org/guides/code-splitting-async/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">code splitting</a> using <code class=\"gatsby-code-text\">require.ensure()</code> since the first release, it used a webpack-specific syntax that did not work in Jest or other environments.</p>\n<p>In this release, we are adding support for the <a href=\"http://2ality.com/2017/01/import-operator.html#loading-code-on-demand\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">dynamic <code class=\"gatsby-code-text\">import()</code> proposal</a> which aligns with the future web standards. Unlike <code class=\"gatsby-code-text\">require.ensure()</code>, it doesn’t break Jest tests, and should eventually become a part of JavaScript. We encourage you to use <code class=\"gatsby-code-text\">import()</code> to delay loading the code for non-critical component subtrees until you need to render them.</p>\n<p><img src=\"/b967396662319e6aa6170dab232f0286/cra-dynamic-import.gif\" alt=\"Creating chunks with dynamic import\"></p>\n<h3 id=\"better-console-output\"><a href=\"#better-console-output\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Better Console Output </h3>\n<blockquote>\n<p><em>This change was contributed by <a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> in <a href=\"https://github.com/facebookincubator/create-react-app/pull/2120\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#2120</a>, <a href=\"https://github.com/facebookincubator/create-react-app/pull/2125\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#2125</a>, and <a href=\"https://github.com/facebookincubator/create-react-app/pull/2161\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#2161</a>.</em></p>\n</blockquote>\n<p>We have improved the console output across the board.</p>\n<p>For example, when you start the development server, we now display the LAN address in additional to the localhost address so that you can quickly access the app from a mobile device on the same network:</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/5d3b4caf2ae115ca4ab1f15e6e19680d/00d43/cra-better-output.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 840px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 36.19047619047619%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAABYlAAAWJQFJUiTwAAABN0lEQVQY01VPzVKDMBDm5tRDIaFUsHTstCCEACEkgRaotQf7KJ6Finrwd3wAX9n1ULXfYWd3k+9nteeX2+7r4fHjqX/f3791/ef9/nUP6Nqubdu7f4CxOwDavu81dG6aE2SMDWQb2EF4gi13pBu6aZq6rg+HQ6gYYYTQ6WBwcgwtiRNvvogIpVEcRzFLMyUVIVFVVbDyfT8Mgjimec5ns5k1Hp8dYNu2Np1O11drEhGYXde1LIsQwrOMMSaVLAqVZXy3uwEVjDG8jg6AXgO91WolhGQsq+va87wwDIXIhRSc87IoQGW73dZVBTfALUdkIeVlEKQpC37iJVIpVRTgSyllabpYeCSK4AMHeaUgJvj/kVPGlstl09Q0pk3TbK43UMuyhDjgnOTigvE5zz2pfFU6jvNrDuRvXv9NRuVPEdMAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"Better console output\"\n        title=\"\"\n        src=\"/static/5d3b4caf2ae115ca4ab1f15e6e19680d/1e088/cra-better-output.png\"\n        srcset=\"/static/5d3b4caf2ae115ca4ab1f15e6e19680d/65ed1/cra-better-output.png 210w,\n/static/5d3b4caf2ae115ca4ab1f15e6e19680d/d10fb/cra-better-output.png 420w,\n/static/5d3b4caf2ae115ca4ab1f15e6e19680d/1e088/cra-better-output.png 840w,\n/static/5d3b4caf2ae115ca4ab1f15e6e19680d/00d43/cra-better-output.png 1000w\"\n        sizes=\"(max-width: 840px) 100vw, 840px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n     </p>\n<p>When lint errors are reported, we no longer show the warnings so that you can concentrate on more critical issues. Errors and warnings in the production build output are better formatted, and the build error overlay font size now matches the browser font size more closely.</p>\n<h3 id=\"but-wait-theres-more\"><a href=\"#but-wait-theres-more\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>But Wait… There’s More! </h3>\n<p>You can only fit so much in a blog post, but there are other long-requested features in this release, such as <a href=\"https://github.com/facebookincubator/create-react-app/pull/1344\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">environment-specific and local <code class=\"gatsby-code-text\">.env</code> files</a>, <a href=\"https://github.com/facebookincubator/create-react-app/pull/2130\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">a lint rule against confusingly named globals</a>, <a href=\"https://github.com/facebookincubator/create-react-app/pull/1790\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">support for multiple proxies in development</a>, <a href=\"https://github.com/facebookincubator/create-react-app/pull/1590\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">a customizable browser launch script</a>, and many bugfixes.</p>\n<p>You can read the full changelog and the migration guide in the <a href=\"https://github.com/facebookincubator/create-react-app/releases/tag/v1.0.0\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">v1.0.0 release notes</a>.</p>\n<h3 id=\"acknowledgements\"><a href=\"#acknowledgements\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Acknowledgements </h3>\n<p>This release is a result of months of work from many people in the React community. It is focused on improving both developer and end user experience, as we believe they are complementary and go hand in hand.</p>\n<p>We are grateful to <a href=\"https://github.com/facebookincubator/create-react-app/graphs/contributors\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">everyone who has offered their contributions</a>, whether in code, documentation, or by helping other people. We would like to specifically thank <a href=\"https://github.com/timer\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Joe Haddad</a> for his invaluable help maintaining the project.</p>\n<p>We are excited to bring these improvements to everybody using Create React App, and we are looking forward to more of your feedback and contributions.</p>","excerpt":"Less than a year ago, we introduced Create React App as an officially supported way to create apps with zero configuration. The project has since enjoyed tremendous growth, with over 950 commits by more than 250 contributors. Today, we are excited to announce that many features that have been in the pipeline for the last few months are finally released. As usual with Create React App, you can enjoy these improvements in your existing non-ejected apps by updating a single dependency and following…","frontmatter":{"title":"What's New in Create React App","next":null,"prev":null,"author":[{"frontmatter":{"name":"Dan Abramov","url":"https://twitter.com/dan_abramov"}}]},"fields":{"date":"May 18, 2017","path":"content/blog/2017-05-18-whats-new-in-create-react-app.md","slug":"/blog/2017/05/18/whats-new-in-create-react-app.html"}},"allMarkdownRemark":{"edges":[{"node":{"frontmatter":{"title":"Introducing the New JSX Transform"},"fields":{"slug":"/blog/2020/09/22/introducing-the-new-jsx-transform.html"}}},{"node":{"frontmatter":{"title":"React v17.0 Release Candidate: No New Features"},"fields":{"slug":"/blog/2020/08/10/react-v17-rc.html"}}},{"node":{"frontmatter":{"title":"React v16.13.0"},"fields":{"slug":"/blog/2020/02/26/react-v16.13.0.html"}}},{"node":{"frontmatter":{"title":"Building Great User Experiences with Concurrent Mode and Suspense"},"fields":{"slug":"/blog/2019/11/06/building-great-user-experiences-with-concurrent-mode-and-suspense.html"}}},{"node":{"frontmatter":{"title":"Preparing for the Future with React Prereleases"},"fields":{"slug":"/blog/2019/10/22/react-release-channels.html"}}},{"node":{"frontmatter":{"title":"Introducing the New React DevTools"},"fields":{"slug":"/blog/2019/08/15/new-react-devtools.html"}}},{"node":{"frontmatter":{"title":"React v16.9.0 and the Roadmap Update"},"fields":{"slug":"/blog/2019/08/08/react-v16.9.0.html"}}},{"node":{"frontmatter":{"title":"Is React Translated Yet? ¡Sí! Sim! はい！"},"fields":{"slug":"/blog/2019/02/23/is-react-translated-yet.html"}}},{"node":{"frontmatter":{"title":"React v16.8: The One With Hooks"},"fields":{"slug":"/blog/2019/02/06/react-v16.8.0.html"}}},{"node":{"frontmatter":{"title":"React v16.7: No, This Is Not the One With Hooks"},"fields":{"slug":"/blog/2018/12/19/react-v-16-7.html"}}}]}},"pageContext":{"slug":"/blog/2017/05/18/whats-new-in-create-react-app.html"}},"staticQueryHashes":[]}