XenonStack Recommends

Data Visualization

Top 3 Ways to Minimize the Main Thread Work | 2024

Navdeep Singh Gill | 15 July 2022

Ways to Minimize the Main Thread Work

What do we mean by the Main Thread?

The main thread is where the browser handles most of the work involved in page loadings, such as rendering/painting content and handling user interaction.
On the main thread, the browser performs the following tasks:

  • Layout management

  • Parsing CSS and HTML

  • Building the Document Object Model (DOM)

  • All of the JavaScript is being executed (by default)

They were thinking of the main thread as a butler in a hotel for a while. The butler must take orders, deliver food, refill drinks, handle payment, etc. If the butler gets slowed down while compiling a single order only, e.g., customers are indecisive or have a complicated order), the butler cannot process other orders.

This creates a bottleneck, which affects our perception of the hotel's performance.

The practice of writing code in any programming language to prevent any known vulnerability in our code.Click to explore about our, Secure Coding Best Practices

What is the impact of minimizing Main Thread work on our page's performance?

When we minimize the main thread's activity, the browser has more room to focus on the other critical activities of page loading.

JavaScript execution and HTML/CSS processing obstruct the main thread's ability to do other activities or handle user input. The execution of javascript files causes large-scale congestion on the main thread. This might be because our site uses a lot of JavaScript (i.e., it's long-running, huge, and has a lot of scripts). In general, the more JavaScript our website includes, the longer it takes to parse/compile it, which means users will have to wait longer to see content and interact with it.

Returning to our butler scenario, the fewer the tasks he has to complete, the faster he can deliver service. As a consequence, the hotel's whole experience will be enhanced.

How to minimize the Main Thread work?

One of the most critical goals in your development workflow should be Minimizing main-thread work.

  • It reduces the time spent evaluating scripts.

  • Minimizing style and layout recalculations.

  • Reducing the time spent parsing CSS/HTML/JavaScript.

By code-splitting:- Code splitting is splitting your JavaScript bundle into smaller files so that only the necessary code is executed during the initial page load.

Removing unused code:- Unused code can often be reused from previous versions of your site and imported from other modules that are no longer used. You might have code that you no longer need for testing but want to keep on your production website. Cleaning up dead code on your webpage can reduce the time it takes to execute JavaScript and keep the main thread less busy.

  • Preventing the delay in rendering page pixels: Compress any remaining critical resources to save space.

Top 5 ways to reduce the Main Thread work

The Prominent ways to reduce the main thread work are described below:

1. Optimize Third-Party Code

We should evaluate the third-party code on our website and eliminate those that aren't adding value to it.

Delay non-essential scripts, create early connections to critical third-party sites, lazy-load embedded third-party material, and optimize third-party hosting to improve other scripts.

2. Uses of web workers

The main thread has more to accomplish as the features and functionality of web programs get more complex, increasing the likelihood of bottlenecks. Furthermore, because each device has varied capabilities, it is nearly difficult to forecast how long it will take to run the code on the main thread.

Executing code off the main thread (OMT) using Web workers that run alongside the main thread is a workaround for this problem. Web workers facilitate parallel processing by allowing you to assign a function to a thread that runs in parallel with the rest of your program. When we code Without a web worker, for example. When we code with web worker, for example

3. Minify and defer CSS

You must download and parse the CSS file before the browser can display the page. Larger CSS files can clog the main thread for a long time and slow down the time it takes to load the page and respond to user actions.

4. Minify CSS

CSS files may contain unwanted characters, comments, spaces, or tabs. Removing these unwanted characters will reduce the final size without affecting how the browser displays the style. This process is called depreciation and helps reduce the work of the main thread. However, creating CSS code without these characters is unnatural and difficult.

5. Defer non-critical CSS

It's important to understand that CSS files are render-blocking resources. You must load the CSS file before the browser starts the dialogue on the main thread. This means that the big style gives more work to the main thread. Fortunately, not all lines of CSS are needed to create important content. DevTools coverage tools show important CSS classes for loading pages. Extract critical CSS from the coverage tool and load it into the block at the top of the page. Then you can load unimportant classes asynchronously. This reduces the work of the main thread.

This makes the page interactive and significantly reduces loading time. Not only does this improve your Lighthouse score, but it also reduces the bounce rate and spends more time on it because users don't have to wait for the page to be used.

Layout shifts can happen for several reasons, and Flashes of Invisible Text is one of them.Click to explore about our, Optimizing Layout Shifting and Flashes

Conclusion

  • Begin by identifying inefficient scripts.

  • Remove anything that isn't required.

  • Check for new scripts that are slowing down Page Speed regularly.

Having scripts on a website is a costly resource. They allow someone else to inject code into your site that we don't have control over, slowing down the rate at which people can view and engage with our content. This is done through HTML Code Injection/Cross-Site Scripting, and attackers often exploit HTML code injection vulnerabilities to gain access to user data within a web application. The hacker injects malicious HTML into a trusted website, executing untrusted scripts in the end user's browser. Because the browser cannot detect the malicious script, an attacker can gain access to session tokens, cookies, and other sensitive data that the browser stores. The ideal strategy to obtain good performance is to avoid using a script if possible.

However, some Javascript will always be required, and it is recommended that you minimize the impact of third-party code, which will help both our users and our Web Vitals and PageSpeed Insights scores.