-
Notifications
You must be signed in to change notification settings - Fork 3k
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
[HybridApp] Configure HybridApp setup process and local environment #49845
Comments
Hey! I'll be working on this issue! |
Sorry it's taken me a little bit to write this down, I think the goal is this: New contributor from open source world
Existing contributor from open source worldNo changes, everything should work the same New Contributor+/Expert Contributor from Software Mansion
Existing Contributor+/Expert Contributor from Software Mansion
New Expensify employee
Existing Expensify employee
Questions:
|
cc @mateuuszzzzz @war-in ☝️ for any other ideas, questions, etc. |
This is a huge change that we're not ready to move forward yet. |
Hey @AndrewGable! Thanks for the post! I like the idea with running the
If we correctly get and setup the
Should these commands be executed in |
I think ideally these commands are all run in App |
Thanks! In that case I've started experimenting with the repo to see how to implement such flow - I'll come back with an update once I have some conclusions 😄 |
Hey @AndrewGable @Julesssss! I've played with the repo, and I come with first conclusions, so let me refer to the desired steps for the HybridApp setup 😄 Analysis
I think it's a good idea to keep this as the first step for all contributors!
I like the idea of executing the command in the Firstly, we would have to do some pretty nasty stuff with changing the directory structure, which may seem suspicious, and unintentionally break some local setups. The script would have to clone the My suggestion would be to try to clone the repo at the same level as
I've tried to create a symlink connection between Nevertheless the potential drawback of having two repos doesn't have to be so devastating, since it would give us a simple way of switching workspaces in order to build standalone NewDot
This step should be pretty straightforward - I've already done it in my previous POC. We could also combine it with the previous step, but I don't think it would be a big problem for devs to execute it on their own.
The The problem appears with the
As an additional suggestion I think we should change the submodule's name from SummaryHaving said all this, my suggestion would be to create such flow:
To sum up there are two changes between this suggestion, and @AndrewGable's proposal:
The current flow for contributors without an access to If you have any questions, please feel free to ask! I'll gladly explain everything that is unclear! 🙏 |
I need to dig into the problems mentioned in step 2, I think if we can get that to work than we will be a lot better off than having two repos |
It's worth to point out that if we're going to stay with one repo, I think we should have a way of building a standalone NewDot application locally - it could be beneficial eg. for debugging some HybridApp-specific problems. 😄 We could eg. add/modify some scripts to start a separate NewDot builds. On the other hand we can create a script that would leave the devs with only one project that contains HybridApp structure. The previous I think if we'd like to move on in this direction, we should create an additional prompt with clear information what is going on 😄 |
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! |
|
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.0.74-8 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:
If no regressions arise, payment will be issued on 2024-12-19. 🎊 For reference, here are some details about the assignees on this issue:
|
We merged and resolved a few build issues yesterday. There is also this crash due to yapl not building correctly, I am close to a fix here. We'll then continue to keep an eye out for local build issues. I will need to share a message for internal engineers at some point too. |
Shared details with internal engineers here. |
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.0.75-6 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:
If no regressions arise, payment will be issued on 2024-12-20. 🎊 For reference, here are some details about the assignees on this issue:
|
Working through internal build issue here. |
A couple of build issues are being discussed here: |
P/S authored by @staszekscp here
Problem
One of our biggest headaches is a smooth HybridApp local setup for the developers. I noticed that maybe the most problematic part was to wrap the head around the monorepo structure, and the fact that we have to remember about updating both repositories. This is how the structure looks like:
git
submodule that is pointed to Expensify/AppSolution
For the beginning we should create a simple bash script to recognise if we’re currently working on the HybridApp. It could look up one directory, and see if in its
package.json
the value for thename
key ismobile-expensify
. 💻Then, let’s migrate/create the following scripts in
Expensify/App
repo in order to minify overhead during the transition to HybridApp.setup-hybrid-app
- NEW - helper script (in parentExpensify/Mobile-Expensify repo
) that would do all necessary setup to start working with the HybridApp. Its responsibilities would be to:pull-old-dot
- NEW - helper script that would go to OD repo, and pull the changes, so you don’t have to jump between directoriespostinstall
- add execution ofnpm i
command in OldDot repo. It would also print out information if your OldDot repo is out of date, and inform you if you should runnpm run pull-old-dot
- the OldDot repo doesn’t change so often, so it’s easy to forget about it 😄ios
,pod-install
,ipad
,ipad-sm
,android
,clean
- if they’re executed in the HybridApp, run the commands in the HybridApp context (eg. build/clean HybridApp, not NewDot). Otherwise let them work as before. If someone works on the HybridApp, but would like to build NewDot, we can add a--nd
flag. In this way runningnpm run ios --nd
in HybridApp would build a standalone NewDot applicationBy introducing or modifying the scripts I’d like to limit to the minimum unnecessary switches between OldDot and NewDot. We could stay focused on the most important work in the React Native code, but in case of emergency we could jump up, and see what’s going on in OldDot! 😄
The key takeaway is that on HybridApp we’ll build the native code from another place, therefore the
android
andios
folders inExpensify/App
can be used only to build standalone NewDot, not the HybridApp. I know it may be a bit confusing at this moment, and we’ll point out in the README 😄 Nevertheless by using the proposed commands we should be able to minimise that problem. Theandroid/ios
folders will have to stay, though, because many OS contributors will only have access to NewDot, as it is at this moment!The text was updated successfully, but these errors were encountered: