## 問題 importmap-railsは[v2.0.0](https://github.com/rails/importmap-rails/releases/tag/v2.0.0)で、「ネイティブでImport mapsに対応していないブラウザでImport mapsを機能させるためのshims」の利用を打ち切りました。 一方で、[iOS 16.3以前に搭載されているSafariブラウザは、ネイティブではImport mapsに対応していません](https://caniuse.com/import-maps)。 したがって、importmap-railsを1.x系から2.x系にバージョンアップすると、iOS 16.3以前のデバイスではJavaScriptを利用したRailsアプリが動かなくなります。 このことは、[この打ち切りのプルリクエスト #216](https://github.com/rails/importmap-rails/pull/216)で議論されているように、開発陣に既に認識されており、認識した上での打ち切りとなっています。 なお、特にiOS 15は、[2024-01-22にセキュリティアップデートが出ている](https://support.apple.com/ja-jp/HT201222)Appleがサポートをまだ続けているOSであるにもかかわらず、最新の15.8.1へアップデートしたデバイスであってもRailsアプリが動かなくなるため要注意です。 ### (参考)iOS 15とiOS 16の状況 - [2024-01-22にセキュリティアップデートが出されている](https://support.apple.com/ja-jp/HT201222)ため、iOS 15以降はAppleがサポートを続けているOSであると考えられます。 - [こちらのWebサイト](https://moduleapps.com/mobile-marketing/ios-ver/)によると、2023年8月時点の国内シェアはiOS 16が85.1%、iOS 15が10.4%となっています。 - [こちらのWebサイト](https://www.statista.com/statistics/565270/apple-devices-ios-version-share-worldwide/#:~:text=The%20new%20mobile%20operating%20system,13%20percent%20of%20mobile%20devices.)によると、2023年5月時点の全世界でのシェアはiOS 16が81%、iOS 15が13%となっています。 以上から、iOS 15とiOS 16のデバイスは、2024年2月現在まだまだ利用されていると言えます。 ## 回避策 importmap-railsを用いたRails 7アプリで、iOS 16.3以前をサポートするには、 以下のように`javascript_importmap_tags`の前に[`es-module-shims`](https://github.com/guybedford/es-module-shims)を入れます。 詳細は、[GitHubの公式リポジトリのREADMEの該当部分(Supporting legacy browsers such as Safari on iOS 15)](https://github.com/rails/importmap-rails?tab=readme-ov-file#supporting-legacy-browsers-such-as-safari-on-ios-15)を参照してください。 ```erb <%= javascript_importmap_tags %> ``` ### 参考情報 - [この回避策で上手く行ったという報告](https://github.com/rails/importmap-rails/pull/216#issuecomment-1882176991)