Earlier quoted context omitted.
> It doesn't let you avoid a road or favour another This might be a computational cost thing. Modern routing algorithms preprocess the graph to find the optimal route orders of magnitude faster than you normally would without preprocessing. If you let each person customize the graph then such queries would be much more costly. Then again, I'm sure there are lots of other complications already and that most users woul…
Hire some game devs that have worked on path finding in AAA games. They will find a way to partially pre process the map data in such a way that on-device computation can then let the user pick and choose what roads to favor and what roads to exclude. And as an added bonus they’ll be unrelentingly optimizing your map application to the point where the UI will run at 144 Hz ;)
https://www.cyclestreets.net/help/journey/routing/
at the most basic level it lets you choose between fastest and quietest routes, understands hills, cycle paths, etc.
There's many, many other choices https://wiki.openstreetmap.org/wiki/Routing
contraction hierarchies https://en.wikipedia.org/wiki/Contraction_hierarchies made cross-continent route planning practical and practically instant, eg in GraphHopper. A lot of the options listed there work offline.