Issues on iOS 18.5 – Custom Swiper Misbehaving & App Lagging

Hi Ionic Team and Community,

We are experiencing a critical issue after our customer upgraded to iOS 18.5.

Problem Description:

  • Our app contains a custom swiper component, which is used in a loop to display time slots.
  • Previously, swiping on a specific time slot would select and act on that slot.
  • However, after the iOS 18.5 update, swiping on the first time slot incorrectly selects the second slot instead. The swipe behavior is now misaligned.
  • This was not an issue on earlier iOS versions (including 18.4.x and below).
  • In addition to the swiper bug, the app overall feels laggy and unresponsive, occasionally hanging during user interaction.

Technical Context:

  • Framework: Ionic 6 / Angular
  • Swiper: Custom-built swiper logic (not using Swiper.js or external lib)
  • Affected Device(s): iPhones and iPads running iOS 18.5
  • Unchanged Code: No code changes have been made recently; this issue surfaced immediately after the iOS upgrade.

Request:

  • Has anyone else in the community faced similar issues on iOS 18.5?
  • Are there known compatibility issues or updates required for hybrid apps with the iOS 18.5 release?
  • Any recommended workarounds for swipe handling or performance tuning?

Any help or insight would be greatly appreciated.

Thanks in advance!
Kaushal

We have seen similar behavior with iOS 18.5 on a few client projects recently, particularly involving custom Swiper setups in hybrid apps (Ionic/Angular). It seems Apple’s latest update introduced some subtle changes to how the rendering pipeline interacts with heavy DOM manipulations and high-refresh-rate animations like Swiper.

Helpful

  1. This version of iOS appears to be more sensitive to translate3d and excessive will-change usage. If you’ve customized Swiper heavily with custom transitions or CSS transforms, try simplifying them or temporarily removing will-change properties to test performance.

  2. Try enabling passive: true: If your Swiper setup includes event handlers on scroll or touch, make sure they are set as passive to avoid blocking the main thread

element.addEventListener('touchstart', handler, { passive: true });

  1. Use Swiper 9 OR test with latest v10+

  2. third-party interactions: We noticed in one case that a gesture directive (ion-gesture) from Ionic was conflicting subtly with Swiper’s touch handlers. It caused frame drops only on iOS. Disabling that directive during Swiper interactions resolved the issue.

  3. Use Safari’s Web Inspector (via USB) to profile your hybrid app directly on iOS 18.5. You will likely see dropped frames, long tasks or layout thrashing during swiper transitions, this can guide you to bottlenecks.

In our organization, we had a logistics-based app that started lagging after iOS 18.4+. We tracked it down to an overly complex DOM structure inside custom Swiper slides combined with nested ion-content. Simplifying the structure and reducing DOM depth made the transitions smooth again, even without changing Swiper’s version.

2 Likes