Looks like it’s working now.
I ended up completely rebuilding the products. Any idea why this would happen?
One of my products: http://229.3a8.myftpupload.com/product/upstage/ behaves in a way that if you have “Large” as a cap size selected it doesn’t show the “unavailable” options in color but my other product: http://229.3a8.myftpupload.com/product/voltage/ just says “no products match”.
Why the difference?
Howdy 🙂
It’s the sheer number of existing variations on this product http://229.3a8.myftpupload.com/product/voltage/ that cause the difference
If we inspect the source code, we can see that on this product:
http://229.3a8.myftpupload.com/product/upstage/
All of the available variations are available as a JSON string:

But on the other product the value there is “false”:

This behavior was introduced in WooCommerce 2.4 and is documented here: https://woocommerce.wordpress.com/2015/07/13/improving-the-variations-interface-in-2-4/
The change was made because checking for available variations is extremely server intensive and can have a significant negative impact on page load speed. If there are more than 30 variations, the availability is checked in the background via an AJAX call.
There is a filter named woocommerce_ajax_variation_threshold which can be used to adjust this behavior and an example of that can be found here: https://gist.github.com/claudiosanches/6f91ad228c2176b986b2
However, that code snippet example decreases the limit, to cause your product to work like you seem to want it to work would require an increase of that limit. Do keep in mind that this does have a very likely potential to impact page load times.
Kind regards,
Kenin
(@kbassart)
Automattic Happiness Engineer
We haven’t heard back from you in a while, so I’m going to mark this as resolved – if you have any further questions, you can start a new thread.