{"id":1322,"date":"2022-02-24T21:49:38","date_gmt":"2022-02-24T21:49:38","guid":{"rendered":"https:\/\/mobileaders.com\/?p=1322"},"modified":"2022-02-24T22:35:12","modified_gmt":"2022-02-24T22:35:12","slug":"improve-performance-and-reduce-reflow-repaint","status":"publish","type":"post","link":"https:\/\/mobileaders.com\/?p=1322","title":{"rendered":"Improve Performance and\u00a0Reduce Reflow Repaint"},"content":{"rendered":"\n<p>Recently I came to know about Reflow and Repaint, how they affect web performance, so I writing this post to give insights about Reflow, Repaints, and how all of this affects our performance and reopen our series about <a href=\"https:\/\/mobileaders.com\/2022\/02\/07\/minimize-code-duplication\/\">minimizing code<\/a>.<\/p>\n\n\n\n<p style=\"font-size:30px\"><strong>Critical rendering path<\/strong><\/p>\n\n\n\n<p>The Critical Rendering Path is the sequence of steps the browser goes through to convert the HTML, CSS, and JavaScript into pixels on the screen. Optimizing the critical render path improves render performance. The critical rendering path includes the&nbsp;Document Object Model&nbsp;(DOM),&nbsp;CSS Object Model&nbsp;(CSSOM), render tree, and layout.<br><\/p>\n\n\n\n<p>The document object model is created as the HTML is parsed. The HTML may request JavaScript, which may, in turn, alter the DOM. The HTML includes or makes requests for styles, which in turn builds the CSS object model. The browser engine combines the two to create the Render Tree. Layout determines the size and location of everything on the page. Once the layout is determined, pixels are painted on the screen.<\/p>\n\n\n\n<p>Optimizing the critical rendering path improves the time to first render. Understanding and optimizing the critical rendering path is important to ensure reflows and repaints can happen at 60 frames per second, to ensure performant user interactions and avoid jank.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"306\" src=\"https:\/\/mobileaders.com\/wp-content\/uploads\/2022\/02\/1620081747-5e7ca92113d3d_articlex.png\" alt=\"\" class=\"wp-image-1327\" srcset=\"https:\/\/mobileaders.com\/wp-content\/uploads\/2022\/02\/1620081747-5e7ca92113d3d_articlex.png 800w, https:\/\/mobileaders.com\/wp-content\/uploads\/2022\/02\/1620081747-5e7ca92113d3d_articlex-300x115.png 300w, https:\/\/mobileaders.com\/wp-content\/uploads\/2022\/02\/1620081747-5e7ca92113d3d_articlex-768x294.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption>CRP<\/figcaption><\/figure>\n\n\n\n<p style=\"font-size:30px\"><strong>Document Object Model<\/strong> (DOM)<\/p>\n\n\n\n<p>DOM is incremental. the HTML response tun into tokens which turn into nodes which turn into DOM tree, single DOM starts tag token and end tag token. DOM is connected based on hierarchy.&nbsp;If another set of start tags and end tag tokens come between a set of start tags and end tags,&nbsp;you have a node inside a node, which is how we define the hierarchy of the DOM tree.<br>The greater the number of nodes, the longer the following events in the critical rendering path will take. Measure! A few extra nodes won&#8217;t make a difference, but divitis can lead to jank.<\/p>\n\n\n\n<p style=\"font-size:30px\"><strong>CSS Object Model<\/strong> (CSSOM)<\/p>\n\n\n\n<p>The DOM contains all the content of the page. The CSSOM contains all the styles of the page,&nbsp;information on how to style that DOM.&nbsp;CSSOM is like DOM but it&#8217;s different in CSS is <br>render-blocking, the browser blocks page rendering until it receives and processes all of the CSS. CSS is render-blocking because rules can be overwritten, so the content can&#8217;t be rendered until the CSSOM is complete.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mobileaders.com\/wp-content\/uploads\/2022\/01\/1_OXwiMP0SKoXcjWqrlskDgw.gif\" alt=\"\" class=\"wp-image-1230\" width=\"573\" height=\"420\" \/><\/figure>\n\n\n\n<p style=\"font-size:30px\"><strong>Render Tree<\/strong><\/p>\n\n\n\n<p>render tree captures both content (DOM) and style of the page (CSSOM), combine into a render tree, and to construct the render tree, the browser checks every node, starting from the root of the DOM tree, and determines which CSS rules are attached.<br>render tree captures visible content and content that is not visible not included in the render tree, not visible&nbsp;content like (meta,&nbsp;script,&nbsp;link) and&nbsp;display: none&nbsp;are omitted from the render tree.<\/p>\n\n\n\n<p style=\"font-size:30px\"><strong>Layout<\/strong><\/p>\n\n\n\n<p>Once the render tree is built, the layout becomes possible. The layout is dependent on the size of the screen. The layout step determines where and how the elements are positioned on the page, determining the width and height of each element, and where they are in relation to each other.<br>Layout performance is impacted by the DOM &#8212; the greater the number of nodes, the longer layout takes. The layout can become a bottleneck, leading to a jank if required during scrolling or other animations. While a 20ms delay on load or orientation change may be fine, it will lead to a jank on animation or scroll. Any time the render tree is modified, such as by added nodes, altered content, or updated box model styles on a node, layout occurs. to reduce the frequency and duration of layout events, batch updates and avoid animating box model properties.<\/p>\n\n\n\n<p style=\"font-size:30px\"><strong>Paint<\/strong><\/p>\n\n\n\n<p>finally, paint is the last step in CRP is responsible for painting the pixels to the screen. Once the render tree is created and the layout occurs, the pixels can be painted on the screen. Onload, the entire screen is painted. After that, only impacted areas of the screen will be repainted, as browsers are optimized to repaint the minimum area required. Paint time depends on what kind of updates are being applied to the render tree<\/p>\n\n\n\n<p>for this time I hope you understand what is CRP  and how it&#8217;s working in the next section I will talk about what repaint and reflow, I know that I have not explained what is reflow so <\/p>\n\n\n\n<p style=\"font-size:30px\"><strong>what is Reflow<\/strong> <\/p>\n\n\n\n<p>A&nbsp;reflow&nbsp;computes the layout of the page. A reflow on an element recomputes the dimensions and position of the element, and it also triggers further reflows on that element\u2019s children, ancestors, and elements that appear after it in the DOM. Then it calls a final repaint. Reflowing is very expensive, but unfortunately, it can be triggered easily.<br><\/p>\n\n\n\n<p>Reflow occurs when you:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>insert, remove or update an element in the DOM<\/li><li>modify content on the page, e.g. the text in an input box<\/li><li>move a DOM element<\/li><li>animate a DOM element<\/li><li>change a CSS style<\/li><li>add or remove a stylesheet<\/li><li>resize window<\/li><\/ul>\n\n\n\n<p style=\"font-size:30px\"><strong>Repaint<\/strong><\/p>\n\n\n\n<p>A&nbsp;repaint&nbsp;occurs when changes are made to an element&#8217;s skin that changes visibly but does not affect its layout. examples of this include&nbsp;outline,&nbsp;visibility,&nbsp;background, or&nbsp;color. repaint is expensive because the browser must verify the visibility of all other nodes in the DOM tree.<\/p>\n\n\n\n<p style=\"font-size:30px\"><strong>What triggers a reflow or a repaint<\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size\">Anything that changes input information used to construct the rendering tree can cause a repaint or a reflow, for example:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Adding, removing, updating DOM nodes<\/li><li>Hiding a DOM node with&nbsp;<code>display: none<\/code>&nbsp;(reflow and repaint) or<code>visibility: hidden<\/code>&nbsp;(repaint only, because no geometry changes)<\/li><li>Moving, animating a DOM node on the page<\/li><li>Adding a stylesheet, tweaking style properties<\/li><\/ul>\n\n\n\n<p style=\"font-size:30px\"><strong>Browsers are smart<\/strong><\/p>\n\n\n\n<p>Since the reflows and repaints associated with render tree changes are expensive, the browsers aim at reducing the negative effects. One strategy is to simply not do the work. Or not right now, at least. The browser will set up a queue of the changes your scripts require and perform them in batches. This way several changes that each require a reflow will be combined and only one reflow will be computed. Browsers can add to the queued changes and then flush the queue once a certain amount of time passes or a certain number of changes is reached.<\/p>\n\n\n\n<p>But sometimes the script may prevent the browser from optimizing the reflows, and cause it to flush the queue and perform all batched changes. This happens when you request style information, such as<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><code>offsetTop<\/code>,&nbsp;<code>offsetLeft<\/code>,&nbsp;<code>offsetWidth<\/code>,&nbsp;<code>offsetHeight<\/code><\/li><li><code>scrollTop<\/code>\/Left\/Width\/Height<\/li><li><code>clientTop<\/code>\/Left\/Width\/Height<\/li><li><code>getComputedStyle()<\/code>, or&nbsp;<code>currentStyle<\/code>&nbsp;in IE<\/li><\/ol>\n\n\n\n<p>All of these above are essentially requesting style information about a node, and any time you do it, the browser has to give&nbsp;you the most up-to-date value. In order to do so, it needs to apply all scheduled changes, flush the queue, bite the bullet, and do the reflow.<br>for example, it&#8217;s a bad idea to set and get styles in quick succession (in a loop), like:<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>el.style.left = el.offsetLeft + 10 + \"px\";<\/code><\/pre>\n\n\n\n<p style=\"font-size:30px\"><strong>Minimizing repaints and reflows<\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size\">The strategy to reduce the negative effects of reflows\/repaints on the user experience is to simply have fewer reflows and repaints and fewer requests for style information, so the browser can optimize reflows. How to go about that?<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Don&#8217;t change individual styles, one by one. Best for sanity and maintainability is to change the class names not the styles. But that assumes static styles. If the styles are dynamic, edit the&nbsp;<code><strong>cssText<\/strong><\/code> property as opposed to touching the element and its style property for every little change.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ bad\nvar left = 10,\n    top = 10;\nel.style.left = left + \"px\";\nel.style.top  = top  + \"px\";\n \n\/\/ better \nel.className += \" theclassname\";\n \n\/\/ or when top and left are calculated dynamically...\n \n\/\/ better\nel.style.cssText += \"; left: \" + left + \"px; top: \" + top + \"px;\";<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Batch DOM changes and perform them &#8220;offline&#8221;. Offline means not in the live DOM tree. You can:<ul><li>use a&nbsp;<code><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/DocumentFragment\">documentFragment<\/a><\/code>&nbsp;to hold temp changes,<\/li><\/ul><ul><li>clone the node you&#8217;re about to update, work on the copy, then swap the original with the updated clone<\/li><li>hide the element with&nbsp;<code>display: none<\/code>&nbsp;(1 reflow, repaint), add 100 changes, restore the display (another reflow, repaint). This way you trade 2 reflows for potentially a hundred<\/li><\/ul><\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li>In general, think about the render tree and how much of it will need revalidation after your change. For example using absolute positioning<strong>  <code>position: absolute;<\/code>\u00a0 or \u00a0<code>position: fixed;<\/code><\/strong> makes that element a child of the body in the render tree, so it won&#8217;t affect too many other nodes when you animate it for example. Some of the other nodes may be in the area that needs repainting when you place your element on top of them, but they will not require reflow.<\/li><li>Avoid setting multiple inline styles; avoid setting styles individually.\u00a0These trigger a reflow for<em>\u00a0each<\/em>\u00a0dynamic style change.<\/li><li>Use classNames of elements, and do so as low in the DOM tree as possible.\u00a0\u00a0Changing the class attribute lets you apply multiple styles to an element with a single reflow. \u00a0But since this reflows all the element\u2019s children, that means you don\u2019t want to change the class on a wrapper div if you\u2019re only targeting its first child.<br><\/li><\/ul>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Gecko Reflow Visualization - Wikipedia\" width=\"640\" height=\"480\" src=\"https:\/\/www.youtube.com\/embed\/dndeRnzkJDU?start=1&#038;feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>in the end all of this, I&#8217;ve read about in the last period and love to share if you have any options, opinion anythings pls write it in the comments<\/p>\n\n\n\n<p style=\"font-size:30px\"><strong>Resources <\/strong><\/p>\n\n\n\n<p style=\"font-size:30px\"><a href=\"https:\/\/www.sitepoint.com\/10-ways-minimize-reflows-improve-performance\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.sitepoint.com\/10-ways-minimize-reflows-improve-performance\/<br><\/a><a href=\"https:\/\/www.udacity.com\/course\/browser-rendering-optimization--ud860\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.udacity.com\/course\/browser-rendering-optimization&#8211;ud860<br><\/a><a href=\"https:\/\/gist.github.com\/faressoft\/36cdd64faae21ed22948b458e6bf04d5\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/gist.github.com\/faressoft\/36cdd64faae21ed22948b458e6bf04d5<br><\/a><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Learn\/Performance\/CSS\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/developer.mozilla.org\/en-US\/docs\/Learn\/Performance\/CSS<\/a><\/p>\n\n\n\n<p style=\"font-size:30px\"><a href=\"https:\/\/gist.github.com\/paulirish\/5d52fb081b3570c81e3a\">https:\/\/gist.github.com\/paulirish\/5d52fb081b3570c81e3a<br><\/a><strong><br><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recently I came to know about Reflow and Repaint, how they affect web performance, so I writing this post to give insights about Reflow, Repaints, and how all of this affects our performance and reopen our series about minimizing code. Critical rendering path The Critical Rendering Path is the sequence of steps the browser goes [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1323,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[20,19],"tags":[],"class_list":["post-1322","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-front-end","category-web-design"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Improve Performance and\u00a0Reduce Reflow Repaint - Mobileaders Front End<\/title>\n<meta name=\"description\" content=\"Despite web pages reaching 2MB performance remains a hot topic. The slicker your application, the better the user experience and the higher the conversion rate!\" \/>\n<meta name=\"robots\" content=\"noindex, follow\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Improve Performance and\u00a0Reduce Reflow Repaint\" \/>\n<meta property=\"og:description\" content=\"Despite web pages reaching 2MB performance remains a hot topic. The slicker your application, the better the user experience and the higher the conversion rate!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/mobileaders.com\/?p=1322\" \/>\n<meta property=\"og:site_name\" content=\"Mobileaders\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/mobileaders\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-24T21:49:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-02-24T22:35:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/mobileaders.com\/wp-content\/uploads\/2022\/02\/0_vJsbJ295o-fr1M65.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Improve Performance and\u00a0Reduce Reflow Repaint\" \/>\n<meta name=\"twitter:description\" content=\"Despite web pages reaching 2MB performance remains a hot topic. The slicker your application, the better the user experience and the higher the conversion rate!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/mobileaders.com\/wp-content\/uploads\/2022\/02\/0_vJsbJ295o-fr1M65.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@mobileaders\" \/>\n<meta name=\"twitter:site\" content=\"@mobileaders\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/mobileaders.com\/?p=1322#article\",\"isPartOf\":{\"@id\":\"https:\/\/mobileaders.com\/?p=1322\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Improve Performance and\u00a0Reduce Reflow Repaint\",\"datePublished\":\"2022-02-24T21:49:38+00:00\",\"dateModified\":\"2022-02-24T22:35:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/mobileaders.com\/?p=1322\"},\"wordCount\":1611,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/mobileaders.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/mobileaders.com\/?p=1322#primaryimage\"},\"thumbnailUrl\":\"https:\/\/mobileaders.com\/wp-content\/uploads\/2022\/02\/0_vJsbJ295o-fr1M65.jpeg\",\"articleSection\":[\"Front End\",\"Web Design\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/mobileaders.com\/?p=1322#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/mobileaders.com\/?p=1322\",\"url\":\"https:\/\/mobileaders.com\/?p=1322\",\"name\":\"Improve Performance and\u00a0Reduce Reflow Repaint - Mobileaders Front End\",\"isPartOf\":{\"@id\":\"https:\/\/mobileaders.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/mobileaders.com\/?p=1322#primaryimage\"},\"image\":{\"@id\":\"https:\/\/mobileaders.com\/?p=1322#primaryimage\"},\"thumbnailUrl\":\"https:\/\/mobileaders.com\/wp-content\/uploads\/2022\/02\/0_vJsbJ295o-fr1M65.jpeg\",\"datePublished\":\"2022-02-24T21:49:38+00:00\",\"dateModified\":\"2022-02-24T22:35:12+00:00\",\"description\":\"Despite web pages reaching 2MB performance remains a hot topic. The slicker your application, the better the user experience and the higher the conversion rate!\",\"breadcrumb\":{\"@id\":\"https:\/\/mobileaders.com\/?p=1322#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/mobileaders.com\/?p=1322\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/mobileaders.com\/?p=1322#primaryimage\",\"url\":\"https:\/\/mobileaders.com\/wp-content\/uploads\/2022\/02\/0_vJsbJ295o-fr1M65.jpeg\",\"contentUrl\":\"https:\/\/mobileaders.com\/wp-content\/uploads\/2022\/02\/0_vJsbJ295o-fr1M65.jpeg\",\"width\":1200,\"height\":800},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/mobileaders.com\/?p=1322#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/mobileaders.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Improve Performance and\u00a0Reduce Reflow Repaint\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/mobileaders.com\/#website\",\"url\":\"https:\/\/mobileaders.com\/\",\"name\":\"Mobileaders\",\"description\":\"Leaders of Mobile Development!\",\"publisher\":{\"@id\":\"https:\/\/mobileaders.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/mobileaders.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/mobileaders.com\/#organization\",\"name\":\"mobileaders\",\"url\":\"https:\/\/mobileaders.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/mobileaders.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/mobileaders.com\/wp-content\/uploads\/2021\/12\/Logo-White-Background.png\",\"contentUrl\":\"https:\/\/mobileaders.com\/wp-content\/uploads\/2021\/12\/Logo-White-Background.png\",\"width\":1280,\"height\":720,\"caption\":\"mobileaders\"},\"image\":{\"@id\":\"https:\/\/mobileaders.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/mobileaders\",\"https:\/\/x.com\/mobileaders\",\"https:\/\/www.instagram.com\/mobileaders\",\"https:\/\/www.linkedin.com\/company\/mobileaders\"]},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Improve Performance and\u00a0Reduce Reflow Repaint - Mobileaders Front End","description":"Despite web pages reaching 2MB performance remains a hot topic. The slicker your application, the better the user experience and the higher the conversion rate!","robots":{"index":"noindex","follow":"follow"},"og_locale":"en_US","og_type":"article","og_title":"Improve Performance and\u00a0Reduce Reflow Repaint","og_description":"Despite web pages reaching 2MB performance remains a hot topic. The slicker your application, the better the user experience and the higher the conversion rate!","og_url":"https:\/\/mobileaders.com\/?p=1322","og_site_name":"Mobileaders","article_publisher":"https:\/\/www.facebook.com\/mobileaders","article_published_time":"2022-02-24T21:49:38+00:00","article_modified_time":"2022-02-24T22:35:12+00:00","og_image":[{"width":1200,"height":800,"url":"https:\/\/mobileaders.com\/wp-content\/uploads\/2022\/02\/0_vJsbJ295o-fr1M65.jpeg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_title":"Improve Performance and\u00a0Reduce Reflow Repaint","twitter_description":"Despite web pages reaching 2MB performance remains a hot topic. The slicker your application, the better the user experience and the higher the conversion rate!","twitter_image":"https:\/\/mobileaders.com\/wp-content\/uploads\/2022\/02\/0_vJsbJ295o-fr1M65.jpeg","twitter_creator":"@mobileaders","twitter_site":"@mobileaders","twitter_misc":{"Written by":"","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mobileaders.com\/?p=1322#article","isPartOf":{"@id":"https:\/\/mobileaders.com\/?p=1322"},"author":{"name":"","@id":""},"headline":"Improve Performance and\u00a0Reduce Reflow Repaint","datePublished":"2022-02-24T21:49:38+00:00","dateModified":"2022-02-24T22:35:12+00:00","mainEntityOfPage":{"@id":"https:\/\/mobileaders.com\/?p=1322"},"wordCount":1611,"commentCount":0,"publisher":{"@id":"https:\/\/mobileaders.com\/#organization"},"image":{"@id":"https:\/\/mobileaders.com\/?p=1322#primaryimage"},"thumbnailUrl":"https:\/\/mobileaders.com\/wp-content\/uploads\/2022\/02\/0_vJsbJ295o-fr1M65.jpeg","articleSection":["Front End","Web Design"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/mobileaders.com\/?p=1322#respond"]}]},{"@type":"WebPage","@id":"https:\/\/mobileaders.com\/?p=1322","url":"https:\/\/mobileaders.com\/?p=1322","name":"Improve Performance and\u00a0Reduce Reflow Repaint - Mobileaders Front End","isPartOf":{"@id":"https:\/\/mobileaders.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/mobileaders.com\/?p=1322#primaryimage"},"image":{"@id":"https:\/\/mobileaders.com\/?p=1322#primaryimage"},"thumbnailUrl":"https:\/\/mobileaders.com\/wp-content\/uploads\/2022\/02\/0_vJsbJ295o-fr1M65.jpeg","datePublished":"2022-02-24T21:49:38+00:00","dateModified":"2022-02-24T22:35:12+00:00","description":"Despite web pages reaching 2MB performance remains a hot topic. The slicker your application, the better the user experience and the higher the conversion rate!","breadcrumb":{"@id":"https:\/\/mobileaders.com\/?p=1322#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/mobileaders.com\/?p=1322"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/mobileaders.com\/?p=1322#primaryimage","url":"https:\/\/mobileaders.com\/wp-content\/uploads\/2022\/02\/0_vJsbJ295o-fr1M65.jpeg","contentUrl":"https:\/\/mobileaders.com\/wp-content\/uploads\/2022\/02\/0_vJsbJ295o-fr1M65.jpeg","width":1200,"height":800},{"@type":"BreadcrumbList","@id":"https:\/\/mobileaders.com\/?p=1322#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/mobileaders.com\/"},{"@type":"ListItem","position":2,"name":"Improve Performance and\u00a0Reduce Reflow Repaint"}]},{"@type":"WebSite","@id":"https:\/\/mobileaders.com\/#website","url":"https:\/\/mobileaders.com\/","name":"Mobileaders","description":"Leaders of Mobile Development!","publisher":{"@id":"https:\/\/mobileaders.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/mobileaders.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/mobileaders.com\/#organization","name":"mobileaders","url":"https:\/\/mobileaders.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/mobileaders.com\/#\/schema\/logo\/image\/","url":"https:\/\/mobileaders.com\/wp-content\/uploads\/2021\/12\/Logo-White-Background.png","contentUrl":"https:\/\/mobileaders.com\/wp-content\/uploads\/2021\/12\/Logo-White-Background.png","width":1280,"height":720,"caption":"mobileaders"},"image":{"@id":"https:\/\/mobileaders.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/mobileaders","https:\/\/x.com\/mobileaders","https:\/\/www.instagram.com\/mobileaders","https:\/\/www.linkedin.com\/company\/mobileaders"]},{"@type":"Person","@id":""}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/mobileaders.com\/index.php?rest_route=\/wp\/v2\/posts\/1322","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mobileaders.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mobileaders.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mobileaders.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mobileaders.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1322"}],"version-history":[{"count":6,"href":"https:\/\/mobileaders.com\/index.php?rest_route=\/wp\/v2\/posts\/1322\/revisions"}],"predecessor-version":[{"id":1332,"href":"https:\/\/mobileaders.com\/index.php?rest_route=\/wp\/v2\/posts\/1322\/revisions\/1332"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mobileaders.com\/index.php?rest_route=\/wp\/v2\/media\/1323"}],"wp:attachment":[{"href":"https:\/\/mobileaders.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1322"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mobileaders.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1322"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mobileaders.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1322"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}