{"id":13609,"date":"2021-11-06T17:00:33","date_gmt":"2021-11-06T17:00:33","guid":{"rendered":"https:\/\/engineering.lusha.com\/blog\/?p=13609"},"modified":"2021-11-23T07:31:23","modified_gmt":"2021-11-23T07:31:23","slug":"improve-performance-using-react-developer-tools","status":"publish","type":"post","link":"https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/","title":{"rendered":"Improve Performance using React Developer Tools"},"content":{"rendered":"<p>When React came on the scene it all of a sudden became easier to create complex frontend applications with minimum consideration for performance. This is all thanks to React&#8217;s virtual DOM, which manages our component tree and interacts with the browser&#8217;s DOM, adding, removing, or altering elements from it.<\/p>\n<p>Wait, this doesn&#8217;t mean that writing a React application will resolve and remove all performance issues. These issues come up as a result of misunderstandings of the component&#8217;s lifecycle, bad design, or writing complex components without optimizing them.<\/p>\n<p>React DevTools to the rescue \ud83d\ude80<\/p>\n<h2>Setting up<\/h2>\n<p>First thing first, make sure that on whatever browser you are using, React DevTools extension is installed.<br \/>\nOnce you&#8217;re all set up, let&#8217;s look at the example below.<\/p>\n<p>We are focusing on a simple project that pulls characters from the <a href=\"https:\/\/rickandmortyapi.com\/\" rel=\"nofollow noopener\" target=\"_blank\">Rick and Morty REST API<\/a> and presents them.<\/p>\n<p><img decoding=\"async\" class=\"wp-image-13613 alignnone\" src=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-20-at-19.35.06-300x136.png\" alt=\"\" width=\"1002\" height=\"454\" srcset=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-20-at-19.35.06-300x136.png 300w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-20-at-19.35.06-1024x464.png 1024w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-20-at-19.35.06-768x348.png 768w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-20-at-19.35.06-1536x696.png 1536w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/10\/Screen-Shot-2021-10-20-at-19.35.06.png 1915w\" sizes=\"(max-width: 1002px) 100vw, 1002px\" \/><\/p>\n<p>Let&#8217;s deep dive into the two main features that will help us understand how to improve our components.<\/p>\n<h2><strong>Components<\/strong><\/h2>\n<p>The Components tab presents the ability to watch and manipulate our React component tree.<br \/>\nClicking the Components tab under your browser&#8217;s dev tools will open the following window:<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-13771\" src=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.35.19-300x65.png\" alt=\"\" width=\"1002\" height=\"217\" srcset=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.35.19-300x65.png 300w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.35.19-1024x221.png 1024w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.35.19-768x166.png 768w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.35.19-1536x332.png 1536w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.35.19.png 1916w\" sizes=\"(max-width: 1002px) 100vw, 1002px\" \/><\/p>\n<p>Selecting a specific component from the component tree on the left panel will load the right one with relevant information and possible actions. In the right-hand side panel, you&#8217;ll be able to alter the component&#8217;s state and the component will react accordingly.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-13767\" src=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Recording-2021-11-22-at-19.25.25.gif\" alt=\"\" width=\"1000\" height=\"646\" \/><\/p>\n<p>To test and debug a specific component, make sure you get to know the icon buttons located on the top right-hand side.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-13675\" src=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-05-at-16.44.28.png\" alt=\"\" width=\"107\" height=\"36\" \/><\/p>\n<p>These buttons allow you to suspend a component (if you are using Suspense), focus on its DOM element, log the component data to the console or get to the component&#8217;s definition on your code.<\/p>\n<p>Great. Got it.<\/p>\n<p>But how does that help me optimize my components? And what do optimized components even look like?<\/p>\n<p>Let&#8217;s start with the basics: a component should be kept under 16ms, to fit today&#8217;s monitors that refresh at a rate of 60Hz (calculating milliseconds will be 1000\/60 = 16.66). Also, the human eye will perceive a good non-laggy animation when it has 60fps.<\/p>\n<p>Once we&#8217;ve got our component size right, let&#8217;s move on.<\/p>\n<h2><strong>Profiler<\/strong><\/h2>\n<p>Helps us locate pitfalls and points out areas in our program that need improving.<\/p>\n<h3>Settings<\/h3>\n<p>Before we dive in, let&#8217;s make sure that two options are checked under the React Developer Tools settings:<br \/>\n&#8211; <strong>Highlight updates when components render<\/strong> (General)<br \/>\n&#8211;\u00a0<strong>Record why each component rendered while<\/strong> <strong>profiling<\/strong> (Profiling)<\/p>\n<p>You&#8217;ll also find other settings such as filtering irrelevant components from the view, debugging options, and profiling options.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-13683\" src=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-06-at-12.26.24-300x113.png\" alt=\"\" width=\"419\" height=\"158\" srcset=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-06-at-12.26.24-300x113.png 300w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-06-at-12.26.24.png 410w\" sizes=\"(max-width: 419px) 100vw, 419px\" \/><\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-13682\" src=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-06-at-12.26.08-300x72.png\" alt=\"\" width=\"417\" height=\"100\" srcset=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-06-at-12.26.08-300x72.png 300w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-06-at-12.26.08.png 410w\" sizes=\"(max-width: 417px) 100vw, 417px\" \/><\/p>\n<p>Now, the browser will highlight the components that are being rerendered whenever we are interacting with our application.<\/p>\n<p><img decoding=\"async\" class=\"wp-image-13679 alignnone\" src=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/blog-component-highlights.gif\" alt=\"\" width=\"1001\" height=\"501\" \/><\/p>\n<p>We can already see that clicking on a component will affect that component alone, but the actual result is that all the other components are being rendered as well.<\/p>\n<h3>Profiling<\/h3>\n<p>Profiling your application means that you can record your component tree behavior for a required period of time and see how they performed.<\/p>\n<p>Let&#8217;s click on a result once again but this time profile it.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-13687\" src=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/blog-profiling.gif\" alt=\"\" width=\"1002\" height=\"531\" \/><\/p>\n<p>What we are seeing here is a graph of our components that were affected by this action.<\/p>\n<p>Next to each, we see the total time that the render took (including the render time of its children).<br \/>\nThere are two possible views:<br \/>\n&#8211; <strong>Flamegraph &#8211;<\/strong>\u00a0shows us the rendering timeline.<br \/>\n&#8211; <strong>Ranked &#8211;<\/strong>\u00a0order the components by render time.<\/p>\n<p>In the example above, we can see the entire App component took about 200ms to render. Way too long for our taste. So let&#8217;s try something else.<\/p>\n<p>In order to understand how to improve performance, you&#8217;ll have to know the code.<br \/>\nLet&#8217;s look at three components of this code: <code>App<\/code>, <code>Results<\/code>, and <code>Result<\/code>.<\/p>\n<script src=\"https:\/\/gist.github.com\/1cf33c2cd83c6db9e9e2384924f0d211.js\"><\/script>\n<h3>Memoizing callbacks<\/h3>\n<p>Awesome! You&#8217;re all caught up.<br \/>\nAfter profiling, we can hover\/click on a component, and there we will see the &#8220;<strong>why did this render?&#8221;<\/strong> section.<br \/>\nWe can tell that the cause of all the Result renders is the onClick prop that is passing all the way from our App component.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-13765\" src=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.19.10-300x57.png\" alt=\"\" width=\"1000\" height=\"190\" srcset=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.19.10-300x57.png 300w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.19.10-1024x195.png 1024w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.19.10-768x146.png 768w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.19.10.png 1517w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>As we know, the <code>selectCharacter<\/code> function, declared on the App component will be recreated on each rerender. (read up on <a href=\"https:\/\/reactjs.org\/docs\/state-and-lifecycle.html\" rel=\"nofollow noopener\" target=\"_blank\">React component lifecycle<\/a> and <a href=\"https:\/\/reactjs.org\/docs\/hooks-intro.html\" rel=\"nofollow noopener\" target=\"_blank\">React hooks<\/a> if you don&#8217;t know the reason).<br \/>\nWe need to tell React not to recreate this function each time, it has no dependencies that need to be changed and is not using any closure.<\/p>\n<p>Lucky for us React has a built-in hook called <code>useCallback<\/code> that will do just that.<br \/>\nRewriting the function declaration will lead us to:<\/p>\n<script src=\"https:\/\/gist.github.com\/25074214d045e57f7808856bcc073fa2.js\"><\/script>\n<p>But wait, even after that we don&#8217;t see any significant improvement in our rendering time.<br \/>\nThe Result components are all being rendered again but this time the reason is different. This time the parent component was rerendered as well (notice that the App component state was changed and that triggered the rendering).<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-13763\" src=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.10.26-300x57.png\" alt=\"\" width=\"1000\" height=\"190\" srcset=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.10.26-300x57.png 300w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.10.26-1024x195.png 1024w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.10.26-768x146.png 768w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.10.26.png 1517w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<h3>Memoizing values<\/h3>\n<p>To fix that we need to make our Results component a <a href=\"https:\/\/reactjs.org\/docs\/react-api.html#reactpurecomponent\" rel=\"nofollow noopener\" target=\"_blank\">Pure Component<\/a> in our case we will achieve that using <code>React.memo<\/code>, and wrapping both Results and Result components.<br \/>\nBy doing so we are telling react to trigger the component&#8217;s render only if its state or props changed.<\/p>\n<script src=\"https:\/\/gist.github.com\/ce9935885b9695c156866987f8f81561.js\"><\/script>\n<p>Profiling our app again, we&#8217;ll see a significant change in our performance. Finally!<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-13761\" src=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.06.52-300x57.png\" alt=\"\" width=\"1000\" height=\"190\" srcset=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.06.52-300x57.png 300w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.06.52-1024x195.png 1024w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.06.52-768x146.png 768w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.06.52.png 1517w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Now, we can see that the Chart that we are generating is also being rerendered.<br \/>\nThat&#8217;s because looking at our code we see that the <code>chartData<\/code> is being calculated on each render.<br \/>\nTo fix that we have another built-in hook called <code>useMemo<\/code> that allows us to define variables that are memoized and will be changed only when their dependencies are being changed.<\/p>\n<script src=\"https:\/\/gist.github.com\/89be99abf3a23a928b78d0ec47dfc695.js\"><\/script>\n<p><img decoding=\"async\" class=\"alignnone wp-image-13759\" src=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.05.24-300x57.png\" alt=\"\" width=\"1000\" height=\"190\" srcset=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.05.24-300x57.png 300w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.05.24-1024x195.png 1024w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.05.24-768x146.png 768w, https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-22-at-19.05.24.png 1517w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Our profiling result is much much better, we can also add <code>React.memo<\/code> to our <code>ResultsChart<\/code> so it won&#8217;t be affected every time the App is being rendered.<\/p>\n<h2>Summary<\/h2>\n<p>The React Developer Tools helps us understand our app lifecycle a bit better and might help in fixing performance issues.<br \/>\nFor that reason alone, consider profiling your app every now and again to get the best user experience that your application can provide.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When React came on the scene it all of a sudden became easier to create complex frontend applications with minimum consideration for performance. This is all thanks to React&#8217;s virtual DOM, which manages our component tree and interacts with the browser&#8217;s DOM, adding, removing, or altering elements from it. Wait, this doesn&#8217;t mean that writing [&hellip;]<\/p>\n","protected":false},"author":58,"featured_media":13717,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[110,145],"tags":[147,112,148,146],"class_list":["post-13609","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-performance","category-react","tag-developer-tools","tag-javascript","tag-performance","tag-react"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Improve Performance using React Developer Tools - Lusha Engineering Blog<\/title>\n<meta name=\"description\" content=\"Getting to know the React Developer Tools, alter your components on real time and profile them to gain better performance.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Improve Performance using React Developer Tools - Lusha Engineering Blog\" \/>\n<meta property=\"og:description\" content=\"Getting to know the React Developer Tools, alter your components on real time and profile them to gain better performance.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/\" \/>\n<meta property=\"og:site_name\" content=\"Lusha Engineering Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/LushaData\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-06T17:00:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-23T07:31:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Improve-performance-using-React-Developer-Tools.png\" \/>\n\t<meta property=\"og:image:width\" content=\"996\" \/>\n\t<meta property=\"og:image:height\" content=\"560\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Alon Cohen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@lushadata\" \/>\n<meta name=\"twitter:site\" content=\"@lushadata\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alon Cohen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/improve-performance-using-react-developer-tools\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/improve-performance-using-react-developer-tools\\\/\"},\"author\":{\"name\":\"Alon Cohen\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#\\\/schema\\\/person\\\/4d47a35aa2f12b199fe82db703dc7350\"},\"headline\":\"Improve Performance using React Developer Tools\",\"datePublished\":\"2021-11-06T17:00:33+00:00\",\"dateModified\":\"2021-11-23T07:31:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/improve-performance-using-react-developer-tools\\\/\"},\"wordCount\":1061,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/improve-performance-using-react-developer-tools\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/engineering.lusha.com\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/Improve-performance-using-React-Developer-Tools.png\",\"keywords\":[\"Developer Tools\",\"javascript\",\"performance\",\"React\"],\"articleSection\":[\"Performance\",\"React\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/improve-performance-using-react-developer-tools\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/improve-performance-using-react-developer-tools\\\/\",\"url\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/improve-performance-using-react-developer-tools\\\/\",\"name\":\"Improve Performance using React Developer Tools - Lusha Engineering Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/improve-performance-using-react-developer-tools\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/improve-performance-using-react-developer-tools\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/engineering.lusha.com\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/Improve-performance-using-React-Developer-Tools.png\",\"datePublished\":\"2021-11-06T17:00:33+00:00\",\"dateModified\":\"2021-11-23T07:31:23+00:00\",\"description\":\"Getting to know the React Developer Tools, alter your components on real time and profile them to gain better performance.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/improve-performance-using-react-developer-tools\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/improve-performance-using-react-developer-tools\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/improve-performance-using-react-developer-tools\\\/#primaryimage\",\"url\":\"https:\\\/\\\/engineering.lusha.com\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/Improve-performance-using-React-Developer-Tools.png\",\"contentUrl\":\"https:\\\/\\\/engineering.lusha.com\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/Improve-performance-using-React-Developer-Tools.png\",\"width\":996,\"height\":560},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/improve-performance-using-react-developer-tools\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Improve Performance using React Developer Tools\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/\",\"name\":\"Lusha Engineering Blog\",\"description\":\"Search less. Sell more.\",\"publisher\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#organization\",\"name\":\"Lusha\",\"url\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/engineering.lusha.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/cropped-fav.png\",\"contentUrl\":\"https:\\\/\\\/engineering.lusha.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/cropped-fav.png\",\"width\":512,\"height\":512,\"caption\":\"Lusha\"},\"image\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/LushaData\\\/\",\"https:\\\/\\\/x.com\\\/lushadata\",\"https:\\\/\\\/www.instagram.com\\\/lifeatlusha\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/lushadata\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCZNqzgRZFBub6WJxeaQcxUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#\\\/schema\\\/person\\\/4d47a35aa2f12b199fe82db703dc7350\",\"name\":\"Alon Cohen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c3cca58c73a9d4a8da4336c5e463cf3a877f4610b4ea3e8a2f361a9039c3f8aa?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c3cca58c73a9d4a8da4336c5e463cf3a877f4610b4ea3e8a2f361a9039c3f8aa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c3cca58c73a9d4a8da4336c5e463cf3a877f4610b4ea3e8a2f361a9039c3f8aa?s=96&d=mm&r=g\",\"caption\":\"Alon Cohen\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/alon-cohen-39922a128\\\/\"],\"url\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/author\\\/alon\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Improve Performance using React Developer Tools - Lusha Engineering Blog","description":"Getting to know the React Developer Tools, alter your components on real time and profile them to gain better performance.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/","og_locale":"en_US","og_type":"article","og_title":"Improve Performance using React Developer Tools - Lusha Engineering Blog","og_description":"Getting to know the React Developer Tools, alter your components on real time and profile them to gain better performance.","og_url":"https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/","og_site_name":"Lusha Engineering Blog","article_publisher":"https:\/\/www.facebook.com\/LushaData\/","article_published_time":"2021-11-06T17:00:33+00:00","article_modified_time":"2021-11-23T07:31:23+00:00","og_image":[{"width":996,"height":560,"url":"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Improve-performance-using-React-Developer-Tools.png","type":"image\/png"}],"author":"Alon Cohen","twitter_card":"summary_large_image","twitter_creator":"@lushadata","twitter_site":"@lushadata","twitter_misc":{"Written by":"Alon Cohen","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/#article","isPartOf":{"@id":"https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/"},"author":{"name":"Alon Cohen","@id":"https:\/\/engineering.lusha.com\/blog\/#\/schema\/person\/4d47a35aa2f12b199fe82db703dc7350"},"headline":"Improve Performance using React Developer Tools","datePublished":"2021-11-06T17:00:33+00:00","dateModified":"2021-11-23T07:31:23+00:00","mainEntityOfPage":{"@id":"https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/"},"wordCount":1061,"commentCount":0,"publisher":{"@id":"https:\/\/engineering.lusha.com\/blog\/#organization"},"image":{"@id":"https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/#primaryimage"},"thumbnailUrl":"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Improve-performance-using-React-Developer-Tools.png","keywords":["Developer Tools","javascript","performance","React"],"articleSection":["Performance","React"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/","url":"https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/","name":"Improve Performance using React Developer Tools - Lusha Engineering Blog","isPartOf":{"@id":"https:\/\/engineering.lusha.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/#primaryimage"},"image":{"@id":"https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/#primaryimage"},"thumbnailUrl":"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Improve-performance-using-React-Developer-Tools.png","datePublished":"2021-11-06T17:00:33+00:00","dateModified":"2021-11-23T07:31:23+00:00","description":"Getting to know the React Developer Tools, alter your components on real time and profile them to gain better performance.","breadcrumb":{"@id":"https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/#primaryimage","url":"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Improve-performance-using-React-Developer-Tools.png","contentUrl":"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/11\/Improve-performance-using-React-Developer-Tools.png","width":996,"height":560},{"@type":"BreadcrumbList","@id":"https:\/\/engineering.lusha.com\/blog\/improve-performance-using-react-developer-tools\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/engineering.lusha.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Improve Performance using React Developer Tools"}]},{"@type":"WebSite","@id":"https:\/\/engineering.lusha.com\/blog\/#website","url":"https:\/\/engineering.lusha.com\/blog\/","name":"Lusha Engineering Blog","description":"Search less. Sell more.","publisher":{"@id":"https:\/\/engineering.lusha.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/engineering.lusha.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/engineering.lusha.com\/blog\/#organization","name":"Lusha","url":"https:\/\/engineering.lusha.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/engineering.lusha.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/07\/cropped-fav.png","contentUrl":"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/07\/cropped-fav.png","width":512,"height":512,"caption":"Lusha"},"image":{"@id":"https:\/\/engineering.lusha.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/LushaData\/","https:\/\/x.com\/lushadata","https:\/\/www.instagram.com\/lifeatlusha","https:\/\/www.linkedin.com\/company\/lushadata","https:\/\/www.youtube.com\/channel\/UCZNqzgRZFBub6WJxeaQcxUQ"]},{"@type":"Person","@id":"https:\/\/engineering.lusha.com\/blog\/#\/schema\/person\/4d47a35aa2f12b199fe82db703dc7350","name":"Alon Cohen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c3cca58c73a9d4a8da4336c5e463cf3a877f4610b4ea3e8a2f361a9039c3f8aa?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c3cca58c73a9d4a8da4336c5e463cf3a877f4610b4ea3e8a2f361a9039c3f8aa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c3cca58c73a9d4a8da4336c5e463cf3a877f4610b4ea3e8a2f361a9039c3f8aa?s=96&d=mm&r=g","caption":"Alon Cohen"},"sameAs":["https:\/\/www.linkedin.com\/in\/alon-cohen-39922a128\/"],"url":"https:\/\/engineering.lusha.com\/blog\/author\/alon\/"}]}},"_links":{"self":[{"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/posts\/13609","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/users\/58"}],"replies":[{"embeddable":true,"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/comments?post=13609"}],"version-history":[{"count":11,"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/posts\/13609\/revisions"}],"predecessor-version":[{"id":13778,"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/posts\/13609\/revisions\/13778"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/media\/13717"}],"wp:attachment":[{"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/media?parent=13609"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/categories?post=13609"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/tags?post=13609"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}