SOLVED: It is not about UITableViewDiffableDataSource. The problem was accessing realm from 2 different thread sequentially and not getting consistent result
One of the thread was main thread and scrolling somehow kept main thread busy and triggered race condition
Everything works if user not scrolling tableview when update is happening.
If user is scrolling or just have finger on the tableview, no animations happening on update and differences does not show up. I am not getting any error in the console
Data update code is like below:
var snapshot = tableViewDataSource.snapshot()
snapshot.deleteAllItems()
snapshot.appendSections([.conversation])
snapshot.appendItems(conversationList, toSection: .conversation)
tableViewDataSource.apply(snapshot)
Is this somehow an expected behavior?