The Daily call object provides direct access to call primitives, including other participants' audio and video tracks, allowing for flexible building of custom video chat apps. As of today, the call object also offers fine-grained information about participant track state, enabling developers to know why a track is available or not. The tracks property in the participants object contains details about the state of each track subscription, including loading, muted, and permission-related states. This level of detail enables expressive video app interfaces that change as a participant subscribes or unsubscribes from tracks. The updated callState.js code allows developers to access and update track state, and the getTrackUnavailableMessage function displays custom status messages depending on track state.