Client follow camera transform

Yes, as long you got enough data on client to do this. View target actor (which by default is possesed pawn, it does not need ot be pawn) is being asked on every frame (so it works same way as tick) by Camera Manager how it should be viewed, it does that by calling CalcCamera function in actor:

You just set camera state in FMinimalViewInfo argument, the default implmentation of this function searches for camera component in actor and use one first active that is found:

void AActor::CalcCamera(float DeltaTime, FMinimalViewInfo& OutResult)
{
	if (bFindCameraComponentWhenViewTarget)
	{
		// Look for the first active camera component and use that for the view
		TInlineComponentArray<UCameraComponent*> Cameras;
		GetComponents<UCameraComponent>(/*out*/ Cameras);

		for (UCameraComponent* CameraComponent : Cameras)
		{
			if (CameraComponent->bIsActive)
			{
				CameraComponent->GetCameraView(DeltaTime, OutResult);
				return;
			}
		}
	}

	GetActorEyesViewPoint(OutResult.Location, OutResult.Rotation);
}

And yes, this means all camera components in reality are just dummies thta hold camera state while this function apply that state to camera system. So you can easily apply offset here by calling super and then modify camera position. This function is called only on client that renders the game.