{"data":{"markdownRemark":{"html":"<p>React 16.5 adds support for a new DevTools profiler plugin.\nThis plugin uses React’s <a href=\"https://github.com/reactjs/rfcs/pull/51\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">experimental Profiler API</a> to collect timing information about each component that’s rendered in order to identify performance bottlenecks in React applications.\nIt will be fully compatible with our upcoming <a href=\"/blog/2018/03/01/sneak-peek-beyond-react-16.html\">time slicing and suspense</a> features.</p>\n<p>This blog post covers the following topics:</p>\n<ul>\n<li><a href=\"#profiling-an-application\">Profiling an application</a></li>\n<li>\n<p><a href=\"#reading-performance-data\">Reading performance data</a></p>\n<ul>\n<li><a href=\"#browsing-commits\">Browsing commits</a></li>\n<li><a href=\"#filtering-commits\">Filtering commits</a></li>\n<li><a href=\"#flame-chart\">Flame chart</a></li>\n<li><a href=\"#ranked-chart\">Ranked chart</a></li>\n<li><a href=\"#component-chart\">Component chart</a></li>\n<li><a href=\"#interactions\">Interactions</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"#troubleshooting\">Troubleshooting</a></p>\n<ul>\n<li><a href=\"#no-profiling-data-has-been-recorded-for-the-selected-root\">No profiling data has been recorded for the selected root</a></li>\n<li><a href=\"#no-timing-data-to-display-for-the-selected-commit\">No timing data to display for the selected commit</a></li>\n</ul>\n</li>\n<li><a href=\"#deep-dive-video\">Deep dive video</a></li>\n</ul>\n<h2 id=\"profiling-an-application\"><a href=\"#profiling-an-application\" aria-hidden=\"true\" 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>Profiling an application </h2>\n<p>DevTools will show a “Profiler” tab for applications that support the new profiling API:</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/devtools-profiler-tab-4da6b55fc3c98de04c261cd902c14dc3-53c76.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: 47.82608695652174%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsSAAALEgHS3X78AAAB60lEQVQoz62RzW7TQBSFI8Srsekz1BJs2LDkLVjUKGSRxJay6AsgRJtCwwKJqiGNY4fSFhAqUdImkf/GcezxZHw9l5lpQXSBxIIjfTrjY+mTf2qDPXvr7XH34bA/2nbcsTEcjY0TxzMc95Px4ahvvN5/Y3QPDo2Xr/aMo+OB3r2xxPM0rutuSx45jvOgpvLty/l3uiaYXX7FTZYgcIqiLDSVPJcsQ9hkuquSyi1Hmq+RMaYpigJV5vO5q4W94dX5e2+F3YFfHowi6I1jeHeawKFHNL1xcof9YQRnPwgwmgOlFKSLK2GSJB+l7n5ttogvAp/hbBbA9TIRkzkT0yUVYVqKKKtEtIY7hJKsAIHid5QUCSEDLczW6YUa4utFFUwnOJkQvJqGSIIM+YYj54AbXsm+oSxBdonSqF/1D+GJFsZkpYWrZVKlYSyCgIo4osL3C7GKE5FEiTwzEYaFhIo0zgVnXIi/PWGepWdqSBeEp0EEflBAFDIIJSuyBimFwKdACINYkqUMoAQl+QW/Ffa18PNlOFFDSSvcyG+c5yj/ooQiMtmixH9KFEWnWrj12Hz67HnrhW1bO82WZbbbbbPVusFqt0zLkm3ZZlteq3uKZrNp1ut1s9FoKHZs2250Op0nWnibe/+B2u7ubu0n/Rxb5mrVIIgAAAAASUVORK5CYII='); 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=\"New DevTools \"profiler\" tab\"\n        title=\"\"\n        src=\"/static/devtools-profiler-tab-4da6b55fc3c98de04c261cd902c14dc3-acf85.png\"\n        srcset=\"/static/devtools-profiler-tab-4da6b55fc3c98de04c261cd902c14dc3-c1418.png 210w,\n/static/devtools-profiler-tab-4da6b55fc3c98de04c261cd902c14dc3-5d5d8.png 420w,\n/static/devtools-profiler-tab-4da6b55fc3c98de04c261cd902c14dc3-acf85.png 840w,\n/static/devtools-profiler-tab-4da6b55fc3c98de04c261cd902c14dc3-53c76.png 1012w\"\n        sizes=\"(max-width: 840px) 100vw, 840px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<blockquote>\n<p>Note:</p>\n<p><code class=\"gatsby-code-text\">react-dom</code> 16.5+ supports profiling in DEV mode.\nA production profiling bundle is also available as <code class=\"gatsby-code-text\">react-dom/profiling</code>.\nRead more about how to use this bundle at <a href=\"https://fb.me/react-profiling\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">fb.me/react-profiling</a> </p>\n</blockquote>\n<p>The “Profiler” panel will be empty initially. Click the record button to start profiling:</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/start-profiling-bae8d10e17f06eeb8c512c91c0153cff-53c76.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: 47.82608695652174%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsSAAALEgHS3X78AAABdUlEQVQoz62QvU7DMBCAI8SrsfAMjQQzI+9RBthpq0ody9ABMTC0C0lKwo8KDEjt0GZomthJmx8S1+bukkbAiHrSp7OTu89na4+318f347sTe2w3DNPQDaPENE19OBzq/f6NPhgMIPf10WhE3+k/YBkPumPbDcdxTi3LOtIwPiYvnyxkaj53VRAEv/B9Xy2XS7VarZTnIR59Z4xBZsr1AsXDSGFMp1OHhLOn57cszZTP10Ucx+IvSZIQaZqK9XotNpuNkFKK7XYrCkSIHIVwuAG6Q40HwTsdoSQWSlwQ1fpngISoa0oEdnPOTRJGUURCrMdcFAUBI5RZCFX9rzMCYpWXtVQAz2CRMAzDWgjNEvaSeZ5ki4WEUyVcs55qNyWu8zyXcH2Jz1EJzZ1wUgnzLMtEAm+VcC5i1xVfsI+hAZqxqX47zNVVkbwSPpAQJpipPQQM9krCdrt93u12LzudThO4+AdN6L9qtVpnJKziYA9ovV5P+wavR2c66XZI3gAAAABJRU5ErkJggg=='); 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=\"Click \"record\" to start profiling\"\n        title=\"\"\n        src=\"/static/start-profiling-bae8d10e17f06eeb8c512c91c0153cff-acf85.png\"\n        srcset=\"/static/start-profiling-bae8d10e17f06eeb8c512c91c0153cff-c1418.png 210w,\n/static/start-profiling-bae8d10e17f06eeb8c512c91c0153cff-5d5d8.png 420w,\n/static/start-profiling-bae8d10e17f06eeb8c512c91c0153cff-acf85.png 840w,\n/static/start-profiling-bae8d10e17f06eeb8c512c91c0153cff-53c76.png 1012w\"\n        sizes=\"(max-width: 840px) 100vw, 840px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<p>Once you’ve started recording, DevTools will automatically collect performance information each time your application renders.\nUse your app as you normally would.\nWhen you are finished profiling, click the “Stop” button.</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/stop-profiling-45619de03bed468869f7a0878f220586-53c76.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: 47.82608695652174%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsSAAALEgHS3X78AAABcklEQVQoz62QS2vCQBCAQ+lf66W/wUB77rH/Qw/tuSQieLSHQMFDD3oxiSQHUfsCC1UP5rGJeTRuNrvd2SRiH/TkwMdkM7PfDiNZD3fnj+P+hTW2Grqhy7peYhiGPBgM5F7vXtY0jeeePBwOxX9R55j6SLYtq2Hb9qVpmmcSxNN08oZCxJbLNfN9/xue57HNZsNc12WOAzjiP0KIZ8TWjs+CcMsgFouFLYQfL6+zLNsxD0V5kiQkTRMCuSZN0z1wzrKM0KIgBScHCMEg5I/rXHcqhQjNxROMEnoQRUH/DC6i0HwAgdtBEBilcLsVQuitMiuo6GF8DPYzoC56eA3nOcvzXDTzNZilMAz3QpgAPlcrl2r9Z/qZJLQs/Z4QY0zjOKawikpo1MJpJcQcKJI03pHZ3CF8DELLVeyB3dV9FbgSjoQwiqJ3doTgg02EUFXV606nc9Nut5ucVo2iqK3D8z80+f1bRVGuhLCKkyMgdbtd6Qtm52eikNUIKgAAAABJRU5ErkJggg=='); 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=\"Click \"stop\" when you are finished profiling\"\n        title=\"\"\n        src=\"/static/stop-profiling-45619de03bed468869f7a0878f220586-acf85.png\"\n        srcset=\"/static/stop-profiling-45619de03bed468869f7a0878f220586-c1418.png 210w,\n/static/stop-profiling-45619de03bed468869f7a0878f220586-5d5d8.png 420w,\n/static/stop-profiling-45619de03bed468869f7a0878f220586-acf85.png 840w,\n/static/stop-profiling-45619de03bed468869f7a0878f220586-53c76.png 1012w\"\n        sizes=\"(max-width: 840px) 100vw, 840px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<p>Assuming your application rendered at least once while profiling, DevTools will show several ways to view the performance data.\nWe’ll <a href=\"#reading-performance-data\">take a look at each of these below</a>.</p>\n<h2 id=\"reading-performance-data\"><a href=\"#reading-performance-data\" aria-hidden=\"true\" 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>Reading performance data </h2>\n<h3 id=\"browsing-commits\"><a href=\"#browsing-commits\" aria-hidden=\"true\" 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>Browsing commits </h3>\n<p>Conceptually, React does work in two phases:</p>\n<ul>\n<li>The <strong>render</strong> phase determines what changes need to be made to e.g. the DOM. During this phase, React calls <code class=\"gatsby-code-text\">render</code> and then compares the result to the previous render.</li>\n<li>The <strong>commit</strong> phase is when React applies any changes. (In the case of React DOM, this is when React inserts, updates, and removes DOM nodes.) React also calls lifecycles like <code class=\"gatsby-code-text\">componentDidMount</code> and <code class=\"gatsby-code-text\">componentDidUpdate</code> during this phase.</li>\n</ul>\n<p>The DevTools profiler groups performance info by commit.\nCommits are displayed in a bar chart near the top of the profiler:</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/commit-selector-bd72dec045515d59be51c944e902d263-8ef72.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: 601px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 9.983361064891847%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAIAAADXZGvcAAAACXBIWXMAAAsSAAALEgHS3X78AAAAbUlEQVQI103KuwqEMBBAUf//X7axtLERbLaKuMWC2RDcmcyMeSNYaiWe7sJtAED/DJJ8vuaPUkpJKeWHKxNzRNxly+gq0eH9zpTJNQ5httEC+xBZthD8NZdbrau1pBRPk+ilb1/z2BltQPXxPZwvF2xA6VCC0AAAAABJRU5ErkJggg=='); 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=\"Bar chart of profiled commits\"\n        title=\"\"\n        src=\"/static/commit-selector-bd72dec045515d59be51c944e902d263-8ef72.png\"\n        srcset=\"/static/commit-selector-bd72dec045515d59be51c944e902d263-69e48.png 210w,\n/static/commit-selector-bd72dec045515d59be51c944e902d263-3b0aa.png 420w,\n/static/commit-selector-bd72dec045515d59be51c944e902d263-8ef72.png 601w\"\n        sizes=\"(max-width: 601px) 100vw, 601px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<p>Each bar in the chart represents a single commit with the currently selected commit colored black.\nYou can click on a bar (or the left/right arrow buttons) to select a different commit.</p>\n<p>The color and height of each bar corresponds to how long that commit took to render.\n(Taller, yellow bars took longer than shorter, blue bars.)</p>\n<h3 id=\"filtering-commits\"><a href=\"#filtering-commits\" aria-hidden=\"true\" 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>Filtering commits </h3>\n<p>The longer you profile, the more times your application will render.\nIn some cases you may end up with <em>too many commits</em> to easily process.\nThe profiler offers a filtering mechanism to help with this.\nUse it to specify a threshold and the profiler will hide all commits that were <em>faster</em> than that value.</p>\n<p><img src=\"/filtering-commits-683b9d860ef722e1505e5e629df7ef7e.gif\" alt=\"Filtering commits by time\"></p>\n<h3 id=\"flame-chart\"><a href=\"#flame-chart\" aria-hidden=\"true\" 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>Flame chart </h3>\n<p>The flame chart view represents the state of your application for a particular commit.\nEach bar in the chart represents a React component (e.g. <code class=\"gatsby-code-text\">App</code>, <code class=\"gatsby-code-text\">Nav</code>).\nThe size and color of the bar represents how long it took to render the component and its children.\n(The width of a bar represents how much time was spent <em>when the component last rendered</em> and the color represents how much time was spent <em>as part of the current commit</em>.)</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/flame-chart-3046f500b9bfc052bde8b7b3b3cfc243-53c76.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: 47.82608695652174%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsSAAALEgHS3X78AAAB30lEQVQoz62Rz08TURDHG+O/xsW/gZeIN6M3L548kTSQiFHUgx5oS9PIqQkhgaIpEovYbep2d1vaQgndSpV2f++2XWRnZ3y7LejZ8E2+eW/mzXzevN1EZevdvaKwfV/6Xpuv1UQWWRRFJksSE4Qy2y0U2F6xyHZ3CqwiVJmi1Jksy6yuKHGNJEnzPF7gPXOJSMftZsccTejXQCdvNCLf92NPJhNyXIdc1yXDMkk3dZ5zyfMcnvfIdhzyxmMeexRJVVUxBrbaJ0dD3SVdMwJDN8EyLG4TTO7hQAOeB7V3Bu2zDvwY9MHqdeGnUIGLahV8bQgBwFUE1DStzHF3E5/yyaaw+ZSOS0k4+rKIjVISGwfPsbG3iKeHy9j6uoQdeR3HZh/9y4CvJqp1Bd3zcwwsCzkLIqBt20IMXN1aaz7cWKZn2+/DtdIH2hA/0mE1T0tvH9Cb9ceU//yKbN+ha0EY0u8guIkRMQZallWJgQenJ82dwQWVhkbYG1+iz2vkfhdf7m/ifquMmqNHU2CIfzXl3OgaOJ1w5HqN2WX8W/BDXgBIANOnwHSoEKLGyP/uZ76aAb/FQP6XunQLchxHiYHpdPpJNptdzWQyK9wv/sMrvP91KpV6FANnunMLTuRyucQfU2RSA7PakTgAAAAASUVORK5CYII='); 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=\"Example flame chart\"\n        title=\"\"\n        src=\"/static/flame-chart-3046f500b9bfc052bde8b7b3b3cfc243-acf85.png\"\n        srcset=\"/static/flame-chart-3046f500b9bfc052bde8b7b3b3cfc243-c1418.png 210w,\n/static/flame-chart-3046f500b9bfc052bde8b7b3b3cfc243-5d5d8.png 420w,\n/static/flame-chart-3046f500b9bfc052bde8b7b3b3cfc243-acf85.png 840w,\n/static/flame-chart-3046f500b9bfc052bde8b7b3b3cfc243-53c76.png 1012w\"\n        sizes=\"(max-width: 840px) 100vw, 840px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<blockquote>\n<p>Note:</p>\n<p>The width of a bar indicates how long it took to render the component (and its children) when they last rendered.\nIf the component did not re-render as part of this commit, the time represents a previous render.\nThe wider a component is, the longer it took to render.</p>\n<p>The color of a bar indicates how long the component (and its children) took to render in the selected commit.\nYellow components took more time, blue components took less time, and gray components did not render at all during this commit.</p>\n</blockquote>\n<p>For example, the commit shown above took a total of 18.4ms to render.\nThe <code class=\"gatsby-code-text\">Router</code> component was the “most expensive” to render (taking 18.4ms).\nMost of this time was due to two of its children, <code class=\"gatsby-code-text\">Nav</code> (8.4ms) and <code class=\"gatsby-code-text\">Route</code> (7.9ms).\nThe rest of the time was divided between its remaining children or spent in the component’s own render method.</p>\n<p>You can zoom in or out on a flame chart by clicking on components:\n<img src=\"/zoom-in-and-out-39ba82394205242af7c37ccb3a631f4d.gif\" alt=\"Click on a component to zoom in or out\"></p>\n<p>Clicking on a component will also select it and show information in the right side panel which includes its <code class=\"gatsby-code-text\">props</code> and <code class=\"gatsby-code-text\">state</code> at the time of this commit.\nYou can drill into these to learn more about what the component actually rendered during the commit:</p>\n<p><img src=\"/props-and-state-1f4d023f1a0f281386625f28df87c78f.gif\" alt=\"Viewing a component&#x27;s props and state for a commit\"></p>\n<p>In some cases, selecting a component and stepping between commits may also provide a hint as to <em>why</em> the component rendered:</p>\n<p><img src=\"/see-which-props-changed-cc2a8b37bbce52c49a11c2f8e55dccbc.gif\" alt=\"Seeing which values changed between commits\"></p>\n<p>The above image shows that <code class=\"gatsby-code-text\">state.scrollOffset</code> changed between commits.\nThis is likely what caused the <code class=\"gatsby-code-text\">List</code> component to re-render.</p>\n<h3 id=\"ranked-chart\"><a href=\"#ranked-chart\" aria-hidden=\"true\" 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>Ranked chart </h3>\n<p>The ranked chart view represents a single commit.\nEach bar in the chart represents a React component (e.g. <code class=\"gatsby-code-text\">App</code>, <code class=\"gatsby-code-text\">Nav</code>).\nThe chart is ordered so that the components which took the longest to render are at the top.</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/ranked-chart-0c81347535e28c9cdef0e94fab887b89-53c76.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: 47.82608695652174%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsSAAALEgHS3X78AAABlUlEQVQoz62OT2/TMBiHI7SvxoXPMEtwhhvckPYBECqHIY6s6r/BdpjaXmARNzSta6WQpGuF1o5kW7e1YYmj1HHiuH6xvYpNOwBC+0mPbL2v9fxsdFrvHpn7zceHVnfV/tZFtnWNa/dQr/MVmbufkWl+QeanNuod7CHXsZHjuqjf7yPHcZBt26vyfGJZ1kND5Xg0HpEcwLskkKQcSAa/wXMOEY4hTa4giCgkdAFzQiGOMUQRhiRJNCq+71taOOhtD04HHwCPWwU7aXF22ubFEuo1eXb8kQuvxmf9TU7HW3wefOeTixmfTac8yzJeFAVTwiAIOlK3Yrwovx4+a7yClJxzYKEQWSAg/3kDuxIiDwUUob6nSSg8zxdRFAkpE9LFlRBjfKCFL3fqw72Jr2YLtf0TKly+IoQApRQYYyCE0EJZ0NXCtWZ9eEawFsqIf8ntnlvC6x/aP44Oc7FQM6aWf0OW3p2xpXBfC/OUenAPiePY1cL3GxvPq9XqeqVSKUne/AelWq32tlwuP9XCZR7cA0aj0TB+AdiMX66/MIlxAAAAAElFTkSuQmCC'); 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=\"Example ranked chart\"\n        title=\"\"\n        src=\"/static/ranked-chart-0c81347535e28c9cdef0e94fab887b89-acf85.png\"\n        srcset=\"/static/ranked-chart-0c81347535e28c9cdef0e94fab887b89-c1418.png 210w,\n/static/ranked-chart-0c81347535e28c9cdef0e94fab887b89-5d5d8.png 420w,\n/static/ranked-chart-0c81347535e28c9cdef0e94fab887b89-acf85.png 840w,\n/static/ranked-chart-0c81347535e28c9cdef0e94fab887b89-53c76.png 1012w\"\n        sizes=\"(max-width: 840px) 100vw, 840px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<blockquote>\n<p>Note:</p>\n<p>A component’s render time includes the time spent rendering its children,\nso the components which took the longest to render are generally near the top of the tree.</p>\n</blockquote>\n<p>As with the flame chart, you can zoom in or out on a ranked chart by clicking on components.</p>\n<h3 id=\"component-chart\"><a href=\"#component-chart\" aria-hidden=\"true\" 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>Component chart </h3>\n<p>Sometimes it’s useful to see how many times a particular component rendered while you were profiling.\nThe component chart provides this information in the form of a bar chart.\nEach bar in the chart represents a time when the component rendered.\nThe color and height of each bar corresponds to how long the component took to render <em>relative to other components</em> in a particular commit.</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/component-chart-d71275b42c6109e222fbb0932a0c8c09-53c76.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: 47.82608695652174%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsSAAALEgHS3X78AAACSElEQVQoz62P20tUURTGh+gf6a33CHwTukCIQQ9JNw8kEZHRU2+9BzaCJ1LLB43xOPiaMjIgBl1Gzcuc0RnL0RQdTUWdOefsc3Wcs85ardlq9Af0wcf69tqL3147tjCeaPqiTzzM5xZbs9mscuJ5RWdPTU4qqVRKSafTyujIqJLJZBRd15WzuRzP5PP51kKh0JbL5a7H6lpZXloXrk27e/tkWhaZpkkWV0vYMpfLZVkNwyTTsEgIIV2f3auYZDsO1bW5WVqQwFJpa9lzHTosV0LX88D3ffC52lYFhLCAYbC/UwTXWOW8DfwY9wV4POP6Ac97NeGF9KO4Psu48zHnmIq00Ue1lV5AIqw7NJcwmH4sM0CEYRgihEfsABmEDMVqlc9RiCyob1gxjDkJrGwXipR/QrTWHdGZTJ0w00xQtfmAFNW8v1cRvxIeHpBrGVS2KuR6rgTaQsxLoFgdKdJCG1Vnn0bHYh0lwVlBmGjAo68tyE0Mph5hsPweg60xDJ0SVrd30d7ZQd8PMAKQQN76ZEN7bewnLbYTpC/Wqp+uwdGvBMBBBnDiMkSfGiCYeQ74uRFg/BKEqQsAvz9CzToGr7wPYSRhtVPgjAS6G+Ml2npJ9P0q0XwT0TTXmZtE2WaiuRucr5z09VucG4mcb0Q+f4S//K9s216SwMG+jhfJN+3dgx0tXVq8VR3qfKAOxe+o2ut77Luq1qmoWpxz/L6qddxWtb5Xav/bd2p/b4/6YWBAHdS0rmQy2ZNIJJ5J4KnO/QfHhoeHY38AsLpA6BTZFEwAAAAASUVORK5CYII='); 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=\"Example component chart\"\n        title=\"\"\n        src=\"/static/component-chart-d71275b42c6109e222fbb0932a0c8c09-acf85.png\"\n        srcset=\"/static/component-chart-d71275b42c6109e222fbb0932a0c8c09-c1418.png 210w,\n/static/component-chart-d71275b42c6109e222fbb0932a0c8c09-5d5d8.png 420w,\n/static/component-chart-d71275b42c6109e222fbb0932a0c8c09-acf85.png 840w,\n/static/component-chart-d71275b42c6109e222fbb0932a0c8c09-53c76.png 1012w\"\n        sizes=\"(max-width: 840px) 100vw, 840px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<p>The chart above shows that the <code class=\"gatsby-code-text\">List</code> component rendered 11 times.\nIt also shows that each time it rendered, it was the most “expensive” component in the commit (meaning that it took the longest).</p>\n<p>To view this chart, either double-click on a component <em>or</em> select a component and click on the blue bar chart icon in the right detail pane.\nYou can return to the previous chart by clicking the “x” button in the right detail pane.\nYou can also double click on a particular bar to view more information about that commit.</p>\n<p><img src=\"/see-all-commits-for-a-fiber-99cb4321ded8eb0c21ae5fc673878563.gif\" alt=\"How to view all renders for a specific component\"></p>\n<p>If the selected component did not render at all during the profiling session, the following message will be shown:</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/no-render-times-for-selected-component-8eb0c37a13353ef5d9e61ae8fc040705-53c76.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: 47.82608695652174%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsSAAALEgHS3X78AAABZ0lEQVQoz62PzU7CQBDHG+OrefEZaKJnj74HHvQBCiHckQMx8eABE5VSUlDwQEI9oId+7PaD2rTLjrND26BHwz/5dbc7M/+Z0SZ3xumDdX9mT+yGaZp6xXg81ofDod7v9/XBYKD3erf4/0jvVY5ljnTbthvT6fTcsqwTTel9PlvyiMN6/QUBYxAEDBjbEQQBuK4Lvu+D53kE55xQuZ8egzCKQGm1ciZk6Dgf8zT9BtcPizhOxGazqUFTEUWRyPO8Bs2IJElETHlJzpMCXhfLZ7Q71jC4oBYghfrsU6m6qxMbSZxYZllWRreqTm3xQoZhGJLhFlUUBSiEEDXV286P8gAnpRjsOtEFBxv9MsSkLa4hFbiqZJxJjMk4jultX382IEOsqSd8KzvleAicQKRpSuBaKplQhQoVr+4leWn4RIY4gQMHEA42I8NWq3XZ6XSu2+12E7n6B02svzEM44IMSx0dAK3b7Wo/FtRnZY5UiRMAAAAASUVORK5CYII='); 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=\"No render times for the selected component\"\n        title=\"\"\n        src=\"/static/no-render-times-for-selected-component-8eb0c37a13353ef5d9e61ae8fc040705-acf85.png\"\n        srcset=\"/static/no-render-times-for-selected-component-8eb0c37a13353ef5d9e61ae8fc040705-c1418.png 210w,\n/static/no-render-times-for-selected-component-8eb0c37a13353ef5d9e61ae8fc040705-5d5d8.png 420w,\n/static/no-render-times-for-selected-component-8eb0c37a13353ef5d9e61ae8fc040705-acf85.png 840w,\n/static/no-render-times-for-selected-component-8eb0c37a13353ef5d9e61ae8fc040705-53c76.png 1012w\"\n        sizes=\"(max-width: 840px) 100vw, 840px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<h3 id=\"interactions\"><a href=\"#interactions\" aria-hidden=\"true\" 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>Interactions </h3>\n<p>React recently added another <a href=\"https://fb.me/react-interaction-tracing\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">experimental API</a> for tracing the <em>cause</em> of an update.\n“Interactions” traced with this API will also be shown in the profiler:</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/interactions-a91a39ac076b71aa7a202aaf46f8bd5a-53c76.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: 47.82608695652174%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsSAAALEgHS3X78AAABl0lEQVQoz62RzW7aQBDHraqvlkufIZaSc499j/TQPgAgxD1wQJFy6IFKSQyOgBAUKVFJJKAW9trOrm28O97J7ILpoT1VGemn9Xz9Z0Z2bi8an36MLk/G/vh4OBy6NaPRyB0MBm6v13P7/b7bPe+S/9PGPc+zNf7Qcyfj8fFkMjn1ff/IMfYwv3tMeIrL1RrjOEZG1C9jDDebDYZheCBJEkzT1ObXYYzJ6ysaWywWt1bw19PTPY8TXP2OVMA45FkGWY0QIASHoiggJwT5JAo0BMIogpAxE5Naa1wul9ck99F5mU7nIgiwoMIKkXKVNkZDNchSy0zossh1JaWNZ9tCr4JAx4zpPM9MCMyGdNWNFXyezeZpFCEPgkpVgGVZopTygFIKt0LYb07nizRGUW6RtseSYmS1oGcF4/V6jqaxKCoFoEEpDeYljK+sX+182pLut9vX/LVhyvkMd1m5n/Zvdo1AdSSvQf9B7gWvrCDnfIHvYPTnp1aw2Wx+abfb31qt1hnx9T84o/7vjUbjsxXc24d3wOl0Os4blShlbz/d1/8AAAAASUVORK5CYII='); 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=\"The interactions panel\"\n        title=\"\"\n        src=\"/static/interactions-a91a39ac076b71aa7a202aaf46f8bd5a-acf85.png\"\n        srcset=\"/static/interactions-a91a39ac076b71aa7a202aaf46f8bd5a-c1418.png 210w,\n/static/interactions-a91a39ac076b71aa7a202aaf46f8bd5a-5d5d8.png 420w,\n/static/interactions-a91a39ac076b71aa7a202aaf46f8bd5a-acf85.png 840w,\n/static/interactions-a91a39ac076b71aa7a202aaf46f8bd5a-53c76.png 1012w\"\n        sizes=\"(max-width: 840px) 100vw, 840px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<p>The image above shows a profiling session that traced four interactions.\nEach row represents an interaction that was traced.\nThe colored dots along the row represent commits that were related to that interaction.</p>\n<p>You can also see which interactions were traced for a particular commit from the flame chart and ranked chart views as well:</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/interactions-for-commit-9847e78f930cb7cf2b0f9682853a5dbc-53c76.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: 47.82608695652174%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsSAAALEgHS3X78AAABuUlEQVQoz62Ry27aQBSGraqv1k2fISO16y77Humi3XUDCPECva3SICULLkkxYGKCsAmCFMYm2OBbYo7P6ZmBpllX+aVftmfO+fzPGaP97fPr0/aPN91f5pFpmkK50+mIbrcrms2GODn5Kc7PzsTXL99Fq9UW/X5f27Is0ev1VN0RP99yzytDaTS0x3dRSkt5R3GcUJZlj47jmDzPo9lsxt8xpWmq1zabDQVBQFEUaStNp9OOBlr29dV8uSYp5U56Hvi+r71arYBhwIUwHF6DlDNe8yAIQ/i9WIDHNdnDA+x2u1wBuafJuJdGvV637asBua4L4/EYlR3HRWswRNdx0HUnOJ/Pcb0OEAAwiSO8GY1wLSXmSYLMAgUMw7ClgXx2m+dBk8mk4DS8saEsjeiycUoXF5fkOA7luQ6hVdzfU3J7S9liQbnvExaFBvII2hrI87GTJFGzKbIs5X1CKlJMfROXS4k8N5UCH8Xv9MSsv8B9wu12Ozj8XMUAVcBdgPujwL+1vQtOhE+NmB+ADQ3kW7qhZxDffF8Dy+Xy+2q1+rFSqRyzP/yHj7n/U6lUeqeBB714Bhu1Ws34A880Xu+Ar3OjAAAAAElFTkSuQmCC'); 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=\"List of interactions for a commit\"\n        title=\"\"\n        src=\"/static/interactions-for-commit-9847e78f930cb7cf2b0f9682853a5dbc-acf85.png\"\n        srcset=\"/static/interactions-for-commit-9847e78f930cb7cf2b0f9682853a5dbc-c1418.png 210w,\n/static/interactions-for-commit-9847e78f930cb7cf2b0f9682853a5dbc-5d5d8.png 420w,\n/static/interactions-for-commit-9847e78f930cb7cf2b0f9682853a5dbc-acf85.png 840w,\n/static/interactions-for-commit-9847e78f930cb7cf2b0f9682853a5dbc-53c76.png 1012w\"\n        sizes=\"(max-width: 840px) 100vw, 840px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<p>You can navigate between interactions and commits by clicking on them:</p>\n<p><img src=\"/navigate-between-interactions-and-commits-7c66e7686b5242473c87b3d0b4576cf3.gif\" alt=\"Navigate between interactions and commits\"></p>\n<p>The tracing API is still new and we will cover it in more detail in a future blog post.</p>\n<h2 id=\"troubleshooting\"><a href=\"#troubleshooting\" aria-hidden=\"true\" 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>Troubleshooting </h2>\n<h3 id=\"no-profiling-data-has-been-recorded-for-the-selected-root\"><a href=\"#no-profiling-data-has-been-recorded-for-the-selected-root\" aria-hidden=\"true\" 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>No profiling data has been recorded for the selected root </h3>\n<p>If your application has multiple “roots”, you may see the following message after profiling:\n\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/no-profiler-data-multi-root-0755492a211f5bbb775285c0ff2fdfda-53c76.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: 47.82608695652174%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsSAAALEgHS3X78AAABjUlEQVQoz62Qy07CQBRAG+OvufEbmETXLv0PWOgH8GhY2wVCAjEuxbZUNEpMTCCB0kDoY0pfdKYz3hkeC40LE25yeqfzOHPnKtaDev74+ngxtIYlwzCQQNd11Ol0ULvdRpqmoftWC/V6PaTdaajb7SLTNOW+gaGjoWWVXoz+pTkwzxQRnwP9Cy8cbttz7vk+9zyP+5BXq5VkuVwexovFgruuywOxD3BcnwdBwHme8PFkbEnhZDT6yPyAu35Ioiimcbwl2ZMkh7xer2kURZQxRouioIQKaM4h4KI+6E6VIAxHfBsUYH8BHwYSyY81cU5U+iyFIcZSWGRZQaB8gvEvKMAJkbdCdRIQwxQRSCG0SZdCGEhhinERzGbMt20WAHg+Z6HjMG86ZWKeJAmD5x0qBBGD1rA0TffCbYXw9ndxU5KmebrZ0Ah6leW5RPzHcCDJMgrrsrciRA93TxXkO+GTFEKTJ/wIgTF+k8JarXbdaDRuIJfr9XoFckXkf1BWVfW2Wq1eSeEuTo6A0mw2lW+bPmTlyk2LHgAAAABJRU5ErkJggg=='); 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=\"No profiling data has been recorded for the selected root\"\n        title=\"\"\n        src=\"/static/no-profiler-data-multi-root-0755492a211f5bbb775285c0ff2fdfda-acf85.png\"\n        srcset=\"/static/no-profiler-data-multi-root-0755492a211f5bbb775285c0ff2fdfda-c1418.png 210w,\n/static/no-profiler-data-multi-root-0755492a211f5bbb775285c0ff2fdfda-5d5d8.png 420w,\n/static/no-profiler-data-multi-root-0755492a211f5bbb775285c0ff2fdfda-acf85.png 840w,\n/static/no-profiler-data-multi-root-0755492a211f5bbb775285c0ff2fdfda-53c76.png 1012w\"\n        sizes=\"(max-width: 840px) 100vw, 840px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<p>This message indicates that no performance data was recorded for the root that’s selected in the “Elements” panel.\nIn this case, try selecting a different root in that panel to view profiling information for that root:</p>\n<p><img src=\"/select-a-root-to-view-profiling-data-bdc30593d414b5c8d2ae92027ed11940.gif\" alt=\"Select a root in the &#x22;Elements&#x22; panel to view its performance data\"></p>\n<h3 id=\"no-timing-data-to-display-for-the-selected-commit\"><a href=\"#no-timing-data-to-display-for-the-selected-commit\" aria-hidden=\"true\" 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>No timing data to display for the selected commit </h3>\n<p>Sometimes a commit may be so fast that <code class=\"gatsby-code-text\">performance.now()</code> doesn’t give DevTools any meaningful timing information.\nIn this case, the following message will be shown:</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/no-timing-data-for-commit-63b2fb6298feecb179272c467020ed95-53c76.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: 47.82608695652174%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsSAAALEgHS3X78AAABe0lEQVQoz61QTUvDQBAN4l/z4m9oQM8e/R/1oFehLaU/QSwWexK0CYQkrQURNGAxkKRJNh/tJpNdZzdJqSdB+uAxs7Ozb96Oot/dnj7q47OFaXZMy1RNs6Zt26quzdSHyVSdTJ/U8f1Y1TRd1i3LUufzuYzY28F4bhjGiSLwtrTfw4Twjy+PJ4TwLMt2jCLCw+Cbp4HD1+EaaylPkoTHcYx3kcwFBRzHMaSg7/uvDAtxRsuCUiiKAsqyhBLjZrMFmsdAExfCyAcoKaRpCqvVClzXxfuN6C2EoOd5Lyh3rBBClrwGINlfzPOcoRuGLllVVax5JxzPfgniFytsrr+bZ1zkguiIp/it7XZbTwXglFLegjEmBcMw1KRgEARLLHIUrkhCGJ4ZrmFHbGS4J0kc1rpie2gFa4doddFMLpCA0+Vu0J2MYqcoAi1ELkT2WDSCz1IQJ3/yAwB3akvBfr9/ORwOrweDQRd59Q928f1Nr9e7kIINjg5AZTQaKT+0smf7vT5VvwAAAABJRU5ErkJggg=='); 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=\"No timing data to display for the selected commit\"\n        title=\"\"\n        src=\"/static/no-timing-data-for-commit-63b2fb6298feecb179272c467020ed95-acf85.png\"\n        srcset=\"/static/no-timing-data-for-commit-63b2fb6298feecb179272c467020ed95-c1418.png 210w,\n/static/no-timing-data-for-commit-63b2fb6298feecb179272c467020ed95-5d5d8.png 420w,\n/static/no-timing-data-for-commit-63b2fb6298feecb179272c467020ed95-acf85.png 840w,\n/static/no-timing-data-for-commit-63b2fb6298feecb179272c467020ed95-53c76.png 1012w\"\n        sizes=\"(max-width: 840px) 100vw, 840px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<h2 id=\"deep-dive-video\"><a href=\"#deep-dive-video\" aria-hidden=\"true\" 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>Deep dive video </h2>\n<p>The following video demonstrates how the React profiler can be used to detect and improve performance bottlenecks in an actual React application.</p>\n<br>\n<div>\n          <div\n            class=\"gatsby-resp-iframe-wrapper\"\n            style=\"padding-bottom: 56.25%; position: relative; height: 0; overflow: hidden;\"\n          >\n            <iframe src=\"https://www.youtube-nocookie.com/embed/nySib7ipZdk?rel=0\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen style=\"\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n          \"></iframe>\n          </div>\n          </div>","excerpt":"React 16.5 adds support for a new DevTools profiler plugin.\nThis plugin uses React’s  experimental Profiler API  to collect timing information about each component that’s rendered in order to identify performance bottlenecks in React applications.\nIt will be fully compatible with our upcoming  time slicing and suspense  features. This blog post covers the following topics: Profiling an application Reading performance data Browsing commits Filtering commits Flame chart Ranked chart Component…","frontmatter":{"title":"Introducing the React Profiler","next":null,"prev":null,"author":[{"frontmatter":{"name":"Brian Vaughn","url":"https://github.com/bvaughn"}}]},"fields":{"date":"September 10, 2018","path":"content/blog/2018-09-10-introducing-the-react-profiler.md","slug":"/blog/2018/09/10/introducing-the-react-profiler.html"}},"allMarkdownRemark":{"edges":[{"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"}}},{"node":{"frontmatter":{"title":"React 16.x Roadmap"},"fields":{"slug":"/blog/2018/11/27/react-16-roadmap.html"}}},{"node":{"frontmatter":{"title":"React Conf recap: Hooks, Suspense, and Concurrent Rendering"},"fields":{"slug":"/blog/2018/11/13/react-conf-recap.html"}}},{"node":{"frontmatter":{"title":"React v16.6.0: lazy, memo and contextType"},"fields":{"slug":"/blog/2018/10/23/react-v-16-6.html"}}},{"node":{"frontmatter":{"title":"Create React App 2.0: Babel 7, Sass, and More"},"fields":{"slug":"/blog/2018/10/01/create-react-app-v2.html"}}},{"node":{"frontmatter":{"title":"Introducing the React Profiler"},"fields":{"slug":"/blog/2018/09/10/introducing-the-react-profiler.html"}}},{"node":{"frontmatter":{"title":"React v16.4.2: Server-side vulnerability fix"},"fields":{"slug":"/blog/2018/08/01/react-v-16-4-2.html"}}},{"node":{"frontmatter":{"title":"You Probably Don't Need Derived State"},"fields":{"slug":"/blog/2018/06/07/you-probably-dont-need-derived-state.html"}}}]}},"pageContext":{"slug":"/blog/2018/09/10/introducing-the-react-profiler.html"}}