March 20, 2024 · Tommy Bordas

How I Optimized an Angular Application Performance by 40%

angularperformanceoptimizationweb

As a senior Angular developer, I recently had the opportunity to optimize a complex enterprise application that was suffering from performance issues. In this article, I share the concrete techniques that helped me improve loading times by 40%.

Context

The application in question was a management platform with:

  • Over 100 components
  • Complex data tables
  • Multiple third-party integrations
  • Initial bundle size of 5MB

Key Optimizations

1. Smart Lazy Loading

I implemented an advanced lazy loading strategy:

const routes: Routes = [
  {
    path: 'dashboard',
    loadChildren: () => import('./dashboard/dashboard.module')
      .then(m => m.DashboardModule),
    data: { preload: true }
  }
];

2. Change Detection Optimization

I used OnPush and Angular 17's Signals:

@Component({
  changeDetection: ChangeDetectionStrategy.OnPush
})
export class DataTableComponent {
  private itemsSignal = signal<Item[]>([]);
  items = computed(() => this.filterItems(this.itemsSignal()));
}

3. Smart Caching

Implementation of a caching strategy with RxJS:

@Injectable()
export class DataService {
  private cache = new Map<string, Observable<any>>();

  getData(key: string): Observable<any> {
    if (!this.cache.has(key)) {
      const request = this.http.get(`/api/${key}`).pipe(
        shareReplay(1),
        timeout(5000)
      );
      this.cache.set(key, request);
    }
    return this.cache.get(key)!;
  }
}

Concrete Results

  • Initial loading time reduced from 5s to 3s
  • Bundle size reduced from 5MB to 2.8MB
  • Lighthouse score improved from 65 to 92
  • Significantly enhanced user experience

Methodology

  1. Initial Audit: Using Chrome DevTools and Lighthouse
  2. Bottleneck Identification: Angular DevTools and profiling
  3. Progressive Optimizations: A/B testing for each change
  4. Continuous Monitoring: Setting up tracking tools

Conclusion

These optimizations not only improved technical performance but also had a direct impact on business KPIs:

  • +25% conversion rate
  • -30% bounce rate
  • Increased user satisfaction

If your Angular application needs similar optimizations, don't hesitate to contact me to discuss it.