これよく見かけるのでやってみます。
.contentTransition(.symbolEffect(.replace))
まず、Button の Label のアイコンを、
ある値を見ながら切り替えます。
よくあるパターンなので想像はつくでしょう。
@State private var value = false
Button {
  value.toggle()
} label: {
  Label("Favorite", systemImage: value ? "heart.fill" : "heart")
}

次に .symbolVariant() を使います。
挙動は同じだと思われます。
Button {
  value.toggle()
} label: {
  Label("Favorite", systemImage: "heart")
    .symbolVariant(value ? .fill : .none)
}
ここで、
.contentTransition(.symbolEffect(.replace)) を
付けます。
Button {
  value.toggle()
} label: {
  Label("Favorite", systemImage: "heart")
    .symbolVariant(value ? .fill : .none)
    .contentTransition(.symbolEffect(.replace))
}
Apple 公式サンプルコードでは、
以下のようにさらに細かく調整されていました。
Button {
  value.toggle()
} label: {
  Label("Favorite", systemImage: "heart")
    .symbolVariant(value ? .fill : .none)
    .contentTransition(
      .symbolEffect(value ? .replace.upUp : .replace.downUp)
    )
}
以上4つを並べて確認します。

微妙にエフェクト具合が違うけど、
どれがいいとはいいづらい。
👉 【SwiftUI】市松模様を背景にする - Checkered Pattern Background 🏁 
🧑🏻💻 まとめ
タイトルどおりの
.contentTransition(.symbolEffect(.replace))
ぐらいがシンプルな記述のわりに見栄えが良いように思います。
みんなが良く使ってる意味が分かりました !
 
		 
          