Here are my thoughts:
1. Knowledge Sharing
Developers need to have the knowledge about the whole product, especially about how the feature he or she is responsible is being used.
No one would intend to make the code broken unless for political reasons, such as avoiding dependencies. We can argue that the developers are careless. However, in my experience, most of the cases, lake of the knowledge is the reason.
2. Document the dependencies
In addition to sharing the usage and dependencies, it is better to officially document them.
3. Test the dependencies as part of the unit testingAvoiding regression issue requires to make the regression testing earlier in a smaller unit.
The integration issue does not have to be found during integration testing.
The integration issues can be found if the producer team know the dependencies and add those test cases into the regular testing plan for certifying the smaller module, BEFORE checking the codes, or making the codes available for integration.