In VRChat worlds, there is currently no API to determine whether a remote player is using a normal avatar, a performance fallback (robot), or an impostor.
I am synchronizing picked-up object transforms based on avatar bone positions (e.g., hand tracking). However, when the receiving player sees the avatar as a robot or impostor, the bone data becomes unreliable or replaced, causing significant misalignment in the synchronized object.
Using world-space transform synchronization is a possible workaround, but it introduces noticeable desynchronization because avatar motion and network updates are not perfectly aligned.
To properly handle this, an API that allows detection of a player’s avatar fallback state (normal / robot / impostor) is needed. This would allow conditional logic, such as switching between bone-based and world-based synchronization depending on the avatar state.