Basically I have come to the same conclusion as you in my question about returning json in a custom router.
It seems to me the “default routing” in kirby via c::set("routes")
is not using the custom router logic internally (?) which lead to a lot of confusion for developers trying to use the custom router for advanced functionality (such as route filters e.g.): things that work perfectly in c::set("routes")
suddenly don’t work anymore in custom routers and visa versa.