5 ms·
I’m glad that the Canada COVID-19 contact tracing app is open source and available on GitHub, and I’m glad people can push fixes to it, but this kind of bug exi
by shaggyfrog 6y ago
I’m glad that the Canada COVID-19 contact tracing app is open source and available on GitHub, and I’m glad people can push fixes to it, but this kind of bug exists because it’s using React Native unnecessarily, and dragging in a zillion dependencies.
I don’t see why both the iOS and the Android versions can’t be fully native, besides a desire to have a single codebase. The apps aren’t doing anything fancy, UI-wise. They are basically just integrating with the native contract tracing system framework on each platform.
Dragging in React Native and its giant web of dependencies makes the codebase harder to audit and manage from a security perspective. It’s also a product of Facebook, which is greatly concerning from a privacy point of view.
I still have this app installed on my iPhone and I keep it up to date, but I really wish it was built differently.
- advisedwang 6y agoThe desire to have a single codebase seems pretty reasonable: * Reduces development cost * Provides more consistency for users (simpler to document and explain)
- jeromegv 6y agoIt was initially built by Shopify engineers and it’s their go-to technology so I guess that’s how it came about.
- mikewhy 6y ago> but this kind of bug exists because it’s using React Native Considering how this issue was from a package that isn't included with React Native, this seems like a bit of a stretch.
- kennywinker 6y agothe native way of doing this on iOS would be `SCNetworkReachability` which is part of the built-in SystemConfiguration framework. That call requires the endpoint to check as an input - thus prompting the developer to think about if they are contacting an unnecessary third party. So while this isn't really the specific fault of react native, it does seem to me to be the fault of a non-native framework that encourages developers to use higher level abstractions rather than system frameworks.
- mikewhy 6y agoThe library in question did use that function, but without something set up at the endpoint, it's not very useful: > A remote host is considered reachable when a data packet, sent by an application into the network stack, can leave the local device. Reachability does not guarantee that the data packet will actually be received by the host. https://developer.apple.com/documentation/systemconfiguration/scnetworkreachability-g7d https://developer.apple.com/documentation/systemconfiguratio... More details in this issue: https://github.com/react-native-community/react-native-netinfo/issues/307 https://github.com/react-native-community/react-native-netin...
- radicalbyte 6y agoThis is exactly what we're doing with the Dutch Contact Tracing app. Native apps. The workflow in our UI is larger than most and we support more languages (including right-to-left language). It's just not complex so - IMHO - it's a no-brainer to build the two out in parallel. We're also building it in the open and in English - come take a look here: https://github.com/minvws https://github.com/minvws Disclaimer: I'm working on the server.
- burke 6y agoFor what it's worth, this lack of complexity was also a lot of what led us to build COVID Shield/Alert in React Native too—the app doesn't have to do anything especially weird; most of it is just relatively normal UI stuff.
- radicalbyte 6y agoFunny, we had a bit of a holy war about the subject in the community. In the end we had some of the best Android, iOS and Server developers who were willing to do the 60+ hour weeks in order to get the system out. So we went for both. Once we're past this it will make a very nice point for study.