Capacitorは、Ionicが開発したハイブリッドアプリケーションのための新しい開発フレームワークである。2009年に初めてリリースされ、ソリューションとして定評のあるApache Cordovaの代替を提供する。
IonicがCordovaの代替の開発を決めたのには、主に2つの理由がある。Cordovaのプラグインシステムが旧式であることと、ネイティブプラットフォームを管理するアプローチに制限のあることだ。
CordovaとCapacitorはいずれも、JavaScriptと、BluetoothやRFIDなどネイティブなプラットフォーム機能との通信を可能にするプラグインシステムを提供しているが、最近になってCordovaのプラグインシステムは、新しいテクノロジへの追随が難しくなっている。
好例はSwift言語で、2014年末にAppleによってリリースされたが、Cordovaプラグインシステムに追加されたのは2019年だった(サードパーティのプラグインではそれ以前からサポートされていた)。
古い形式のプラグインシステムは、主にエコシステムがサードパーティ製プラグインに強く依存している場合、エコシステム全体に害を及ぼす可能性がある。
Capacitorのプラグインシステムは、最新のテクノロジをサポートした、より簡単な開発プロセスを提供する。
Capacitorプラグインのエコシステムはまだ比較的小さいが、CordovaプラグインのほとんどはCapacitor内で引き続き使用することができる。この互換性は、開発者が重要なプラットフォーム機能へのアクセスを失わないようにするための、一時的なソリューションである。
ネイティブプロジェクト管理は、Capacitorが業界にもたらす第2の変革だ。Cordovaはビルド時、ネイティブなプラットフォームコードを生成する。開発者は共有構成ファイルを使って、その中にアプリケーションをビルドするための指示を記述する。このファイルは、ネイティブビルド中にCordovaによって使用される。このアプローチはビルドプロセスを簡素化する一方で、ネイティブプロジェクトへのアクセスが制限されるという代償がある。
Cordovaが提供するソリューションは使用が簡単であるため、小規模なプロジェクトには適しているが、ネイティブプロジェクトのコードや構成をより詳細に制御する必要のある、大規模で複雑なプロジェクトでは問題がある。
これを解決するため、IonicのCapacitorでは、控えめだがより柔軟なアプローチを採用している。Capacitorはネイティブプラットフォーム用のJavaScriptコードを生成し同期するが、開発者がネイティブプラットフォームコードを直接管理しなければならない。ネイティブコード管理は、開発者に新たな負担を強いる反面、プロジェクトのネイティブな側面をコントロールする余地も大きくなる。
CordovaとCapacitorは、いずれもモバイルアプリケーションを超えてリーチを拡大しており、PWAやデスクトップアプリケーション(Electronを使用する)の開発もサポートするが、ハイブリッドモバイルアプリケーションのサポートほど完全なものではない。
Ionic Capacitorはオープンソースソフトウェアで、MITライセンス下で利用することができる。コントリビューションはCapacitor contribution guidelinesを通じて歓迎される。ただしコントリビュータは、Capcitor行動規範に従う必要がある。