Ionic 20,753 apps ran on Cordova 129 from 2013, and the Ionic team kept hitting the limits Architectural Limits listed. Native changes had to be smuggled through config.xml, hooks or plugins, because platforms/ was regenerated. A global CLI meant that two projects on one machine could disagree about the toolchain. Plugin APIs were callback-based window globals with no types, and each platform needed its own JavaScript fallback for the browser.
Capacitor 243,123 , released as 1.0 on 22 May 2019 and now at 8.5.2, answers each point: the Android and iOS projects are created once and then belong to you, the CLI is a per-project npm 2,036 dependency run with npx cap, plugins are imported modules that return Promises and carry TypeScript definitions, and a plugin can ship a web implementation so the same call works in a PWA. It deliberately kept one thing, the plugin model, and made running existing Cordova plugins a design goal, so teams could move without rewriting (Cordova to Capacitor tells the history).