Hide out of stock variants

The only way to reliable way to achieve this is by editing your liquid files.

You have to find in your theme where your collection items are being rendered and add a “where:'available” filter to your collection producs, it should look similar to this:

{%- paginate collection.products by 50 -%}
   {% assign available_products = collection.products | where: 'available' %}
   {%  for product in available_products %}
    LOOP LOGIC HERE
   {% endfor %}
{%- endpaginate - %}

This is a bit technical and there’s no way to achieve this with apps, the ones that claim to achieve this actually use CSS and leave some empty spots and pages in your collections.

However, we offer doing this adjustment for our “Hide Sold Variants” app users in case they need it.