Dependency management is always hell.I was a bully once in updating my android app dependencies. Until that dark day came into the picture. Suddenly my app uninstallation events went up. Firebase crash reports waking me up now and then. I don't have billions of users. But still, I have some loyal users (I have around 2L. Not bad for some app developed for my personal use. If you are VLC user you can give it a shot - VLC Stream and remote).
The update was very simple. I just wrapped my code in the try catch block to avoid crash ( I am yet to find the perfect solution for that ;-)) and updated some dependencies. that's it. The culprit was one of the support dependency I updated before. It broke the functionality of splash screen.without it, everything is meaningless in my app. As an indie developer, I don't have much time to test our pet projects and I don't have extensive test cases in my project.
After that I have always thought, 'Why should I change something that isn't broken yet?'. I was reluctant to change to support library dependencies until I had no other go. Because it always broke something in android. Android versioning was not great until they announce this.
The same applies to node projects, ember, react, angular, etc. while choosing dependencies, check whether it follows SemVer. Otherwise, make note of it in package.json (if you are in node projects) or build.gradle (if you are in android projects).So that you can be careful while updating those dependencies. To make our life easier, there are a set of rules that makes this process easier. semantic versioning (SemVer) is something that we can follow in our app releases too.
SemVer is defined as major.minor.patch-(alpha/beta).As simple as that. Ex, (1.2.14, 1.2.14-alpha).
Sample projects which follows semantic versioning, Ember.js, React.js, More about react versioning policy.
For more details, check here.