-
Notifications
You must be signed in to change notification settings - Fork 3.2k
[HybridApp][MEDIUM] Improvement to HybridApp TTI / NewDot authentication page #49844
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Hey! With @WoLewicki we'll be working on this issue! |
Work is ongoing. |
In progress |
This issue has not been updated in over 15 days. @Julesssss, @staszekscp eroding to Monthly issue. P.S. Is everyone reading this sure this is really a near-term priority? Be brave: if you disagree, go ahead and close it out. If someone disagrees, they'll reopen it, and if they don't: one less thing to do! |
Making progress on the backend changes here. |
Backend is now providing tryNewDot onyxData and in the response data in some cases which should unblock work here. |
I'm fixing the incorrect NVP key here -- I'll share here when it hits staging/prod. |
It hit production today |
Hey @war-in, just checking in to see if this is still in progress? |
Hey, yes! We're actively hunting bugs |
Hi, the main sign-in flow works pretty good I am currently working on Onboarding. For some new accounts the onboarding flow doesn't start. Unfortunately, this behavior seems quite random. Once we fix that I believe we can move on to other sign-in flows: SAML, Apple and Google. |
Hi,
Same thing happens when trying to log in with account created on expansify.com. Because it's an empty array following (correct) onyx merge updates do not overwrite it.
Should the
|
Ah so that is the correct value of the NVP, it is empty during
You shouldn't be redirected in this case, you will only be redirected to New Expensify from OldExpensify. However, if you manually navigated to OldDot the
|
Oh ok, I understand, but would it be possible to an change empty array to an empty object. I don't think it is possible to overwrite an empty array with an object in Onyx using merge. This causes the value of
Do I understand correctly that new accounts (even created on expensify.com) should always go to ND? |
Ah gotcha, yeah that should be fine. I'll change that soon.
So this is changing frequently as we push more and more users to NewDot. Here is the most up to date logic:
|
Mhm, is that accurate? Anyone with any email that signs up on expensify.com and chooses individual or 1-10 is redirected into NewDot. Very soon though, that will be anyone who chooses 10+ as well I believe (CC: @chiragsalian). So all new sign-ups will go to NewDot, and then anyone identifying as 50+ in the onboarding modal will be sent back to Classic. I think this is the App issue to get it over the line: #60161 On HybridApp right now, all sign-ups go to the NewDot experience. Those that choose a 11+ option are being redirected back to Classic, but I think this will become 50+ as well soon per the above. |
The issue to get it over the line is https://github.com/Expensify/Expensify/issues/490399. I'm just waiting for some other parts to get live before moving https://github.com/Expensify/Expensify/issues/490399 to live. |
Yeah cool, I'm not sure if this issue is talking about the mobile app only, and specifically. In which case, all mobile sign-ups are going into NewDot already -- we're just sending anyone that chooses one of the 10+ options in the companyStep back to Classic -- which I believe we'll stop doing when the accountingStep upgrade comes in? |
This issue is regarding the HybridApp specific authentication page refactor. But good point Tom yeah, for mobile you are taken to NewDot for new accounts, BUT if you self select as a team with more than 10 users you'll be switched back to OldDot. I'll update this. |
Progress ongoing. |
Update:After the recent changes, all known bugs have been fixed, and most of the sign-in flows are working. The sign-in page is in a very usable state. Currently, the fully working flows are:
Everything seems to be working smoothly. There are only two blocking issues left:
Once we take care of that, we can move on to review and hopefully merge it soon. |
Hi, I've worked on Google and Apple flow configuration with @mateuuszzzzz. We have reused OD configuration which should work properly. At least on release builds. Unfortunately, not every flow works with AdHoc builds even on main, which makes it very hard to verify that the configuration provided by us is correct. In current state there are no errors returned by Google or Apple flows. The only error we get is I suspect returned from BE. The message is as follows:
It's problematic to tell whether it's caused by wrong token format or some BE issue. Is it possible for internal engineers to maybe test the changes on local signed release build and verify the configuration is correct? A lot of the changes in this pr are in native code that runs before we even get information from API. That makes it impossible to hide them behind the beta. Testing both flows and BE issue with |
This PR is very complex and changes code in multiple flows. It would be great to test this pr before we merge it. It would minimize the number of deploy blokers and bugs found later in development. @Julesssss Looking forward to hearing your thoughts. |
Hey, I just got back from holiday. Nice progress 🎉
I'm certain that Google SSO used to work on Android AdHoc builds and I can see they do not with the current AdHoc build on your PR, so hopefully it is a new BE issue I can help with. Apple will be trickier, I'm not sure we ever had a real method of testing this.
I'll work on this next. I just need to catch up with some things first. |
@Julesssss I've installed Android AdHoc build from a different PR and I wasn't able to login using Google flow. Let me know if theres anything more I can do to move this pr forward. |
Alright thanks, I think it broke recently so I'll take a look at this next. Today I submitted the PR which make the NVP default to an empty object. It should be live in a few days. |
Uh oh!
There was an error while loading. Please reload this page.
P/S authored by @staszekscp here
Problem
The TTI on HybridApp is longer than on a standalone NewDot application. In order to determine if a specific user should go to NewDot, HybridApp has to boot OldDot code first. The business logic for OldDot was written in JS in a framework called YAPL, and it runs on JSC.
Potentially also resolves:
Solution
Let’s replace JSC with Hermes! Hermes is known for its advantage over JSC in initial boot time, and it became a standard in the React Native world. Since YAPL is written in JS, theoretically should be able to do that, and get rid of JSC from the project. As bonus the app size would become smaller, too. 💪:skin-tone-2: 🚀
However, I’d like to emphasise that, since YAPL has been written in legacy JavaScript (mostly pre ES2015) there is a chance that the migration may become very time-consuming. Nevertheless I think it is worth to do at least a research, and see how far we can get, because it will speed up the both, OldDot, and HybridApp!
Mateusz' updated Solution
Adjust the current authentication flow on HybridApp to replace the OldDot sign-in page with the NewDot version.
SignInUser
command should return an additional field withnvp_tryNewDot
, allowing us to determine based on the value of thedismissed
key whether to stay on NewDot or transition to OldDot.The text was updated successfully, but these errors were encountered: