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).
Also shipped Dec 12, 2025Modal in December 2025 →
Branchable Auth, 80 Free plan projects, and purely usage-based billing release - Dec 12, 2025
Neon Auth branchable identity in your database. We've rebuilt Neon Auth using Better Auth as the foundation. Auth was the last part of Neon that didn't yet bran...
What's new in Sigma
Admin Enable multiple identity providers for your organization (Beta) You can now enable multiple identity providers (IdPs) for your Sigma organization. If you would like to enable multiple IdPs for your organization, please contact Sigma support. For more information, see Using multiple identity providers for your Sigma organization (Beta) .
Durable Objects, Workers - Billing for SQLite Storage
Storage billing for SQLite-backed Durable Objects will be enabled in January 2026, with a target date of January 7, 2026 (no earlier). To view your SQLite storage usage, go to the Durable Objects page Go to Durable Objects ↗ If you do not want to incur costs, please take action such as optimizing queries or deleting unnecessary stored data in order to...
Advanced Customizations for Universal Login has reached General Availability
We are excited to announce that __Advanced Customizations for Universal Login (ACUL)__ is now generally available. ACUL enables developers to create custom, client-rendered user interfaces for Universal Login using their preferred frontend technologies.
Deprecation of `OrderTransaction.authorizationCode` in favor of `OrderTransaction.paymentId`
Starting with the 2026-01 API version, the authorizationCode field on the OrderTransaction object is deprecated. We recommend using the paymentId field instead. The paymentId field provides a consistent, standardized identifier for payment reconciliation across all payment providers on Shopify.
- Query Scheduling Improvements: Small queries now complete faster without getting stuck waiting behind...
- Query Scheduling Improvements: Small queries now complete faster without getting stuck waiting behind large, resource-intensive queries, even when heavy queries are processing in the background Search Enhancements: The search bar in the top left pane of the Object Explorer can now be used to search for schemas, tables, and columns in addition to databases...
More from ModalEvery Modal release →
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.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.