customerio / customerio-reactnative

MIT License
25 stars 13 forks source link

PLEASE USE FIXED VERSIONS IN NATIVE MODULES #148

Closed beqramo closed 1 year ago

beqramo commented 1 year ago

Guys as much as I appreciate your work and fast response and solution on every issue, I can't get rid of the situation that on every "yarn" run I need to expect that something will fail on your package. Even today but luckily you fixed it right away. https://github.com/customerio/customerio-reactnative/issues/146

Please prioritize use of fixed versions of native modules.

Thank you

Shahroz16 commented 1 year ago

Hey @beqramo, thank you for reaching out and apologies once again for the frustration it's causing you and others. Rest assured we are working on getting it fixed.

To provide a clearer understanding of why we haven't hardcoded the dependencies yet and why we are investigating innovative solutions, let's discuss the current set-up of the Customer IO native dependencies. There are three dependencies in total, two of which are included in our React Native package, while the third, the push messaging dependency, requires manual installation by users.

The operational functionality of the package depends on all of its dependencies sharing the same version. If we decided to hardcode the native dependencies within the React Native package, an issue would arise during your next package update. While the update would automatically retrieve the corresponding native module dependencies, it wouldn't update the manually-added push messaging dependency, leading to a potential version mismatch error. Consequently, you'd need to search for and install the compatible version of the push messaging dependency to resolve this issue.

To circumvent such complications, we've chosen a strategy that allows all dependencies to auto-update. By simply executing pod update --repo-update, all Customer IO-related dependencies within our package, as well as the manually-added ones, would be updated.

However, we recognize that the current method can cause problems, and are therefore exploring alternatives for a more stable, developer-friendly solution.

We hope this explanation helps clarify why we haven't hardcoded the dependencies immediately and why we are investing time in considering various alternatives. Your understanding and patience are much appreciated as we work on enhancing this aspect of the system.

beqramo commented 1 year ago

Hi, thanks for the full explanation, it is really helpfull

you can use the bash command line for that operation. I remember one package was doing something like that, I will post if I will find it.(But you can check any popular library and you will catch an idea of it)

Also, there is another alternative called expo-config for the expo if you want to.

dannyhw commented 1 year ago

yeah... every time you push new native changes our app build breaks. Please get this fixed asap, this broke our build again today for probably the 3rd or 4th time now.

If I didn't update in package.json the node_module I expect to always be running the same code from you.

Shahroz16 commented 1 year ago

Thank you for your patience folks, we are in the process of rolling this change out.

@dannyhw there was no new release, can you please share log of what broke your build today?

dannyhw commented 1 year ago

It was something like ciocommon doesnt exist. We had to upgrade the package and it started working again. We haven't done a build for a while (we do over the air updates) so it might have been a little while ago.

Appreciate that you're working on it.

levibostian commented 1 year ago

The Customer.io React Native SDK version 3 has been released.

This release increases stability of the SDK in regards to native module versions as mentioned here. Version 3 also makes updating the React Native SDK easier. When you want to update the Customer.io SDK in the future, run npm install && pod update --repo-update --project-directory=ios to do so.

Install version 3.0.0 in your package.json file, follow our migration doc (it is only modifications to your Podfile), and enjoy!