Safari 27 se publicó el 14 de septiembre de 2026, junto con iOS 27, iPadOS 27 y macOS 27. Las notas de la versión de Apple añaden una línea que importa más de lo que parece: el mismo Safari también llega a macOS 26 y macOS Sequoia. Así que no queda limitado a quienes instalaron el sistema operativo nuevo. Llega a cualquiera que acepte una actualización de Safari en un Mac de dos años, y a todos los iPhone que se actualizan solos durante la noche, que son casi todos.

Al final de la semana, buena parte de las personas que visitan su sitio desde un iPhone estará usando un navegador distinto del que usaba el viernes, y casi ninguna lo sabrá. Eso es lo que convierte el lanzamiento de un navegador en un evento generador de informes de error. La página no cambió. Los informes sobre ella sí lo harán.

El anuncio de la beta en la WWDC cifraba la publicación en 58 funciones nuevas, 525 correcciones y 4 desaprobaciones. La mayoría son invisibles para cualquiera que no escriba CSS. Un puñado cambia lo que hace una página de una forma que el usuario puede ver, y esas son las que llegan como tickets. Aquí están, con qué hacer en cada caso.

El anclaje de desplazamiento está activo, y desplaza un error en lugar de eliminarlo

Durante años, Safari fue el navegador donde la página saltaba. Una imagen terminaba de cargar por encima del párrafo que estaba leyendo, o un banner se insertaba arriba del todo, y todo se movía hacia abajo bajo su dedo. Chrome y Firefox llevan años compensando eso; ahora Safari también lo hace. Cuando se inserta o se elimina contenido por encima del viewport, el navegador ajusta la posición de desplazamiento para que lo que estaba leyendo se quede donde estaba.

Eso cierra toda una familia de informes del tipo “la página salta mientras estoy leyendo”, solo para los usuarios de Safari 27. Los que sigan en Safari 26 seguirán reportándolos, que es la primera razón por la que la versión importa en el ticket.

La segunda razón es la trampa. Muchos sitios ya combatían el salto por su cuenta: medían la altura de lo que estaba a punto de cargar y desplazaban la posición de scroll esa misma cantidad cuando llegaba. Ese código era correcto el viernes. Hoy, en Safari 27, el navegador hace la misma corrección primero, y la corrección del sitio se suma encima. Ahora la página salta en la dirección contraria, exactamente la cantidad que el sitio solía corregir. Un informe que diga “la página salta hacia arriba cuando cargan las imágenes, antes no pasaba” es justo ese error, y la respuesta honesta es que la corrección del propio sitio es ahora la causa.

La salida estándar es la misma en todos los navegadores: overflow-anchor: none en el contenedor desactiva el anclaje del navegador para esa región, de modo que solo se ejecuta la compensación propia del sitio. O, mejor todavía, elimine la compensación y deje que los tres motores lo gestionen.

La misma sección de las notas corrige algo más concreto que generaba una forma de informe muy confusa en iOS: llamar a scrollTo durante un desplazamiento por inercia solía interrumpir el scroll en seco. Una página que desplazaba al usuario a algún sitio y luego parecía haber “agarrado” la pantalla solía ser esto. Corregido en la 27, presente en la 26.

Ocho correcciones de Content Security Policy, y dos de ellas generan informes

La sección de seguridad de las notas de la versión enumera ocho correcciones de Content Security Policy. Seis de ellas hacen a Safari más estricto o más correcto de formas que sobre todo afectan a páginas que ya estaban ligeramente mal. Dos de ellas aparecerán en un endpoint de informes sin que usted haya cambiado nada.

Las violaciones de frame-ancestors en una política report-only se descartaban en lugar de reportarse. Ahora se envían. Un sitio que ejecuta Content-Security-Policy-Report-Only con frame-ancestors, que es como la mayoría de los equipos descubren quién los está embebiendo antes de aplicar nada de forma forzosa, ha sido invisible para Safari desde que esa política existe. Desde esta semana, los informes llegan. El volumen puede parecer un ataque. Es un backlog.

Las importaciones de módulos JSON (import data from "./x.json" with { type: "json" }) se comprobaban contra script-src. La especificación dice connect-src, y Safari 27 ahora está de acuerdo. Una política que permitía el origen del JSON bajo script-src pero no bajo connect-src empieza a bloquear esas importaciones, y una política que hacía lo contrario empieza a permitirlas. En ambos casos, el comportamiento de la página cambia en una versión de navegador y no en la anterior.

Débil
Nuestro endpoint de informes CSP se llenó durante la noche. Algo nos está embebiendo por todas partes.
Mejor
Las violaciones de frame-ancestors report-only de Safari 27.0 empezaron a llegar el 15 de septiembre. Safari 26 las descartaba, así que se trata del embebido que ya existía y no podíamos ver, no de embebido nuevo.

Otras dos de la misma lista merecen una frase, porque convierten una página rota en una que funciona, y eso también es un cambio que alguien va a notar. Los elementos <object> que cargan imágenes estaban siendo bloqueados por img-src y ya no lo están. Y 'self' no coincidía con los orígenes de script en documentos con un origen opaco, como un iframe en sandbox, así que algunos scripts que deberían haberse ejecutado no lo hacían. Ambos corregidos. Si esta semana una página empezó a funcionar misteriosamente en el móvil de alguien, puede que no haya sido su despliegue.

Selects con estilo que antes eran simples

appearance: base-select llega en Safari 27, junto con el elemento <selectedcontent>. Cualquier sitio que ya publicara un <select> personalizado para Chrome, protegido con detección de funciones, ahora obtiene la versión personalizada también en Safari. Ese es el resultado buscado, y normalmente es bueno. También es la primera vez que ese CSS se ejecuta en Safari, y la primera vez que alguien lo ve en un iPhone con el ancho real, con el teclado real, en el modo oscuro real. Espere algún informe puntual, y trate “el desplegable se ve distinto en mi móvil desde ayer” como algo exacto y no como confusión del usuario.

Cookies seguras en localhost

Escondido en la sección de red: Safari ahora respeta las cookies Secure en hosts loopback. Todos los demás motores lo hacen desde hace años, y es la razón por la que un flujo de inicio de sesión podía funcionar en Chrome en localhost, fallar solo en Safari, y mandar a alguien a pasar una hora revisando certificados. Esa hora concreta ya ha desaparecido. Qué es realmente localhost explica el resto de por qué “funciona en localhost” demuestra menos de lo que parece.

Qué significa todo esto para el informe

Cada punto anterior tiene la misma forma: la misma página, comportándose de una manera en Safari 26.6 y de otra en Safari 27.0, el mismo día, para dos personas sentadas una al lado de la otra. Esa forma solo es diagnosticable si el informe dice de cuál de las dos vino.

La mayoría de los informes no lo dicen. “Safari en mi iPhone” es lo que la gente escribe, y no es culpa suya: en un iPhone la versión de Safari es la versión de iOS, vive en Ajustes, dentro de General e Información, y la actualización ocurrió mientras dormían. Así que la primera pregunta de vuelta tiene que ser la versión, antes que los pasos, y la forma más barata de conseguirla es una página que la lea por usted. La nuestra está en /tools/user-agent: muestra el navegador y la versión, el sistema operativo, el tamaño de pantalla y el esquema de color, y quien reporta puede pegar todo el bloque. Funciona en cualquier navegador, porque tiene que funcionar.

Un límite honesto por nuestra parte. Session Replay es una extensión de Chrome. No puede capturar un informe desde Safari, y un error que solo ocurra en Safari 27 no aparecerá en una página abierta en Chrome. Lo que sí hace es resolver la otra mitad de la pregunta enseguida: abra la misma página en Chrome, capture el informe, y en un minuto sabrá si el fallo está en la página o en el motor. Esa es toda la práctica del testing entre navegadores: tres motores, y saber cuál está mirando en cada momento.

Para la parte de Safari, si tiene un Mac, Web Inspector por cable sigue siendo el camino, y cómo inspeccionar un elemento en un iPhone lo explica paso a paso. El Web Inspector de Safari 27 muestra cada petición de una cadena de redirecciones por separado ahora, lo cual es un pequeño alivio cuando el error es un bucle de inicio de sesión.

Session Replay

Extensión gratuita para Chrome. Un clic en la página que falla obtiene la captura de pantalla, la consola y el registro de red, y le entrega un enlace para pegar en el ticket.

Descargar la extensión

El resto de la publicación, en breve

Unas cuantas cosas más en las notas que a un desarrollador le interesará saber que existen.

Los streams son más fáciles de consumir. for await...of sobre un ReadableStream, ReadableStream.from() para construir uno a partir de cualquier iterable, y los streams ya se pueden transferir a través de postMessage(). El código escrito para Chrome que dependía de cualquiera de estas cosas ahora funciona en Safari sin necesidad de polyfill.

Los errores de las extensiones web ya se reportan. Las excepciones no capturadas y los rechazos de promesas sin gestionar en los scripts de una extensión web de Safari ahora salen a la luz, cuando antes desaparecían. Si mantiene un port a Safari de una extensión de Chrome, espere descubrir errores que llevaba teniendo desde hace tiempo.

La API de enrutamiento estático de service workers ya está disponible, y permite que un service worker declare de antemano qué peticiones lo evitan, de modo que la ruta de red para un recurso estático ya no espera a que arranque un worker.

Cuatro eliminaciones de SVG. SVGLocatable, SVGTransformable, nearestViewportElement, farthestViewportElement y viewTarget desaparecen, junto con glyph-orientation-horizontal. Las herramientas SVG antiguas que tocaran cualquiera de ellas lanzarán un error en Safari 27 y no en la 26, que es un informe más ligado a la versión que hay que saber reconocer.

Qué llevarse de todo esto

Una actualización de navegador es un cambio en producción que nadie del equipo desplegó, revisó ni puede revertir, y llega a una fracción distinta de usuarios cada día durante una semana. La única defensa es saber de qué versión viene cada informe, para que “empezó ayer” se pueda cotejar con “Safari 27 se publicó ayer” en lugar de con el último despliegue.

Las propias notas de Apple son la referencia, y son extensas: Notas de la versión de Safari 27.