I don't think this a duality in the usual sense. It's just an abstraction leakage. It's not clear to me that this is a large-scale problem. But I can imagine it would be helpful for some use cases. Probably just not helpful enough for such a major change.
We need a notion of lifecycle independent of reconciliation. The definition provided in View Tree Duality is natural, essentially locally determined, and efficient (i.e O(n)).
Without an independent notion of lifecycle, React essentially cannot improve it’s reconciliation algorithm.
will result in `Thing` going through the unmount / re-mount portion of the component lifecycle every time `someCondition` changes. This proposal suggests that instead `Thing` should remain mounted. It has been suggested (in the linked issue https://github.com/facebook/react/issues/16316) that there is a plan to make this possible at some point via something termed "re-parenting".