Performance
Why JavaScript-heavy websites feel slower on phones
A website can download quickly and still feel slow.
That happens because JavaScript is not finished when the file arrives. The browser still has to parse it, compile it, execute it, and sometimes hydrate a server-rendered interface before the page is fully interactive.
Phones make those costs easier to notice.
Network speed is only the first part
A compressed JavaScript bundle may look modest in a transfer report.
The device still has to do work after the bytes arrive.
That work competes with layout, painting, scrolling, image decoding, font rendering, and the user's first interactions.
On a fast desktop CPU, a mediocre JavaScript decision can disappear into the hardware.
On a phone, the same decision may show up as a delayed menu, a sticky scroll, or a button that responds a beat after the tap.
Parsing and execution happen on the user's device
HTML is relatively cheap for a browser to consume.
JavaScript is executable code.
The browser has to understand it and run it.
That is one reason we care about our JavaScript budget separately from total page weight. Two resources with the same transfer size do not necessarily create the same runtime cost.
Hydration adds another layer
Server rendering can give the browser useful HTML immediately.
If the entire page is also a Client Component, React still has to connect that HTML to the client-side component tree.
That process is hydration.
Hydration is useful when the interface needs browser-side state and events. It is wasted work when large parts of the page are static text and images.
Our server-first architecture is designed to keep that work close to the components that actually need it.
Long tasks are what the visitor feels
A browser can only do so much work on the main thread at once.
If a script occupies that thread for too long, input waits.
The visitor does not think, "The main thread is busy."
They think the website feels laggy.
That is why Interaction to Next Paint is useful. It gives us another way to see whether the browser is responding promptly when the person taps, types, opens a menu, or interacts with the page.
Third-party JavaScript counts too
A lean application can still become heavy after analytics, advertising tags, schedulers, chat widgets, review feeds, and embeds are added.
Those scripts may execute after our bundle, but they still use the same device.
We treat them as part of the same budget. The full reasoning is in third-party scripts and why we defer them.
Mobile devices also deal with heat and battery limits
Phones are designed to manage power and temperature.
Sustained CPU work can be throttled. Background activity can behave differently. A device that is already busy may have less room for a marketing page that wants to behave like a large application.
That is another reason desktop testing is not enough.
The site should remain usable on ordinary hardware under ordinary conditions, not only on a developer workstation.
Animation can make the problem more visible
Scroll listeners, reveal systems, continuously updating effects, and JavaScript-driven motion can add work exactly while the user is moving through the page.
That is why we prefer browser-native or CSS behavior when it can produce the same result.
The page should not need constant script execution merely to look polished.
The fix is usually architectural before it is tactical
Minification helps.
Compression helps.
Code splitting helps.
Those are worthwhile.
The larger question is still whether the browser needed the code in the first place.
If an article, service section, testimonial, or image grid can be rendered without client-side state, leaving it on the server removes an entire class of browser work.
If a library exists only to animate three headings, removing the library can be more valuable than optimizing how it loads.
Applications have different requirements
A browser-based application may need a substantial amount of JavaScript because the interaction itself is the product.
A dashboard, editor, configurator, or real-time interface should not be judged by the same JavaScript budget as a service-business homepage.
The correct comparison is between the runtime cost and the value the runtime creates.
Why this matters commercially
A person arriving from search or an ad may be on a phone, on cellular data, with several other applications running.
They are not grading the architecture.
They are deciding whether the site feels trustworthy and easy to use.
A page that responds promptly removes friction before the visitor has even read the offer.
That is why mobile JavaScript is not only a developer concern. It is part of the conversion experience.
From explanation to proof
Where this connects to the work
The performance library explains why our technical scores tend to be unusually strong without treating the score itself as the product.