Skip to main content


A complete release history for Portals for iOS is available on GitHub. Documentation for recent releases can also be found below.


minorLatest Production Version

December 1 2023

Capacitor Configuration API

We are pleased to introduce a new API for configuring the Capacitor runtime. This API offers a set of configuration options that closely align with those found in the Capacitor configuration file ( options detailed here) . For comprehensive details, please refer to the "Advanced Configuration" section here.

Development Mode

We have now introduced a development mode for web developers. The devModeEnabled property is now available on Portal, allowing you to control to give a better development experience for your web developers.

In this mode, the Portal web content can be substituted with content from a development server URL, which complements the portals serve ios CLI command. Usage docs can be found here. More than likely web developers will use Development Mode in conjunction with a locally running web server so that development and testing can be done within an emulator on a physical device.

Please note that this mode is enabled by default and exclusively accessible during debug builds. For release modes, the application will consistently use the included content. To deactivate development mode for a Portal, you can easily set devModeEnabled to false, either during Portal initialization or by directly modifying the property. Explore this feature to optimize your development workflow with Ionic Portals.

To upgrade from the previous release please reference the UPGRADE GUIDE.

What's Changed

  • feat: Add ability to configure capacitor programmatically through Portal (#77)
  • feat: Add dev mode (#78)



May 17 2023

Pub/Sub system overhaul

This update simplifies the iOS pub/sub system for Ionic Portals, addressing the issue of Plugin subscriptions not being properly disposed when a Portal is dismissed. More details on usage can be found here. Key improvements include:

  • Utilizing Capacitor for Event Handling: We now use Capacitor for event publishing, simplifying unsubscribing with provided handles, eliminating the need for arbitrary integers.

  • Combine Integration: The pub/sub system now utilizes Apple's Combine framework, making subscription management more straightforward and efficient.

  • Introducing PortalsPubSub Class: A new PortalsPubSub class allows scoping events to specific portals, enhancing system organization.

Portals now uses Capacitor 5

This release also moves Portals to Capacitor 5 while requiring all plugins to be manually registered. More info on usage can be found here.

Web Vitals moved to a Plugin

And finally we have moved WebVitals into a plugin that can be registered for each Portal. Usage can be found here.

To upgrade from the previous release please reference the UPGRADE GUIDE.

What's Changed

  • feat!: Breaking overhauls the pub/sub system (#71)
  • feat!: BREAKING update to Capacitor 5 (#72)
  • feat!: BREAKING Required Manual Plugin Registration (#73)
  • feat!: BREAKING Make WebVitals a plugin (#74)



February 27 2023

New Feature Asset Maps

If you are developing an application that contains multiple Portals, the Portals library supports the ability to share asset files between them. This is helpful to reduce the size of your overall app if those Portals use assets that are the same such as large media files or font files. These are called Asset Maps. You can find out more about how to use them here.

What's Changed

  • feat: Asset maps (#66)
  • chore: Update IonicLiveUpdates max version upper bound (#67)
  • chore: Bump max IonicLiveUpdates version (#68)



February 6 2023

New Feature Web Vitals

You can now observe the FCP (First Contentful Paint) on a specific Portal. A faster FCP has several key benefits for. It enhances user perception by providing quick visual feedback that a web app is loading and can reduce the perception of delay. To read about how to make use of these new feature you can read the documentation here

What's Changed

  • feat: Adds ability to observe FCP metrics from embedded web apps (#63)



December 14 2022

New Feature Plugin Registration

There are now options for how to register plugins for a given Portal. This provides more control for Native developers. You can read more about how to use the feature here

What's Changed

  • feat: Add plugin registration API (#58)
  • fix: Use updated configs if available (#59)
  • fix: Refactor codable support (#60)



November 22 2022

This release upgrades Portals to use Capacitor 4.


What's Changed

  • feat: Update to Capacitor 4 (#53)
  • feat: always have an initialContext (#54)



October 18 2022

What's Changed

  • fix: fix base64url conversion (#49)
  • chore: Remove mention of Cordova plugins being supported from README (#50)
  • fix: Don't let capacitor take over as UNNotificationCenterDelegate (#51)



September 20 2022

What's Changed

  • feat: Make live updates 0.2.0 compatible with IonicPortals (#45)



August 4 2022

What's Changed

  • feat: Add the ability to specify a custom LiveUpdateManager (#35)
  • feat: Add the ability to specify a default file to load other than index.html (#36)
  • fix: Make reload on PortalUIView work (#37)



July 12 2022

What's Changed

  • feat: Make Portals Bundle agnostic (#32)
  • fix: Show UIAlert for registration error when presenting UnregisteredView (#33)



May 25 2022

What's Changed

  • Add SPM Support (#28)
  • Support iOS 13 (#30)



May 23 2022

What's Changed

  • breaking: Update PortalManager to be a singleton. (#16)
  • fix: Add cap config and cordova config urls to InstanceDescriptor (#17)
  • breaking: Grand Renaming (#18)
  • breaking: Update IonicLiveUpdates to ~> 0.1 (#19)
  • breaking: Clean(er) Objective-C API (#20)
  • feat: Adds ExpressibleByStringLiteral to Portal (#22)
  • breaking: Remove centralized Portal management (#21)
  • fix: Properly coerce NSDictionary to JSObject like Capacitor does. (#23)
  • breaking: API Alignment (#24)
  • fix: Make PortalsPubSub.publish non-blocking (#25)



April 26 2022

What's Changed

  • feat(ios): use @objc for bridge and auxiliary APIs (#4)
  • Swift ergonomics (#8)
  • feat: Make PortalBuilder factory methods annotated with @discardableResult (#10)
  • fix: Swift Concurrency (#11)
To see more releases, visit GitHub.