Software Component Usage
This is a review of the package.json file on the GAEN Mobile Github as of Feb 4, 2021
Link: https://github.com/Path-Check/gaen-mobile/blob/develop/package.json
"dependencies": {
"@bugsnag/react-native": "^7.3.4",
"@react-native-community/async-storage": "^1.12.1",
"@react-native-community/datetimepicker": "^3.0.8",
"@react-native-community/masked-view": "^0.1.10",
"@react-native-community/netinfo": "^5.9.4",
"@react-native-community/push-notification-ios": "^1.4.0",
"@react-native-community/segmented-control": "^2.1.2",
"@react-navigation/bottom-tabs": "^5.5.2",
"@react-navigation/native": "^5.7.3",
"@react-navigation/stack": "5.1.1",
"array-flat-polyfill": "^1.0.1",
"dayjs": "^1.8.24",
"i18next": "^19.3.3",
"prop-types": "^15.7.2",
"react": "16.13.1",
"react-i18next": "^11.4.0",
"react-native": "0.63.4",
"react-native-config": "^1.2.1",
"react-native-flash-message": "^0.1.16",
"react-native-gesture-handler": "^1.9.0",
"react-native-keyboard-aware-scroll-view": "^0.9.3",
"react-native-matomo-sdk": "^0.4.0",
"react-native-permissions": "^2.2.2",
"react-native-safe-area-context": "^3.1.9",
"react-native-screens": "^2.16.1",
"react-native-simple-crypto": "^0.2.15",
"react-native-splash-screen": "^3.2.0",
"react-native-static-safe-area-insets": "^2.1.1",
"react-native-svg": "^12.0.3",
"react-native-webview": "^11.2.0",
"ts.data.json": "^1.5.0"
},
Reaason for dependency component:
BugSnag - used for bug and error tracking within the GAEN mobile code and catching crashes and other hidden issues breaking the app
React Native Community:
Async Storage - Key/Value storage system for React Native. Being used for app specific data. Stores data right in app “local storage”. This package is technically depreciated but it hasn’t been upgraded since the depreciation notice so it’s safe to keep it for now.
DateTimePicker - for selecting various dates in the application
MaskedView - Shows an opaque view that is hidden from the user but still rendered.
NetInfo - Used for managing components/code for when certain network events fire.
PushNotificationiOS - used for sending native push notifications to iOS devices from the app
Segmented Control - Possible we aren’t using
React Navigation
Bottom Tabs - Used for basic navigation between screens in the app.
Native - Used for leveraging OS level navigation between screens in the app.
Stack - Managing multiple activities going on within the app
Array Flat Polyfill - Brought in to add “array flattening” functionality for Javascript
DayJS - Parsing and date manipulation
i18Next - Used for Translations
PropTypes - Core functionality for checking types of property variables
React i18Next - Used for translations
React Native - Core functionality for the entire app framework
React Native Config - Core functionality for the entire app framework
React Native Flash Message - Functionality for toasts and other “in app” popup messaging
React Native Gesture Handling - needed for @react-navigation
React Native Keyboard Aware Scroll - Used for auto scrolling input screens when the current input leaves the view
Matomo SDK - Used for Analytics
Permissions - Provides access to the OS permissions (enabling EN, Notifications, etc.)
Safe Area Context - Used for keeping the UI within the correct areas of a device
Screens - Core functionality for allowing multiple screens
Simple Crypto - Used for hashing to package the keys before sending up to the server
Splash Screen - Used for a UI element on initial app load splash screen
Static Safe Area Insets - Companion package to Safe Area Context
SVG - Used for displaying and manipulating SVGs used on the mobile app UIs
Webview - Currently being used for Tableau analytics on some GAEN apps
TS Data JSON - Used for deserializing JSON responses