Do you have a problem with Combine publishers? They, like observable objects, exist for a reason.
One could roll your own solution, but you'd effectively be recreating your own publishers and subscribers for little to no gain.
It's also not a view model, since in this case the observable object(s) exist to manage and persist state across multiple views and multiple screens in the navigation tree.
You should also work on your definitions. Combine and RxSwift are in fact functional/reactive frameworks. SwiftUI is a declarative framework.