&gt; With that in mind, your disagreement is contradicted by this statement because logic has just been described to update the view. Logic is necessary to generate a view of the data for the user.<p>There is no logic in the &quot;template&quot;. No looping, no branching. Only inert ids. There is logic in determining which component replaces each id, but that logic lies in the code, not the template.<p>&gt;  it sounds like one must imperatively update the UI with Wicket, which is objectively more complex than what React affords, which is stateless UI.<p>Not so. Wicket clearly separates its state into models, you write UI that depends on a model as a function of that model. It leads to a very declarative&#x2F;functional style, where the only &quot;magic&quot; is encapsulated and explicitly managed. (You do have to declare which changes update which UI (for performance reasons), but you can make that &quot;always re-render the whole page&quot; if that suits your use case).