* feat(frontend): Add an onRecompute callback to handle recompute side effects * feat(frontend): use cb array * feat(frontend): use cb array * feat(frontend): clean up * feat(frontend): clean up * feat(frontend): code improvement