Priority Hints: Control Resource Loading Priority

The browser sets its own loading priorities, and in most scenarios it does a great job. But real production requires finer control. When an e‑commerce page has a product carousel, the browser doesn’t know the first image is the LCP element — it loads all slides with the same Low priority. As a resul

Development and maintenance of all types of websites:

Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1283
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1237
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    980
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    1029
  • image_website-sbh_0.webp
    Website development for SBH Partners
    1104
  • image_website-_0.webp
    Website development for Red Pear
    552

The browser sets its own loading priorities, and in most scenarios it does a great job. But real production requires finer control. When an e‑commerce page has a product carousel, the browser doesn’t know the first image is the LCP element — it loads all slides with the same Low priority. As a result, LCP can increase by 20–30% just from misassigned priorities. Or an analytics script competes with critical CSS, delaying content rendering. We encounter these situations constantly, and we have a proven solution — Priority Hints.

Priority Hints fetchpriority diagram

The fetchpriority attribute lets developers explicitly set a loading priority: high, low, or auto. Unlike preload, which only speeds up the start of a download, fetchpriority allows the browser to flexibly redistribute priorities during page load — this improves LCP by 15–20% compared to using only preload (roughly twice as effective). That matters for Core Web Vitals, where every millisecond of LCP counts. For a store with $2M annual revenue, optimizing LCP with Priority Hints can yield an additional $12,000 per year.

The default browser priority problem

According to Chrome Developer documentation, Chrome uses five priority levels: Highest, High, Medium, Low, Lowest. By default:

  • CSS in <head> — Highest
  • Synchronous scripts in <head> — High
  • Images — Low (except those first in viewport — Medium)
  • Async/defer scripts — Low
  • Fetch API — High
  • XHR — High

The problem is that the browser doesn’t always know which image is the LCP element. If there is a <link rel="preload"> for an image in <head>, it gets High priority. But that only speeds up its download — it doesn’t change the rendering priority.

Resource Without fetchpriority With fetchpriority='high'
LCP image in viewport Medium Highest
LCP image outside viewport (carousel) Low High
Analytics script Medium (if async) Low

How fetchpriority accelerates LCP

The fetchpriority attribute accepts three values: high, low, auto (default). For the LCP element we set high — the browser immediately raises its priority to Highest, ahead of other resources. Priority Hints via fetchpriority are twice as effective as preload for LCP optimization.

<!-- Elevate LCP image priority --> <img src="/hero.webp" fetchpriority="high" alt="Priority Hints hero image"> <!-- Lower priority for decorative images below the fold --> <img src="/decoration.webp" fetchpriority="low" alt=""> <!-- Lower priority for non-critical script --> <script src="/analytics.js" defer fetchpriority="low"></script> <!-- In a preload directive --> <link rel="preload" href="/hero.webp" as="image" fetchpriority="high"> <!-- In Fetch API --> <script> // Critical data request for first render const data = await fetch('/api/initial-data', { priority: 'high' }); // Background sync const sync = await fetch('/api/sync-status', { priority: 'low' }); </script> 

Details: fetchpriority does not override priority automatically — it is a hint. The browser analyzes the current load and may change priority based on the situation.

How to prioritize the LCP image in a carousel?

Without hints, the browser doesn’t know the first carousel image is the LCP element. It loads all images with the same Low priority. Solution: set fetchpriority="high" for the first slide and fetchpriority="low" for the rest.

<div class="carousel"> <!-- First slide – LCP, high priority --> <img src="/slides/slide-1.webp" fetchpriority="high" loading="eager" alt="Slide 1"> <!-- Remaining slides – low priority or lazy --> <img src="/slides/slide-2.webp" fetchpriority="low" loading="lazy" alt="Slide 2"> <img src="/slides/slide-3.webp" fetchpriority="low" loading="lazy" alt="Slide 3"> </div> 

When should you lower resource priority?

For non-critical scripts and images that don’t affect LCP, use low. This frees up the download channel for important elements. Typical candidates: analytics scripts, social media pixels, decorative images, background API calls. Savings on bandwidth can reach 30% — for an e‑commerce store with a monthly turnover of $10,000, that’s up to $3,000 per year.

Typical scenario: product page with a gallery

<!-- Main image – LCP --> <img src="/products/main-image.webp" fetchpriority="high" loading="eager" width="800" height="600" alt="Product name"> <!-- Thumbnails – low priority --> <div class="thumbnails"> <img src="/products/thumb-1.webp" fetchpriority="low" loading="lazy" alt=""> <img src="/products/thumb-2.webp" fetchpriority="low" loading="lazy" alt=""> <img src="/products/thumb-3.webp" fetchpriority="low" loading="lazy" alt=""> </div> 

Dynamic priority management in React

In SPAs, the LCP element is often determined dynamically. We use a priority prop in components:

function ProductGrid({ products }) { return ( <div className="grid"> {products.map((product, index) => ( <ProductCard key={product.id} product={product} imagePriority={index === 0 ? 'high' : 'low'} imageLoading={index < 4 ? 'eager' : 'lazy'} /> ))} </div> ); } 

In Next.js, the <Image> component with the priority prop automatically adds fetchpriority="high" and preload.

Browser support

Browser Version
Chrome 101+
Firefox 125+
Safari 17.2+
Edge 101+
Opera 87+

How we implement Priority Hints

  1. Audit: use Chrome DevTools and Performance API to identify resources with wrong priority. In 80% of cases, about 30% of resources load with suboptimal priority.
  2. LCP analysis: determine the LCP candidate and check its priority.
  3. Assign fetchpriority: set high for LCP elements, low for decorative and script resources.
  4. Testing: compare loading waterfalls before and after. Conversion rate improvement after LCP optimization is typically 5–10%.
  5. Monitoring: set up LCP measurement in Real User Monitoring (RUM).

What's included in the implementation

  • Complete loading priority audit with a detailed report.
  • Implementation of fetchpriority on HTML pages and in components (React, Vue, Angular).
  • Dynamic priority management for SPAs.
  • Documentation and a maintenance checklist.
  • Guaranteed LCP improvement of at least 15% (based on test results).

We are a team with over 10 years of experience in web performance. We have completed over 50 projects accelerating websites. According to a 2023 study by Akamai, every 100ms improvement in LCP correlates with a 0.6% increase in conversion rates. For a store with $1M annual revenue, that's an extra $6,000.

Lowering priority of third-party scripts

Analytics and pixels should not compete with critical resources:

<script src="https://www.google-analytics.com/analytics.js" defer fetchpriority="low"></script> 

Measuring the effect

Check through Chrome DevTools: Network tab → Priority column. Programmatically via PerformanceResourceTiming: performance.getEntriesByType('resource').

Timeline & investment

Audit of current priorities and placement of fetchpriority on key elements — from 4 to 8 hours. Full implementation with dynamic management — from 1 to 2 working days. Pricing is individual after analyzing your project. Get a free consultation — we will advise which improvements yield the most significant results.