Native vs PWA」「React Native vs Swift / Kotlin」のような2項対立 で「どちらを選ぶべきか」の観点でメリット・デメリットが語られることは多い ➔ 両方を経験した立場やMigrationという観点で語るものは多くない ➔ 今回実施したMigration from React Native to PWAの事例は誰かの役に 立つかもしれないと思ってやって来ました Migration中に感じた最近の潮流 9 Introduction
What kind of React Native app it was? React Native issues in dev & ops Migration design PWA, Hybrid app dev & tests & ops Review of the migration project 01 02 03 04 05 11
of React Native app it was? ➔ Introduction of our products and the app ➔ Characteristics of the React Native app ◆ Business ◆ Features, Usage ◆ Technical aspects ➔ Why was it React Native? 13
of React Native app it was? ➔ Introduction of our product ➔ Characteristics of the React Native app ◆ Business ◆ Features, Usage ◆ Technical aspects ➔ Why was it React Native? 18
➔ BYOD (Bring Your Own Devices) ➔ スタッフだけが使用するアプリなので App Store / Google Play Storeで公 開せず、DeployGateでアプリを配信 ◆ Apple / Googleのアプリ審査はなし Characteristics (Usage) 21
of our product ➔ Characteristics of the React Native app ◆ Business ◆ Features, Usage ◆ Technical aspects ➔ Why was it React Native? What kind of React Native app it was? 23
39 2.0.0 C, Dもupgradeしないといけないが、そのことにパッ ケージ管理システムではなく人間が気づく 2.0.0 $ yarn upgrade A A 2.0.0 depends on - B 2.0.0 - C 2.0.0 - D 2.0.0 It upgrades B ✅ 大抵コンパイルエラー、ビルド失敗、テスト失敗などで 問題に気づくので原因調査が大変
Upgrade 40 ➔ iOSのバージョンアップデートに伴って必須となる ➔ Need to upgrade Xcode => Need to upgrade React Native => Need to upgrade React etc. ➔ 0.49.0 -> 0.57.4になるまで1年近く放置してしまった ◆ モブプロしたりしたが、アップグレードに至らなかった ➔ ちなみにExpoは未使用だった
➔ WebViewのキャッシュを無効化するブリッジメソッド、UserDefaultsをクリア するブリッジメソッドを用意する ◆ Hybrid appでもdebugしやすくなったり、キャッシュの罠を避けられる Debug for Hybrid app 76 There are only two hard things in Computer Science: cache invalidation and naming things. -- Phil Karlton
Android PWAでリリース前の審査を避ける ◆ Google Play Storeの審査に時間がかかるようになった ◆ "一部のアプリで審査時間が長くなる可能性があります(最大で 7 日程 度ですが、例外的にもっとかかる場合があります)。" https://support.google.com/googleplay/android-developer/answer/6334282 ◆ Webサイトにアクセスしてから「Add to Home Screen」するPWAの場 合はこの問題に直面しない
2019 Proposal https://scrapbox.io/ohbarye/JSConf_2019_Proposal ➔ ネイティブアプリWEBViewでRemote Debug まとめ https://qiita.com/ryurock/items/4a6198e8bc64e268ac2e ➔ Badging for app icons https://web.dev/badging-api/ ➔ Badging API Explainer https://github.com/WICG/badging/blob/master/explainer.md ➔ Static vs Unit vs Integration vs E2E Testing for Frontend Apps https://kentcdodds.com/blog/unit-vs-integration-vs-e2e-tests ➔ Why I Never Use Shallow Rendering https://kentcdodds.com/blog/why-i-never-use-shallow-rendering 101