Gameplay Cue Notify Actor never calls OnRemove on Standalone/Server, but does on Clients

I have quite simple setup:

  1. Ability that applies GameplayEffect to owner and ends

  2. GameplayEffect has duration of 3s and GameplayCue tag

  3. GameplayCue has proper tag and overrides functions WhileActive and OnRemove

Observations:

Now when I play in Standalone, OnRemove is never called
image

When I play as Listen Server with two players, then OnRemove is correctly called on client, but not on host (regardless if which player uses the ability).

When I play as Client (2 clients with dedicated server) then on both clients it works as expected.

Question:
I’m completely lost, I would expect issues on client side, not on server side. I have read through this thread which indicates similar problems (but mostly on clients and seem to be different for different people and UE versions) with no clear solution. I even sub-classed GameplayCueNotifyActor with snipped from ezgoin’s last comment, with no effect.

I’m getting this after upgrading to 5.3 as well. It seems like the tag is not removed when AGameplayCueNotify_Actor::HandleGameplayCue is called thus making an early exit without calling OnRemove on standalone.

setting AbilitySystem.GameplayCueNotifyTagCheckOnRemove cvar to 0 let me bypass the issue but I’m not sure how this will affect GCN

Looks like in UE5.5 “AutoDestroy” is required to OnRemove getting called for second time

Worth notice that “AutoDestroy” don’t work like “auto destroy” as I understand its just return actor to “objects pool” through some time.