A synchronous <script> in the document blocks HTML parsing until it downloads and executes, delaying first render and inflating Total Blocking Time / INP.
How to fix it
- Add
deferto scripts that need the DOM (they run in order, after parsing). - Add
asyncto independent third-party scripts (analytics, pixels). - Only genuinely critical inline theme JS should run synchronously.
<script src="{{ 'theme.js' | asset_url }}" defer></script>
<script src="https://cdn.example.com/analytics.js" async></script>