Ничего не понял. В моём понимании, когда я делаю setState - система хуков
1) Знает, какой компонент зацеплен за этот стейт
2) Знает предыдущее значение
3) Если старое не равно новому - делает рендер компонента (синхронно или нет не так уже важно)
3) Оно не делает ререндер компонента, а отмечает его как dirty, и говорит движку, что надо его перерендерить, что и вызывает подобной прикол, наверное. Поэтому, синхронно или нет-важно