There are a multitude of ways that developers could go about it, and they should really make it clear when users are downloading the software for the first time. You could build the app with built-in versioning that detects when other apps no longer speak the same "language" and then old versions would organically become less and less useful as most of the users upgraded. More drastic measures such as a kill switch that disables the app could also be written, though of course any such open source dapps could be altered by another developer to disable it.
In general, it's like consensus upgrades - if a new version offers a better experience then a lot of people will upgrade to it and this will likely then incentivize the laggards to upgrade as well.