Quick answer: The cooldown is a GameplayEffect — it must be applied on the server and the ASC replication mode must propagate it. Use Mixed mode and apply the cooldown GE server-side.

A GAS ability’s cooldown ticks correctly on the server but the client’s HUD cooldown ring never updates. The cooldown GameplayEffect isn’t reaching the client.

Cooldowns Are GameplayEffects

A GAS cooldown is a duration GameplayEffect granting a cooldown tag. The HUD reads the remaining duration of that GE. For the client to see it, the GE must replicate to the client’s ASC.

ASC Replication Mode

AbilitySystemComponent->SetReplicationMode(EGameplayEffectReplicationMode::Mixed);

For a player character whose own HUD needs cooldown timers, use Mixed.

Apply on Server

The cooldown GE must be applied by the server (the ability’s CommitAbility / ApplyCooldown runs server-authoritatively). If your ability is client-predicted, ensure the cooldown commit happens in the server path.

HUD Reads the GE

float Remaining, Duration;
ASC->GetCooldownRemainingForTag(CooldownTag, Remaining, Duration);

Bind the HUD to this. On a client with Mixed mode, the replicated GE makes these values correct.

Verifying

Cast the ability on a client. Its HUD cooldown ring fills and ticks down, matching the server. Other players don’t need the GE — only the tag.

“Cooldown is a replicated GameplayEffect. Mixed replication mode + server-side apply makes the client HUD work.”

If you must use Minimal mode for perf, replicate a custom cooldown-remaining float separately for the HUD — or accept server-only cooldown UI.