Al mostrar el arbol de una release o un tema, se observa cierta lentitud, se ve como va dibujando los items uno tras otro. Esto puede deberse a que se hacen varias peticiones al servidor y luego la lógica de ordenarlas se hace en el cliente. Una opción más eficiente sería realizar una petición que devuelva la release y todos los hijos preparados para mostrarlos de una vez.
Para el caso de los árboles, la lógica está compartida. El servidor es el que calcula el árbol que se tiene que mostrar, devolviendo una lista de identificadores. Sin embargo, es el cliente el que decide que datos mostrar, y por tanto el que, por cada identificador, solicita la información (nombre, descripción, etc) que necesita. Esto ralentiza el proceso, pero consideré que es la forma en la que se debía implementar. Aún así, intentaré buscar una solución intermedia.
En la query que te da el documento y sus derivados, te puede mandar directamente la información que necesitas (descripción, prioridad...).
El problema que veo yo, no es en la query, sino en la forma y las consecuencias de trasmitir esos resultados desde el servidor hasta el cliente. Me explico:
La solución que se me ocurre es que el servidor le mande al cliente un objeto de tipo tree ya formado. Esto simplificaría muchísimo la lógica del lado del cliente, lo que me parece muy buena idea. Sin embargo, si un día el cliente quiere otra información distinta, es el servidor el que se debería de reprogramar. Y eso, no sé hasta que punto es una buena solución.
Dicho esto, en cuanto termine otras mejoras y errores, intentaré hacerlo como dices.