How to replicate a meshs transform

I’ve set up my class AWeapon to replicate its mesh component, and when i change weapon for player 1, the old mesh is removed and both player 1 and player 2 see that player 1 has a new weapon. However when I move player 1, the mesh for player 1s weapon is not moving on the screen for player 2.

This is how I’ve set up the replication.

Weapon.h

UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Replicated, Category = "Components")
UStaticMeshComponent* MeshComponent;

Weapon.cpp

#include "Weapon.h"
#include "Net/UnrealNetwork.h"

AWeapon::AWeapon()
{
    SetReplicates(true);
    PrimaryActorTick.bCanEverTick = true;

    MeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MeshComp"));
    RootComponent = MeshComponent;
}

void AWeapon::GetLifetimeReplicatedProps(TArray< FLifetimeProperty >& OutLifetimeProps) const
{
    DOREPLIFETIME(AWeapon, MeshComponent);
}

But it gets stranger. When the weapon is selected from the BeginPlay function of the ShooterCharacter, player 1s gun is moving on the screen for player 2. However, it doesn’t get destroyed when a new weapon is selected. This is only happening for the weapon selected in the AShooterCharacter::BeginPlay() function

ShooterCharacter.cpp

void AShooterCharacter::BeginPlay()
{
    Super::BeginPlay();

    SetupLoadout();
    SelectWeapon(Loadout->GetPrimaryWeapon());
}

void AShooterCharacter::SelectWeapon(TSubclassOf<AWeapon> WeaponClass)
{
    if (CurrentWeapon)
    {
        if (CurrentWeapon->GetClass() == WeaponClass)
        {
            return;
        }
        else
        {
            CurrentWeapon->Destroy(true);
        }
    }

    CurrentWeapon = GetWorld()->SpawnActor<AWeapon>(WeaponClass); 
    CurrentWeapon->AttachToComponent(Mesh1P, FAttachmentTransformRules(EAttachmentRule::SnapToTarget, true), TEXT("GripPoint"));
    CurrentWeapon->AddActorLocalRotation(FRotator(0, 90, 0));
}

I’m clearly missing something here, but I’m not sure what. The fact that the behavior changes when the SelectWeapon() function is called from the BeginPlay() function is really throwing me off.

Ignore this, if you set the actor to replicate then the components will be too.
Have a look at these vids to help you:

Replication
Weapon Switching