¿Cómo usarías SSR, hydration y `@defer` para mejorar LCP sin complicar de más la app?

¿Cómo usarías SSR, hydration y `@defer` para mejorar LCP sin complicar de más la app? en Angular: criterios sobre rendimiento y sSR, errores comunes y respue...

3 min de lecturaSenior
Difícil RendimientoSSRHidratación

"¿Cómo usarías SSR, hydration y @defer para mejorar LCP sin complicar de más la app?" toca un punto muy concreto de Angular: cómo tomar decisiones de rendimiento sin esconder el problema bajo una abstracción vistosa.

Una respuesta senior se nota cuando nombras qué riesgo quieres reducir con rendimiento en Angular para "Cómo usarías SSR, hydration y @defer para mejorar LCP sin complicar de más la app", qué concesión aceptarías frente a sSR y qué comprobarías antes de extender la decisión a todo el sistema.

Qué evalúa el entrevistador

  • Si distingues qué parte de "Cómo usarías SSR, hydration y @defer para mejorar LCP sin complicar de más la app" pertenece a rendimiento y cuál debería resolverse en sSR.
  • Si conviertes la respuesta en criterios observables: límites claros, impacto en el mantenimiento y forma de detectar regresiones.
  • Si entiendes qué dispara trabajo real de render o hidratación y cuándo merece la pena optimizar frente a cuándo solo estás moviendo complejidad.

Respuesta sólida

  • Explica qué unidad quieres volver a pintar, conservar o diferir y por qué esa decisión mejora la experiencia sin complicar el árbol.
  • Relaciona la solución con claves, memoización, detección de cambios, hidratación o virtualización solo si el cuello de botella está realmente ahí.
  • Si propones optimización, acompáñala de una forma de medirla con herramientas o métricas visibles.

Compromisos y errores comunes

  • Optimizar sin perfilar antes suele desplazar la complejidad hacia el componente sin tocar el verdadero cuello de botella.
  • Forzar memoización, cachés o control fino del render donde no hace falta complica la depuración y suele envejecer mal.

Ejemplo de código

Un ejemplo pequeño ayuda a ver dónde colocarías la lógica de rendimiento en "Cómo usarías SSR, hydration y @defer para mejorar LCP sin complicar de más la app" y qué parte dejarías derivada o encapsulada.

import { ChangeDetectionStrategy, Component, computed, signal } from '@angular/core';

@Component({
  selector: 'app-product-filter',
  standalone: true,
  changeDetection: ChangeDetectionStrategy.OnPush,
  template: `
    <input [value]="query()" (input)="query.set(($any($event.target)).value)" />
    <ul>
      @for (product of filteredProducts(); track product.id) {
        <li>{{ product.name }}</li>
      }
    </ul>
  `,
})
export class ProductFilterComponent {
  readonly query = signal('');
  readonly products = signal([{ id: 1, name: 'Angular' }, { id: 2, name: 'RxJS' }]);
  readonly filteredProducts = computed(() =>
    this.products().filter((product) =>
      product.name.toLowerCase().includes(this.query().trim().toLowerCase()),
    ),
  );
}

Lo importante no es la API concreta, sino que la solución hace visible la fuente de verdad, el tratamiento del error y el punto exacto donde rendimiento se sincroniza con sSR dentro de "Cómo usarías SSR, hydration y @defer para mejorar LCP sin complicar de más la app" en Angular.

Ejemplo o caso real

Yo lo bajaría a un escenario reconocible de Angular: una pieza donde "Cómo usarías SSR, hydration y @defer para mejorar LCP sin complicar de más la app" aparece de forma recurrente, ya ha dejado señales en revisión o en soporte y mezcla rendimiento con sSR. Si la decisión mejora claridad, observabilidad y velocidad de cambio en ese trozo, entonces merece escalarla; si no, la dejaría local y documentada.

Frase corta de entrevista

Primero aclaro qué problema resuelvo con rendimiento y luego elijo la técnica; no al revés.

¿Completaste esta sección?

Marcarla como leída actualiza tu progreso.