BackgroundFetch, BackgroundLocation and other services relying on TaskService are broken

Please provide the following:

  1. All versions up to sdk36 (at least since sdk35)
  2. Platforms: android, also reproduced on iOS (but no logs)
  3. Workflow: managed

The code that uses the TaskService on android has not been working in the managed workflow in the following way: if the app gets removed from the recently used apps, or if the phone reboots, the first alarm that wakes up for a BackgroundFetch of BackgroundLocation call crashes the app due to a loader error.

I’ve raised an issue in https://github.com/expo/expo/issues/6290 with code to reproduce the problem, logs, etc, and there are many other reports of Background Location not working such as https://github.com/expo/expo/issues/6017 which are actually because of the same root cause (you can easily tell from the logs).

Right now, the documentation states that it’s a feature of expo, but it’s actually not usable.

Github issues or slack posts seem to get lost in the noise, I was hoping that the push to fix bugs in SDK36 would have improved the situation but it hasn’t.

  1. the documentation should be updated to reflect that it’s not working in the current SDK
  2. the issues seem to be assigned to tsapeta who wrote the TaskService code, but it seems like it’s a deeper issue with the way the app gets loaded and does not end up being fixed since it’s not a bug in the actual TaskService code. It looks like the triage isn’t really happening properly despite users providing detailed bug reports.

I’m at lost what to do to get this fixed.

The paid-for service from expo is only to get priority builds (and other goodies), but not actually to get support on the framework itself. I would gladly pay the expo team a bounty to get this fixed but sadly I cannot.

The reason I chose expo was so that I could focus on building the app, not maintaining the build infrastructure. I’m ready to accept trade-offs for this, like a huge binary size mainly to hold face recognition models that I’m not using, slower upgrades of upstream packages, etc…

But when something is marked in the doc as implemented for the last 2 releases and remains so broken that the only way around is to eject and do everything myself then expo completely loses its appeal.

What is the way forward with these kinds of problems ?