Hello all.
For me this problem was specific to wifi calling not staying connected to wifi networks. If you having wifi calling issues this might help... I think we all that have had and are having this problem are pretty frustrated and want to blame apple. But based on my googling I have a feeling this isn't iPhone related per se. Hard to individually diagnosis everyone's situation here but I tried every suggestion in this thread which worked only randomly if at all... And then temporarily.
The permanent fix FOR ME was actually held with my router. No reason to go Into great detail because if this is your problem, the Google will help you finish the fix specific to your setup... But here is what I had to do.
Disclaimer: this works perfectly for me on ATT iOS devices. Not sure if the ports are the same for Verizon, sprint and T-Mobile... But I suspect they are.
1. On the router You need to setup specific DHCP IP reservations for each ios device you want wifi calling on. Restart each ios device (or toggle wifi off for 10-15 seconds) after you save changes.
2. On the router You need to setup port forwarding to each device UDP 4500 and UDP 500. Increment it by 1 for each device.
Completed setup will look like this:
iPhone 1:
DHCP IP reservations "192.168.1.11"
Port forwarding: UDP 4500, UDP 500.
iPhone 2:
DHCP IP reservations "192.168.1.12"
Port forwarding: UDP 4501, UDP 501.
iPhone 3:
DHCP IP reservations "192.168.1.13"
Port forwarding: UDP 4502, UDP 502.
Etc.
Apparently this is still a work around because most of this should just work on residential wifi networks however that is specific to whatever you use for your local wifi networks. Additionally for anyone that has never setup a DHCP IP reservations, your local IP will vary by default but you can setup to whatever you prefer, personally I'm not familiar with every router but if you are not comfortable doing this on your own, just google "configuring DHCP IP reservations for XXXXXXXX". (XXXXXXXX being your style router of course.)
Hope this helps some of you. If your phones wifi calling already works... Then that's the way it's supposed to be and I wouldn't make any changes haha.
Edit: this post assumes your iPhone is powered on, connected to wifi, and already has wifi calling turned on.