Thanks for the feedback.
This is a known limitation of avoid main roads
. This has been discussed for example here (in German): Problem mit Micro-Umleitungen im Ort
In a nutshell: the routing does not know a lot of context of the route, so it’s not possible to only allow long detours. A computer doesn’t understand that something is a detour.
In my experience more than 50% of the detours are due to data issues, so it’s always worthwhile to see what the data looks like and improve it if there are issues. Also see our documentation here.
This is already the expected behavior where possible. For these discussions it would be great to provide a short example and discussing this example. I just did a couple tests in Munich and the routes looked not too bad IMHO.
Because the route calculation is done on the server and not the device, see this topic: App: Offline routing (GraphHopper)
Are you talking about auto generated round trips? This is the expected behavior, the length is only an approximation.