OsmAnd routing works OK for biking, but I specifically meant BRouter.
The first thing I noticed was that it's a lot faster - I get the routing results almost immediately, even on a low spec phone (with the drawback that you need additional space for the routing segments).
The generated routes are a lot better, too. They make more "sense" from a bikers perspective, because BRouter is elevation-aware. It also gives tracks that are on official cycle routes a higher priority (can be disabled).
I tested it with trips I usually cycle and it calculated routes that were very similar if not identical to the ones I chose myself. That's what I expect from a good routing algorithm.
I have used maps.me until a few years ago but was never really happy with the performance of the bike routing algorithm.
I've switched to Osmand [1] and BRouter [2] (both available on F-Droid) and nerver looked back. BRouter on Android is a bit tricky to set up (you need to download routing tiles in addition to the map files through a really ugly UI), but once you're done it's the best bike navigator I can think of (and it's really fast).
The BRouter profiles are highly customizable, check out Poutnik's repositories [3] for examples.
Some of his profiles and many others con be tested on https://brouter.m11n.de/ (german).