Starlette 1.0: tras 8 años, el motor de FastAPI es estable

Starlette 1.0 Python ya es una realidad: el framework ASGI que sostiene a FastAPI y al Python MCP SDK alcanzó su primera versión estable el 22 de marzo de 2026, después de casi ocho años en ZeroVer. No hay rewrite ni cambios masivos — es un hito de estabilidad con versionado semántico estricto de acá en adelante.

En 30 segundos

  • Starlette 1.0.0 salió el 22 de marzo de 2026 tras una RC1 en febrero — se eliminaron todas las APIs deprecadas y ahora usa semver estricto
  • Se descarga 325 millones de veces al mes (casi 10 millones por día), un crecimiento de 6x en un año
  • Requiere Python 3.10 o superior — si seguís en 3.9, no podés actualizar
  • on_startup, on_shutdown y los decoradores @app.route() ya no existen: lifespan es el único camino
  • Es dependencia directa del Python MCP SDK, así que toda la infraestructura de agentes de IA en Python pasa por acá

Qué es Starlette y por qué importa más de lo que pensás

Starlette es un framework ASGI liviano para Python, creado en junio de 2018 por Tom Christie — la misma persona detrás de Uvicorn, MkDocs y HTTPX. Si usás FastAPI, ya estás usando Starlette: FastAPI hereda directamente de su clase principal.

Lo que no todo el mundo registra es la escala. Según el post del mantenedor Marcelo Trylesinski, Starlette pasó de 57 millones de descargas mensuales a 325 millones en un solo año. Son casi 10 millones de instalaciones por día. Tiene más uso real que reconocimiento de marca — uno de esos casos donde la infraestructura invisible sostiene medio ecosistema sin que nadie le preste demasiada atención.

De ZeroVer a Starlette 1.0: casi 8 años para una versión estable

Starlette vivió toda su vida en versión 0.x. Para los que no están familiarizados con el concepto, ZeroVer es la práctica (semi-irónica) de nunca llegar a 1.0 — algo bastante común en el ecosistema Python. El tema es que sin semver, cualquier minor podía romper cosas. Si te interesa, podés leer más sobre los desafíos actuales de Rust como lenguaje.

Eso cambió. La RC1 salió el 23 de febrero de 2026, y la versión final 1.0.0 llegó el 22 de marzo. Trylesinski, que trabaja en Pydantic y mantiene Starlette desde hace años, fue claro: esto no es un rewrite. Es una declaración de estabilidad. A partir de ahora, si algo rompe, sube la major. Si agrega funcionalidad, sube la minor. Predecible.

El desarrollo contó con aportes de Adrian Garcia Badaracco (Pydantic), Alex Grönholm (async Python), y Sebastián Ramírez (mantenedor de FastAPI), entre otros.

Qué se eliminó en 1.0: las APIs deprecadas que ya no existen

Acá viene lo que te puede afectar en la práctica. Starlette 1.0 sacó todo lo que venía marcado como deprecado, y algunas de estas cosas las usaba mucha gente.

API eliminadaReemplazoImpacto
on_startup / on_shutdownContexto lifespanAlto — muy usado en proyectos FastAPI
@app.route() / @app.websocket_route()app.add_route() o RouterMedio — decoradores comunes en tutoriales
add_event_handler()Contexto lifespanMedio
TestClient basado en requestsTestClient basado en httpxAlto en tests — existe herramienta bump-testclient
Jinja2Templates sin jinja2 instaladopip install jinja2 explícitoBajo
JSONResponse sin contentParámetro content obligatorioBajo
Python < 3.10Actualizar a Python 3.10+Variable según proyecto
starlette 1.0 python diagrama explicativo

Ojo con el TestClient. Si tenés una suite de tests que importa TestClient de Starlette, ahora usa httpx por debajo en vez de requests. La API es muy parecida, pero no idéntica. Trylesinski publicó una herramienta llamada bump-testclient que automatiza gran parte de la migración.

Otro detalle: autoescape viene activado por defecto en Jinja2Templates. Bien por seguridad, pero si tenías HTML crudo en tus templates sin marcar como safe, se va a escapar. Si te interesa, podés leer más sobre nuestra comparativa de seguridad en GitHub.

Qué se mejoró: WebSocket, multipart y sesiones

No todo es limpieza. Según las release notes oficiales, la 1.0.0 incorporó tres mejoras que salieron del feedback de la RC1: manejo de respuestas de denegación en WebSocket, corrección de un bug de acumulación de campos en MultiPartParser.parse(), y tracking de acceso y modificación en sesiones.

Nada espectacular, pero son fixes que importan si manejás uploads multipart o WebSockets en producción.

Impacto en FastAPI: qué necesitás saber

FastAPI hereda de Starlette. Punto. Si actualizás Starlette a 1.0, tu app FastAPI se ve afectada.

Ahora bien, la buena noticia es que Sebastián Ramírez (Tiangolo), mantenedor de FastAPI, estuvo en contacto durante todo el desarrollo de la 1.0. Lo más probable es que FastAPI ya no usara las APIs removidas internamente. Donde sí te puede pegar es en tu propio código: si usás on_startup o on_shutdown directo en tu app FastAPI, tenés que migrar a lifespan. Si te interesa, podés leer más sobre herramientas de IA que aprovechan GPU.

Antes de hacer pip install --upgrade starlette en producción, corré tus tests. En serio.

Starlette y el ecosistema de agentes de IA

Esto es lo que le da otra dimensión al release. Starlette es dependencia directa del Python MCP SDK — el kit de desarrollo para servidores de Model Context Protocol. Si estás construyendo herramientas para Claude, agentes con OpenAI, o cualquier sistema que exponga capacidades vía MCP, tu servidor corre sobre Starlette.

Tener una versión 1.0 estable con semver no es cosmético acá. Significa que podés depender del framework para producción sin preocuparte de que un bump de versión te rompa la integración con tu servidor MCP. Para equipos que despliegan agentes de IA sobre infraestructura Python — ponele, un servidor MCP corriendo en un VPS de donweb.com — esa previsibilidad vale mucho.

Cómo migrar tu proyecto a Starlette 1.0

Si tu proyecto usa Starlette directamente o vía FastAPI, estos son los pasos concretos: Si te interesa, podés leer más sobre la relación entre Microsoft y GitHub.

  • Verificá tu versión de Python: necesitás 3.10 o superior. Si estás en 3.9, primero actualizá el runtime.
  • Buscá on_startup y on_shutdown en tu código. Reemplazalos por un context manager lifespan. La documentación oficial tiene ejemplos claros.
  • Si usás @app.route() como decorador, migrá a app.add_route() o usá un Router con rutas explícitas.
  • Corré bump-testclient sobre tu suite de tests para adaptar las llamadas de requests a httpx.
  • Si usás Jinja2Templates, asegurate de tener jinja2 como dependencia explícita en tu requirements.txt.
  • Revisá cualquier uso de JSONResponse — el parámetro content ahora es obligatorio.

El comando es simple: pip install --upgrade starlette>=1.0.0. Pero no lo hagas a ciegas.

Errores comunes al actualizar

Actualizar sin correr los tests primero

Suena obvio, pero la cantidad de gente que hace pip install --upgrade en producción sin una pasada de tests es alarmante. Con Starlette 1.0 el riesgo es real porque los decoradores removidos tiran errores en tiempo de ejecución, no en import. Tu app puede arrancar y romperse en la primera request que use una ruta vieja.

Asumir que FastAPI te cubre de los breaking changes

FastAPI es un wrapper sobre Starlette, no un escudo. Si vos usás on_startup en tu app FastAPI, eso pasa directo a Starlette. Que FastAPI internamente no use APIs deprecadas no significa que tu código tampoco las use. Si te interesa, podés leer más sobre montar un servidor casero con Debian.

Ignorar el cambio de TestClient

El TestClient nuevo usa httpx. Si tus tests hacen assertions sobre headers o cookies con la API de requests, van a fallar de formas sutiles — no con un ImportError obvio, sino con valores que cambiaron de formato. Usá bump-testclient antes de perder tiempo debuggeando.

Si mantenés tus frameworks actualizados, también te interesa cómo Starlette 1.0: el framework ASGI detrás de FastAPI llega a v impacta en el ecosistema Python.

Si te interesa el ecosistema Python, cubrimos en detalle Starlette 1.0: el framework ASGI detrás de FastAPI llega a v con todas sus novedades.

Preguntas Frecuentes

¿Tengo que actualizar mi proyecto FastAPI por Starlette 1.0?

No es obligatorio de inmediato — las versiones 0.x siguen instalables. Pero si hacés pip install --upgrade fastapi en algún momento, es probable que arrastre Starlette 1.0 como dependencia. Mejor migrar proactivamente que encontrarte con errores inesperados en un deploy.

¿Qué es ASGI y por qué Starlette es importante para Python?

ASGI (Asynchronous Server Gateway Interface) es el estándar para aplicaciones web async en Python, el sucesor de WSGI. Starlette es la implementación de referencia más usada — la base sobre la que se construyó FastAPI y ahora el MCP SDK. Si te interesa, podés leer más sobre migrar a un ecommerce propio.

¿Qué relación tiene Starlette con el MCP SDK para agentes de IA?

El Python MCP SDK usa Starlette como framework de servidor. Cada servidor MCP que exponés para que un agente de IA consuma herramientas corre sobre Starlette internamente. La versión 1.0 le da estabilidad de producción a esa dependencia.

¿Starlette 1.0 trae funcionalidades nuevas?

Casi ninguna. La 1.0 es un milestone de estabilidad, no de features. Se corrigieron bugs en WebSocket, multipart y sesiones, pero el foco fue eliminar código deprecado y comprometerse con versionado semántico estricto.

Conclusión

Starlette 1.0 no es un release flashy. No trae features que te vuelen la cabeza. Lo que trae es algo que el ecosistema Python necesitaba: un framework ASGI de referencia con versión estable y semver real. Para los 325 millones de instalaciones mensuales que dependen de esto — directa o indirectamente vía FastAPI o el MCP SDK — eso significa previsibilidad.

Si mantenés proyectos en FastAPI o construís servidores MCP, agendá la migración. Revisá tus on_startup, corré bump-testclient, verificá que estés en Python 3.10+, y actualizá. No es urgente hoy, pero cuanto antes lo hagas, menos sorpresas vas a tener.

¿Qué es ASGI y por qué Starlette importa en Python?

ASGI es el estándar para apps web asincrónicas en Python. Starlette es el framework ASGI más usado — lo hereda FastAPI, corre en 325 millones de descargas mensuales y es dependencia directa del Python MCP SDK. Con la versión 1.0, tenés semver predecible para producción.

¿Starlette y FastAPI son lo mismo?

No. FastAPI hereda de Starlette y agrega validación con Pydantic + auto-docs. Starlette es el framework ASGI bajo (routing, middleware, WebSockets). Si actualizás Starlette, tu FastAPI se ve afectada aunque no cambies nada en tu código.

¿Qué versión de Python necesito para Starlette 1.0?

Starlette 1.0 requiere Python 3.10 o superior. Si estás en Python 3.9, tenés que actualizar el runtime antes de upgradear, porque las 0.x que soportan 3.9 no incluyen semver garantizado.

Fuentes

Te puede interesar...