Not all variables replicating USTRUCT

Heres my struct

USTRUCT(BlueprintType)
struct FTimedRun
{
    GENERATED_BODY()
    UPROPERTY(BlueprintReadOnly)
    int32 PlayerNameIndex = 0;
    UPROPERTY(BlueprintReadOnly)
    float Time = -1.0f;
};

I have this struct in a TArray on another class

UPROPERTY(ReplicatedUsing = OnRep_StageRunTimes)
TArray<FTimedRun> StageRunTimes;
UFUNCTION()
void OnRep_StageRunTimes();

what im doing for testing is i start a listen server without the client connected and i do 2 runs (in the screenshots they are element 2 and 1) which adds 2 elements to the array. then i connect with the client, and the server does 1 more run (shows as element 0 in the array in the screenshots). i place a breakpoint in the debugger at the start of the OnRep function to see what StageRunTimes looks like after those 3 runs on the server and client. the server is the first picture showing everything correct with all the PlayerNameIndex at 2569 and the correct Times. the client in the second picture shows player name index 0 for elements 0 and 1 (these would be the last 2 runs as i am shifting the array down one with each run so the latest run is always element 0, but it shows the correct time. now the other weird part is if i do a fourth run on the server (third screenshot), it shows the correct PlayerNameIndex for the run with a time of 0.616674423 (element 1 in the first two screenshots and now element 2 in the third screenshot because again i am shifting the elements 1 to the right with each run). its like my struct is replicating just the time and sometimes the PlayerNameIndex instead of both. if i connect the client to the server before doing any runs, and then have the server do a bunch of runs then everything on the client is correct as well. it seems however many runs i do before the client connects is how many runs behind the client is for replication as it does not want to get the PlayerNameIndex for some odd reason