Confirmação visual transitória ("Salvo") sem useEffect/timer: o servidor devolve um valor que muda a cada sucesso (at, ex. um timestamp) e o :key remonta o elemento, reiniciando a animação CSS que termina em opacidade 0.
useEffect
at
:key
:any
nil
label
:string
class