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.
Also shipped Oct 22, 2025Modal in October 2025 →
OTLP Ingestion Endpoints for Traces and Logs are in Open Beta
You can send your OTLP traces and logs directly to Sentry using our new ingestion endpoints
SolarWinds Enterprise data source for Grafana
Introducing SolarWinds data source plugin. SolarWinds is a network and infrastructure monitoring platform that provides tools to monitor, manage network performance, server health, and application availability.
Added support for retrieving log probabilities via the logprobs parameter for the Completions endpoint
Added support for retrieving log probabilities via the logprobs parameter for the Completions endpoint. Set to an integer (0-20) to return the most likely alternative tokens at each position, or null to disable.
Prisma ORM 6.18.0, Postgres Database Metrics and Config Modernization
Prisma ORM 6.18.0 includes updates for database metrics and configuration modernization for Prisma Postgres.
Sentry Ruby SDK 6.0.0
The new SDK allows ignoring status codes for Performance, setting a custom sampling interval for profiling and drops the async option.
Switch accounts easily on the mobile app
With new multi-account support on mobile, quickly move between accounts without logging out or losing progress.
More from ModalEvery Modal release →
Modal 1.2.0
In this release, we're introducing the concept of "App tags", which are simple key-value metadata that can be included to provide additional organizational context.
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.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.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.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.6
- Fixed bug where iterating on a modal.Sandbox.exec output stream could raise unauthenticated errors.
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.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.