Releases: sparckles/Robyn
Releases · sparckles/Robyn
Release list
v0.88.0 - sessions, binary websockets & templating ergonomics
Highlights
- First-party sessions — signed-cookie sessions via
request.session(#945, #1411) - Binary WebSocket frames — binary frames are forwarded to your message handler (#1148, #1416)
render()templating shortcut — render a localtemplates/folder without constructingJinjaTemplateby hand; engine-agnostic with Jinja2 as the default (#1223, #1418)- Hot reload fixed for module launches —
python -m ...now relaunches correctly on file changes (#654, #1417) - Batch of quick-win fixes (#1415) — resolves #1099, #1147, #1273, #495, #470, #1192
- Docs — single-page cheatsheet (#1062, #1414) and a bilingual (EN/ZH) templating refresh
- CI — lint no longer builds the Rust extension (#1413)
Full Changelog: v0.87.0...v0.88.0
v0.87.0 - sub-routers, middleware chains & binary streaming
Sub-routers grow up, middleware can be chained, and streaming handles binary + async data correctly.
✨ Features
- Modern SubRouter syntax with nested-prefix fixes and cleanups (#1404)
- Async
authenticate()and automatic SubRouter auth-handler inheritance — sub-routers can configure their own auth or inherit the parent app's (#1407) - Multiple middlewares per route (middleware chains) (#1405)
- Consolidated OpenAPI/Swagger fixes with per-route documentation flags (#1403)
🐛 Fixes
StreamingResponsenow supportsbytes(binary downloads /application/octet-stream) and async DB access inside generators; generator errors now propagate to the logs instead of silently truncating the stream (#1412 — closes #1236, #1219)- Cast bare
before_requestreturns and handle OPTIONS under static mounts (#1409 — fixes #793, #1130)
📚 Docs
- Document catch-all / wildcard (
*path) routes (#1410)
Full Changelog: v0.86.0...v0.87.0
v0.86.0 - smoother request & response ergonomics
A round of quality-of-life fixes and FastAPI-parity papercuts, consolidated in #1399.
Fixes & features
request.json()now parses bothstrandbytesbodies — previously a bytes body raised a raw error (#1335)- Path-param warning no longer fires when handlers read params via
request/request.path_params(#1336) Response(body=...)alias for the confusingly-nameddescription=— both work, andheadersis now optional (#1337)- New request type aliases
RequestMethod,RequestBody,RequestURL, importable fromrobynandrobyn.types(#1077)
Docs
- Documented the new type aliases and the
Responsebody=alias (English + 中文)
Big thanks to @ahmadmahmoody, whose fixes were consolidated (with authorship preserved) into this release. 🙏
Full Changelog: v0.85.0...v0.86.0
v0.85.0 - make robyn even faster in json payloads
What's Changed
- fix: share contextvars Context across before/handler/after hooks (#1380) by @sansyrox in #1382
- fix: improve OpenAPI schema generation for complex types by @sansyrox in #1377
- perf: skip Python Response wrapping for bare dict/list/str/bytes returns by @sansyrox in #1384
Full Changelog: v0.83.0...v0.84.0
v0.83.0 - introduce testing client
What's Changed
- docs: add dedicated static files page and fix file-uploads SEO by @sansyrox in #1358
- docs: add comprehensive response return styles reference by @sansyrox in #1357
- feat: forward WebSocket binary frames to Python message handler by @sansyrox in #1353
- fix: replace panicking unwrap() calls with proper error handling in WebSocket code by @sansyrox in #1352
- perf: avoid unnecessary response body clone in IntoPyObject by @sansyrox in #1351
- fix(website): reduce excessive GitHub API requests from docs site by @sansyrox in #1360
- fix(ci): remove Python 3.14 from linux-cross preview matrix by @sansyrox in #1362
- fix: replace unused pydantic import with importlib.util.find_spec by @sansyrox in #1343
- feat: add in-process TestClient for fast unit testing by @sansyrox in #1344
Full Changelog: v0.82.1...v0.83.0
v0.82.1 - fix cors regression
What's Changed
- feat: speed up CI with caching, reduced matrix, and path filters by @sansyrox in #1338
- feat(website): comprehensive SEO overhaul and blog scaffold by @sansyrox in #1340
- fix: enable default autoescape for Jinja2 templates by @RinZ27 in #1321
- chore: add Granian attribution to asyncio.rs by @sansyrox in #1342
- fix: prevent CORS header duplication on middleware early-return responses by @sansyrox in #1347
New Contributors
Full Changelog: v0.82.0...v0.82.1
v0.82.0 - make robyn 200% faster
v0.81.0 - integrate pydantic
v0.80.0 - easy access query params and deprecate old websockets
What's Changed
- fix: update next-mdx-remote to v6.0.0 to address CVE-2026-0969 by @sansyrox in #1312
- fix: one final json handling bug by @sansyrox in #1313
- chore: update critical dependencies by @sansyrox in #1310
- chore: update README with an updated list of features by @sansyrox in #1316
- feat: add JsonBody param for parsed JSON in callbacks and OpenAPI docs (#1095) by @sansyrox in #1311
- feat(websocket): make max payload configurable via env/robyn.env and document usage by @sansyrox in #1318
- feat: deprecate old websockets by @sansyrox in #1320
- feat: add easy access query/path params with type coercion for HTTP and WebSocket handlers by @sansyrox in #1309
Full Changelog: v0.78.0...v0.80.0
v0.79.0 - websocket bugs and json handling
What's Changed
- fix: update next-mdx-remote to v6.0.0 to address CVE-2026-0969 by @sansyrox in #1312
- fix: one final json handling bug by @sansyrox in #1313
- chore: update critical dependencies by @sansyrox in #1310
- chore: update README with an updated list of features by @sansyrox in #1316
- feat: add JsonBody param for parsed JSON in callbacks and OpenAPI docs (#1095) by @sansyrox in #1311
- feat(websocket): make max payload configurable via env/robyn.env and document usage by @sansyrox in #1318
Full Changelog: v0.78.0...v0.79.0