Modal 1.2.6
- Fixed bug where iterating on a modal.Sandbox.exec output stream could raise unauthenticated errors.
Also shipped Dec 16, 2025Modal in December 2025 →
Own Your Observability: Supabase Metrics API
The Metrics API allows users to stream database telemetry into Prometheus-compatible observability stacks for monitoring and alerting.
AI Gateway now Generally Available
AI Gateway is now generally available (GA) for all Netlify users. Build AI-powered apps with confidence using our fully managed gateway that handles AI model keys, setup, and monitoring automatically. For a deeper dive into AI Gateway capabilities, check out our latest blog post.
New Prerender extension
The Prerender extension is now generally available (GA) for all Netlify users. The legacy prerendering feature is now deprecated with limited support. Once set up, this extension automatically serves pre-rendered HTML to crawlers, agents, and preview services, while regular site visitors continue to receive your standard JavaScript application.
Release of Mistral Small Creative
Mistral Small Creative (labs-mistral-small-creative) has been released as a Labs model.
- DuckDB 1.4.3: MotherDuck supports DuckDB 1.4.3, a bugfix release
- DuckDB 1.4.3: MotherDuck supports DuckDB 1.4.3, a bugfix release. Learn more in the official DuckDB Labs 1.4.3 announcement and changelog . PlanetScale Postgres integration: Users of PlanetScale Postgres can now use pg_duckdb to push analytical queries to MotherDuck.
Streaming Support Streaming is now supported for all models, including with structured output requests...
Streaming Support Streaming is now supported for all models, including with structured output requests (response_format, tools). Reasoning Format Controls Added reasoning_format parameter for reasoning models, giving you control over how reasoning text appears in responses.
More from ModalEvery Modal release →
Modal 1.3.0
Modal now supports Python 3.14. Python 3.14t (the free-threading build) support is currently a work in progress, because we are waiting for dependencies to be updated with free-threaded support. Additionally, Modal no longer supports Python 3.9, which has reached end-of-life.
Modal 1.2.5
- It is now possible to set a custom name= for a Function without using serialized=True. This can be useful when decorating a function multiple times, e.g. applying multiple Modal configurations to the same implementation. It is now possible to start modal shell with a Modal Image ID (modal shell im-abc123).
Modal 1.2.4
- Fixed a bug in modal.Sandbox.exec when using stderr=StreamType.STDOUT (introduced in v1.2.3). Added a new h2_enabled option in modal.forward, which enables HTTP/2 advertisement in TLS establishment.
Modal 1.2.3
- CPU Functions can now be configured to run on non-preemptible capacity by setting nonpreemptible=True in the @app.function() or @app.cls() decorator. This feature is not currently available when requesting a GPU. Note that non-preemptibility incurs a 3x multiplier on CPU and memory pricing. See the Guide for more information on preemptions.
Modal 1.2.2
- modal.Image.run_commands now supports modal.Volume mounts. This can be helpful for accelerating builds by keeping a package manager cache on the Volume: python cache_vol = modal.Volume.from_name("cache-mount") cmd_using_cache = "..." image = modal.Image.debian_slim().run_commands(cmd_using_cache, volumes={"/cache": cache_vol}) All Modal objects now accept...
Modal 1.3.1
- We've improved our experimental support for Python 3.14t (free-threaded Python) inside Modal containers. The container environment will now use the Python implementation of the Protobuf runtime rather than the incompatible upb implementation.
Modal 1.3.2
- Modal objects now have a .get_dashboard_url() method. This method will return a URL for viewing that object on the Modal dashboard: python fc = f.spawn() print(fc.get_dashboard_url()) # Easy access to logs, etc.
Modal 1.2.1
- It's now possible to override the default -dev suffix applied to the autogenerated URLs for ephemeral Apps (i.e., when using modal serve) via a new dev_suffix field in the .modal.toml config file, or equivalently with the MODAL_DEV_SUFFIX environment variable.