Linking.addEventListener no longer working in Android

Hi there

I have a standalone app in both App Store and Play Store. It’s been live for a few months and gone through multiple expo sdk’s. Last good version was at sdk18. This weekend I attempted to migrate to sdk20 and enable branch.io.

I moved the app first to sdk19, tried it (via yarn start) and on my devices and everything looked ok, so I immediately moved to sdk20. iOS looked ok so I deployed that to App Store. Android had weird errors (Module JSTimersExecution is not a registered callable module (calling callTimers)) so I went back to sdk19 and deployed that to the Play Store. I noticed branch.io wasn’t working so I removed that code but now I realise Linking.addEventListener is no longer working as well. I need linking for our login flow so I deploy new version with sdk18, but it still doesn’t work. I checkout the git commit of last known good version and deploy that to App Store and still Linking.addEventListener isn’t called.

I feel like I’ve exhausted all options except wiping my Android device I have on my right now (which I’m about to do) just to see it changes anything.

My googles have turned up empty and I would be most thankful for any suggestions, be it something I might’ve done wrong or something I can do to debug this.

Best,
Árni Hermann

Not that it surprised me but factory reseting the device didn’t fix the issue.

Hey @arnihermann sorry that you’re running into this issue. I just tested with this project https://github.com/expo/foodwheel and got Linking.addEventListener working in SDK 20. The Module JSTimersExecution is not a registered callable module (calling callTimers) error makes me think there’s a version mismatch issue. Can you post your app.json and package.json?

I will post them when I’m at a computer today. Note however, Linking.addEventListener works using expo client, just not in the standalone build.

I published the app again under sdk20 and it’s the same, Linking.addEventListener is still not triggered in the standalone app but works in the expo client. However, the “JSTimersExecution is not a registered callable module (calling callTimers)” is no longer appearing, which is good.

The files are under https://gist.github.com/arnihermann/9da16c55aa6ffa40ea41b26805baf7b9

Ok I’ve found a fix. On Android in our standalone build, Constants.linkingUri has the value viska:// while on iOS it contains the value viska://+ – which is what the expo shell uses for linking.

@jesse are you able to confirm that this is happening for standalone Android builds and that it’s a regression – this didn’t happen for our builds we made last week.