The layer runs plugin code; it does not run Cordova 129 's tooling. What it cannot do:
No hooks and no install variables. hooks/ scripts never run, and $VARIABLEs get their defaults (Cordova Plugin Variables).
Partial plugin.xml support. cap sync copies source, resource and library files, Gradle 19,597 frameworks and AndroidManifest.xml entries. Other <config-file> and <edit-config> targets, such as strings.xml or other resource files, are left to you, and for Info.plist entries it only prints the keys to add.
Plugins that own the app shell. Anything that replaces the WebView, the splash screen or the keyboard handling conflicts with Capacitor 243,123 's own. The CLI keeps a list and skips them:
[info] Found 1 incompatible Cordova plugin for android, skipped install:
cordova-plugin-splashscreen@6.0.2The list in @capacitor/cli 8.5.2 includes cordova-plugin-splashscreen, cordova-plugin-ionic-webview, cordova-plugin-crosswalk-webview, cordova-plugin-wkwebview-engine, cordova-plugin-ionic-keyboard, cordova-plugin-console, cordova-plugin-music-controls, cordova-plugin-braintree, cordova-support-google-services, and on iOS also cordova-plugin-statusbar. Skipping is silent at run time, since the plugin's native code is not built at all, so read the sync output after every install.
A plugin that reaches into Cordova internals, such as CordovaActivity or platforms/ paths in its Gradle script, can still fail, and abandoned plugins are better replaced than carried along.