# TRANSFORM_WIDTHS

```ts
const TRANSFORM_WIDTHS: readonly [96, 128, 160, 180, 240, 256, 320, 400, 480, 600, 640, 800, 960, 1080, 1200, 1280, 1440, 1600, 1920, 2560, 3840];
```

Defined in: packages/asset-client/dist/index.d.ts:276

Widths the CDN edge whitelists (DoS guard).
Requesting any OTHER width returns HTTP 400 at the edge (unsigned URLs). These are the
1× base ladder values; DPR ×2/×3 multiples are applied + whitelisted server-side. Import
this instead of hardcoding magic widths so an unsupported size is caught in review/IDE.

⭐ **180 es el `apple-touch-icon`, y está acá por eso.** Apple pide 180×180 para
el icono de pantalla de inicio en un iPhone 3×, y el monorepo de neo ya lo
estandarizó: `webapp-storefront` commitea un `apple-icon.png` de 180×180 por
tenant. Sin este escalón, una app que sirve el icono desde el CDN tiene que
elegir entre 160 (iOS lo agranda, sale borroso) y 240 (lo achica, sale bien
pero pesa de más). Medido 2026-08-29 sobre la foto de un agente: 240² en PNG
son 57,5 KB contra 6,5 KB del WebP a 400², así que el tamaño de más no es
gratis. El caso real: `apps/bio-web/src/lib/seo/favicon.ts`, que sirve **la
foto del propio negocio** como icono de su página.