7.3.11

Latest release in branch 7.3
Released 2 months ago (January 28, 2026)

Software Symfony
Branch 7.3
Status
End of life
End of bug fixes January 2026
End of security fixes January 2026
First official release version 7.3.0
First official release date 10 months ago (May 29, 2025)
Supported
PHP versions
PHP ≥ 8.2.0
Release notes https://github.com/symfony/symfony/releases/tag/v7.3.11
Source code https://github.com/symfony/symfony/tree/v7.3.11
Documentation https://symfony.com/doc/current/index.html
Download https://symfony.com/download
Symfony 7.3 Releases View full list

What Is New in Symfony 7.3

Symfony 7.3 delivers a focused set of enhancements, primarily improving developer experience and component interoperability. The update introduces new attributes, expands existing component capabilities, and continues the framework's modernization efforts.

Category Key Changes
New Features New #[MapQueryParameter] attribute, UidValueResolver, #[WithHttpStatus] attribute, and LazyGhost serialization support.
Improvements Enhanced HttpClient retry strategies, Mailer HTML to text conversion, Process timeouts, and Webhook component refinements.
Deprecations Deprecated the allow_empty_string context option in the DateTimeNormalizer.

How Does Symfony 7.3 Simplify Controller Arguments?

The new #[MapQueryParameter] attribute automatically maps query string parameters to controller method arguments. This removes boilerplate code for fetching and converting request data, making controllers cleaner and more declarative.

use Symfony\Component\HttpKernel\Attribute\MapQueryParameter;

public function index(
    #[MapQueryParameter]
    string $search,

    #[MapQueryParameter]
    int $page = 1
) {
    // $search and $page are automatically populated from the query string
}

You can specify filtering options like filter for validation and array to handle comma-separated lists. This approach is more integrated and type-safe than manually accessing the Request object.

What New Resolver and Attributes Were Added?

UidValueResolver

A new UidValueResolver allows you to type-hint controller arguments with Uuid or Ulid objects. The resolver automatically converts string identifiers from the request into the corresponding object.

WithHttpStatus Attribute

The #[WithHttpStatus] attribute lets you define the HTTP status code for a specific exception class directly on the exception itself. This centralizes the response logic.

use Symfony\Component\HttpKernel\Attribute\WithHttpStatus;

#[WithHttpStatus(404)]
class ProductNotFoundException extends \RuntimeException
{
}

How Are HttpClient and Mailer Improved?

Symfony's HttpClient now supports more granular retry strategies using the RetryableHttpClient. You can define different retry logic based on HTTP methods, status codes, or specific exceptions, giving you finer control over fault tolerance.

The Mailer component introduces an HtmlToTextConverterInterface. This allows for custom strategies when generating plain text fallbacks from HTML email content, improving accessibility and email client compatibility.

What About Serialization and Process Components?

The Serializer component now supports LazyGhost objects from the PropertyAccess component. This means these virtual proxy objects can be properly normalized and denormalized, which is crucial for applications using advanced data lazy-loading patterns.

In the Process component, the setIdleTimeout() method now accepts null to disable the timeout entirely. This provides more flexibility for long-running processes where only the total execution time should be limited.

FAQ

What is the main benefit of the #[MapQueryParameter] attribute?
It eliminates manual fetching and type conversion of query parameters in controllers. By declaring parameters directly as method arguments with the attribute, your code becomes more concise, readable, and less error-prone.

Can I use the new UidValueResolver with both UUIDs and ULIDs?
Yes. The resolver automatically instantiates either a Uuid or Ulid object based on the format of the string identifier provided in the request path or query string.

What happens if I use the deprecated 'allow_empty_string' option?
Using the allow_empty_string context option in DateTimeNormalizer will trigger a deprecation notice in Symfony 7.3. It will be removed in a future version, so you should update your code to handle empty string values before passing them to the normalizer.

How does the #[WithHttpStatus] attribute change exception handling?
It moves the responsibility of defining an exception's HTTP status code from the exception listener or controller to the exception class itself. This makes the intended HTTP behavior of an exception a core part of its definition.

Is the new HtmlToTextConverter in Mailer mandatory?
No, it's an optional interface for customizing behavior. If you don't provide a custom converter, the Mailer will fall back to its default strategy for converting HTML to plain text.

Releases In Branch 7.3

Version Release date
7.3.11 2 months ago
(January 28, 2026)
7.3.10 2 months ago
(January 25, 2026)
7.3.9 3 months ago
(December 31, 2025)
7.3.8 4 months ago
(December 07, 2025)
7.3.7 5 months ago
(November 12, 2025)
7.3.6 5 months ago
(November 06, 2025)
7.3.5 5 months ago
(October 28, 2025)
7.3.4 6 months ago
(September 27, 2025)
7.3.3 7 months ago
(August 29, 2025)
7.3.2 8 months ago
(July 31, 2025)
7.3.1 9 months ago
(June 28, 2025)
7.3.0 10 months ago
(May 29, 2025)
7.3.0-RC1 10 months ago
(May 25, 2025)
7.3.0-BETA2 11 months ago
(May 10, 2025)
7.3.0-BETA1 11 months ago
(May 02, 2025)