Performance: Route guards (canActivate, canDeactivate)
MEDIUM IMPACT
Route guards affect the initial navigation speed and responsiveness when changing routes in an Angular app.
async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> { // Async non-blocking permission check const result = await this.permissionService.checkPermissionsAsync(); return result; }
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
// Synchronous heavy computation or blocking call
const result = this.heavyPermissionCheck();
return result;
}| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Synchronous heavy guard | 0 (no DOM changes yet) | 0 | Blocks paint until done | [X] Bad |
| Asynchronous guard with Promise | 0 | 0 | Non-blocking paint | [OK] Good |