February 19, 2025
  • All
  • Engineering
  • Capacitor
  • plugins

Unifying Plugins across Ionic and OutSystems

Eric Horodyski

One of the more exciting aspects of Ionic joining OutSystems was comparing our portfolios of supported plugins. Does Ionic provide functionality OutSystems is missing? Does OutSystems have plugins without a Capacitor equivalent? How do we bring the best of both worlds to OutSystems’ low-code and Ionic’s open-source communities?

Some decisions were easy. For instance, Ionic didn’t have a Barcode Scanner or its own InAppBrowser plugin, so we pulled those into the Capacitor ecosystem from OutSystems’ collection—no brainer.

But what about plugins like Filesystem that do essentially the same thing? We found a long list of plugins that exist in both ecosystems—plugins that could, and should, be unified. Since we need to support both Cordova and Capacitor for compatibility across OutSystems versions, we took a thoughtful approach to merging these plugins while making them available to Ionic’s open-source community.

Building the Unified Plugin Architecture

To make this work, we designed a unified plugin architecture that breaks down the different building blocks of a plugin so the same functionality can be reassembled as both a Cordova plugin and a Capacitor plugin.

Going forward, all unified plugins will follow this structure:

  • Native Libraries –  Core implementation now lives in dedicated open-source native libraries. These can be used in Capacitor, Cordova, or even native mobile projects.
  • Capacitor Plugin – The Capacitor plugin remains on npm under its existing package name (e.g., @capacitor/geolocation) but now lives in its own repository.
  • Cordova Plugin & OutSystems Wrapper – The Cordova plugin and OutSystems-specific components are housed in a single repository, but usage will remain exclusive to OutSystems applications.

Geolocation is the first plugin to adopt this model, starting with version 7.1.0. More plugins will follow in future releases.

If you’re a Capacitor plugin developer, this is great news! This approach makes native functionality more modular and reusable, opening the door to more contributions and improvements across the ecosystem. And don’t worry–this won’t change how you build plugins today. Our tooling will continue generating plugins the same way, and any new Capacitor-exclusive plugins (like the Privacy Screen plugin) will follow the existing structure. This setup is just for plugins that need to support both OutSystems and Ionic, so unless that applies to you, keep doing what you’re doing!

What Does This Mean for Me?

If you use Ionic’s plugins in your Capacitor apps, nothing will change—everything will keep working just as it does today. But as we unify plugins, expect to see new features and enhancements along the way. We’ll continue iterating on existing plugins and will provide plenty of notice for any API deprecations.

If you keep an eye on our GitHub, you’ll start seeing new repositories for plugins that follow this unified architecture. We’ll also be adding deprecation notices in the Capacitor Plugins monorepo, with clear instructions on where to find their new and improved homes.

By structuring plugins this way, we’re opening the door to even more open-source contributions. Native libraries are now accessible to any mobile developer—whether they use Capacitor, Cordova, Flutter, or React Native. If you’re into native development and want to contribute, we’d love to have you!

This is just the beginning–our focus now is on unifying even more plugins! Huge shout-out to the engineers working on this initiative for all their hard work in making it happen! 🚀


Eric Horodyski