V1 vs V2 Wins and Losses

icon picker
V1 Mobile App Tear Down

error
This is is from the following Google Doc put together by Isaac: ​

As we transition from working in our current V1 stack to our new V2 stack, one of the main goals of starting in a new stack is to make sure that we do not repeat any of the mistakes from the previous. Seeing as we are building V2 in Flutter/Dart with a mobile-first approach, it’s important to note some of the aspects of our current mobile app that we want to avoid in the future, as well as some features that we were just never able to build out due to the V1 architecture.
I’ve compiled a list of these below that I’ve named our “Reject List” for items to avoid building out, and our “Wish List” for items we need to place a greater emphasis on in V2.

Reject List

Our Cordova files are NOT stored in git meaning that anything requiring the actual Cordova files (app icon, notification icon, colors, launch screen, app permissions) are all only defined locally and need to be recreated on EVERY update of our Cordova platforms
The Android build requires manual entry of the app colors, permissions, version, and notification icon on EVERY build
The mobile app does NOT have any sort of CI/CD pipeline setup so every mobile deployment is extremely hands on and time consuming
We use Cordova plugins to handle locking screen orientation to portrait, storing Auth tokens in the device keychain for automatic sign in, receiving and storing the device token for notifications, and handling what happens when a notification is received/tapped on
We use Cordova’s `onDeviceReady` event listener to let the Vuex Store know that we are on the mobile app so we can do app specific behavior/styles in the app and Flutter might have a better alternative
Device tokens do NOT get deleted at any moment, meaning a user that signs out of 1 user account and into another will STILL receive push notifications for that other user since notifications are device token scoped
Our status bar in-app (the top of the iPhone that displays carrier, WiFi, and battery status) is bound to whether the user is using dark mode or not, meaning that even if our app doesn’t have dark mode, dark mode users get a white status bar that blends in with our current colors
We use a Cordova plugin for importing mobile contacts and our implementation is kind of janky and has not been updated in over a year
We have to add an event listener to when a user unfocuses an input that will automatically scroll the user to the top of the page. This is because we do not allow zooming in/out on the mobile app nor do we support scrolling the actual page (we allow scrolling in TriPanel and PageTemplate)
Because of the restrictions we have, if we did not attach our event listener to the unfocus event, then users would actually be stuck zoomed in on the input (since iOS automatically zooms in on focused inputs)
We also have to add specific styles and classes to our container elements when on the sign in page or else the user won’t be able to fully see all elements, and we actually remove these classes and styles upon logging into the app because they interfere with the actual app
Additionally, we have to add even MORE custom styles/classes for iOS specifically just so we can see the bottom navbar
We use Cordova’s InAppBrowser plugin to handle all link clicks so that they open in an in-app browser, and without this plugin it actually opens these link clicks in a custom in-app browser that CANNOT be closed and essentially bricks the app for the user
This is something that happens as a result of Cordova essentially being a WebView
Intercom clicks require us to actually call the Intercom Cordova Plugin to get the messenger to appear, otherwise the messenger will actually never appear regardless of our Intercom configuration
Do NOT allow users to record videos
Do NOT allow tooltips of any kind for mobile

Wish List

The ability to import contacts from other providers than just the user’s phone contacts
A way to invalidate device tokens when a user signs out
Possibly a way to delete invalid device tokens (tokens become invalid whenever the app is deleted)
Allow the mobile app to go into landscape mode on iPads and allow zooming in of content
Better handling of push notifications so they can do more than just navigate to a route
Hands-off deployment of the mobile app so it doesn’t require a dev to user their computer for a mobile app build
Mobile app unit and end-to-end tests
Integration with Apple Pay at a higher price point so we don’t have to hide subscription related features
Mobile app sign up
Native app gestures like edge swiping to navigate
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.