@AndreiG is right. TimelineView exists to avoid things like messing with id
to force a refresh.
TimelineView(.periodic(from: .now, by: 1)) { context in
Text(context.date.formatted(.dateTime.hour().minute().second()))
}
Adjust the formatting as you want.