This subject is largely unknown and optimally configuring IPv6 might provide a significant boost in perceived performance, by eliminating potential time-outs with the out of the box configuration.
By default, IPv6 is enabled and has higher priority over IPv4 in all current editions of Windows.
Some people have the so called native IPv6 stack provided by their ISP, in which case they can use both stacks, IPv4 and IPv6.
However most people do not have IPv6 provided natively by their ISP, in which case they may or may not use one of the emulated (tunnelled) additional protocols related to IPv6 provided by Windows, which might cause more problems than resolve.
I am one of the lucky ones, having IPv6 natively enabled by my ISP (Internode in Australia), but even so, I always configure Windows to prefer IPv4 vs IPv6, which means that IPv6 would be used only as fall-back mechanism.
The reason I configure and recommend IPv4 first is that IPv6 is not so widely supported yet and there is a small delay every time when IPv6 falls back on IPv4, especially when querying DNS.
There are very few sites built exclusively on IPv6 (not supporting IPv4) and those are mostly test or experimental sites.
Those who are interested in promoting more actively IPv6 might not like my recommendation and leave the settings on the default configuration, while accepting the occasional small delay.
There are few ways to configure IPv6 in Windows, but only few are actually correct technically.
One of the worst configurations that I have found to be used by lazy “professionals” is to untick the IPv6 box on the network connection properties. Avoid that configuration at any price!
There is only one good way to configure IPv6, by configuring the registry value DisabledComponents under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters while leaving any other IPv6 setting as is out of the box.
1. The most recommended configuration is to have IPv4 to have higher priority over all IPv6 protocols, while leaving IPv6 enabled.
In this case, the DisabledComponents has the value 20 (hex) or 32 (decimal)
2. The other non-default supported configuration is to set DisabledComponents to ff (hex) or 255 (decimal) which means virtually to disable completely IPv6 with the exception of the loopback interface which cannot be disabled, being a system feature.
This is a configuration found more commonly in enterprises where the security teams do not like to have a protocol not in active (managed) use going under the radar, although there would be functional advantages in leaving IPv6 enabled even in those situations.
Notes:
1. If DisabledComponents registry value does not exist and this is the default (out of the box) configuration, the equivalent default value is 0, with IPv6 enabled and taking precedence over IPv4.
2. Another value to be considered is 21 (hex) or 33 (decimal), which in addition to the value 20/32 disables the additional IPv6 protocols like Teredo, but it seems that only the previous values described which are ff or 20 or 0 are fully supported, at least according to the documentation.
The effect of 21/33 is largely cosmetic, as it does not present any visible advantage, although it is a valid value and works correctly according to my tests.
3. I had a hard time explaining in the early days why ffffffff (hex) is not supported (the true good value being ff), although Microsoft had this mistaken recommendation in some articles, thankfully now they amended and clarified this issue in their most current article.
Please check this Microsoft KB article which has the most up to date and very accurate information and documents all the possible combinations for the valid configurations.
https://support.microsoft.com/en-us/help/929852/how-to-disable-ipv6-or-its-components-in-windows
For those more technically minded, the priority of various IP protocols can be verified and configured by typing in a command line (without getting into details):