Problem with Client and Server side

This Piece of code its purpose to Change the Alpha Which Will make a whole Circle when it reach 1.0
my problem is that it works on the Server side but doesn’t work on a client side so what I am doing wrong and is it right to do that in the tick :

void AON_PR_PickUp::ShowMaterialDecalEffect()
{
	float Alpha = GetTimerPercentage();
	DynamicDecalTimerMaterialInst->SetScalarParameterValue("Alpha", Alpha);
	if (Alpha == 1.0f)
	{
		DecalTarget->SetHiddenInGame(false);
		DecalTimer->SetHiddenInGame(true);

	}
	else
	{
		DecalTarget->SetHiddenInGame(true);
		DecalTimer->SetHiddenInGame(false);
	}
}

void AON_PR_PickUp::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
	if (Role == ROLE_Authority)
	{
		ShowMaterialDecalEffect();
	}
}

Thank you for Time.

PS the Decals Don’t hide/show on client side but works smooth on the server

It’s obvious Your actor’s role is not ROLE_Authority on client. Why do you have that control on tick?

I am still new in server and client point of view.
When I remove the role in the tick it crashes
Do i need to use replicateusing in material instant variable