Currently, VRChat only transmits two parameters for each finger in the hand:
* Finger Splay
* Finger Curl
This results in issues when networking hand shapes, as there are 3 individual joints on each finger. Only a single bending parameter is replicated, causing desync between what the user with hand tracking sees, and what a remote user sees. This desync creates confusion between players. The issue is also hidden from the average user by only showing them how the hand tracking looks client-side and not after network replication.
Player A can be doing a 'Flat - O' hand shape, and Player B would see a more fist-like shape. Similarly, they can do a 'Bent - V' hand shape, with the other player either seeing the fingers curl or stay flat and upright.
It would be more effective to replicate a minimum of 3 parameters for each finger:
* Finger Splay
* Finger Bend
* Finger Curl
Alternatively, all 3 joints' bend values could be replicated over the network, though it may be of negligible benefit to a majority of hand tracking users. It would definitely be welcome for owners of VR Gloves or those who communicate using Sign Language, however it may also be considered unnecessary.
The alternative method that I have explored was doing finger tracking through OSC and avatar animations, but this requires the avatar to be set up specifically with this system in mind. While doable, it is inconvenient and is not expected behavior out-of-the-box for a game which supports skeletal input.