rive-app / rive-wasm

Wasm/JS runtime for Rive
MIT License
660 stars 46 forks source link

Rive animation not functioning on iOS mobile phones in Lockdown mode #350

Open chinmayakcv opened 3 months ago

chinmayakcv commented 3 months ago

Description

Users have reported that Rive animations fail to function on iOS mobile devices when the device is in 'lockdown' mode. This issue appears to be isolated to iOS devices, as animations are functioning correctly on Android devices and on iOS devices with 'lockdown' mode disabled.

As per Apple's restrictions, WebAssembly (WASM) modules are not allowed to execute within browsers when the device is in 'lockdown' mode. This limitation is impacting the functionality of Rive animations.

Steps to Reproduce:

Expected Behavior:

The Rive animation should play and function correctly on iOS mobile devices, regardless of the 'lockdown' mode status, when accessed through Safari or Chrome browsers.

Actual Behavior:

The animation fails to play or function when the iOS device is in 'lockdown' mode, irrespective of the browser used (Safari or Chrome).

Screenshots

Browser & Versions (please complete the following information)

Additional context

This issue is evident even on the showcase animations hosted on the Rive website.

This issue significantly impacts users who rely on 'lockdown' mode for security purposes while also utilizing the web application featuring Rive animations on iOS devices. Collaborative efforts to address and resolve this issue are greatly appreciated.

Please suggest possible solutions

HayesGordon commented 3 months ago

Hi @chinmayakcv, our web runtimes rely on WASM to run.

Something we could provide is a way to demonstrate how to build using pure JS (not WASM) and a way to to host it. Note that at runtime, this will result in a slower update cycle as it'll run on JS instead of WASM, and that only the canvas renderer can be used (not WebGL).

chinmayakcv commented 3 months ago

Hi @HayesGordon ,

Thanks for the update. It would be helpful if you can point me to any guides/resources for building runtime in pure JS. I understand we can only use canvas renderer and performance hit using pure JS implementation