This week, Symfony development activity was very intense and focused mostly on bug fixes. In addition, we added support for the upcoming Twig 4.0 version and fixed some issues related to changes in the upcoming PHP 8.6 version. Lastly, we published the first talks for the SymfonyCon Warsaw 2026 conference.
Symfony development highlights
This week, 73 pull requests were merged (65 in code and 8 in docs) and 49 issues were closed (43 in code and 6 in docs). Excluding merges, 36 authors made additions and deletions. See details for code and docs.
- f93084a: [DependencyInjection] fix env var reported as never used for a removed autowired service
- 11e0686: [Yaml] fix line folding after trailing backslashes in quoted strings
- a6e6772: [EventDispatcher] clear wrappedListeners in TraceableEventDispatcher::reset()
- 05b14f2: [ErrorHandler] fix fatal error without args triggering an error when calling getTraceFromString
- 649942c: [Messenger] fix fatal on AmazonSqs shutdown when the in-flight receive cannot be resumed
- 07ed2b6: [Cache] initialize PhpArrayAdapter before classifying keys in deleteItems()
- c4f0855: [Console] fix two ValueError crashes on multibyte / multi-column widths
- a11f0f9: [Config] escape comment-closing sequence in generated config builders
- 7b243b5: [DoctrineBridge] filter non-php files in ProxyCacheWarmer::warmUp() to avoid CacheWarmerAggregate exception
- 94213f3: handle PHP 8.6 removing function arguments in error messages
- b520c9e: [Console] fix table borders around colspan cells and header-less tables
- b6562e7: allow Twig 4
- 140e32b: [Mime] fix dropped whitespace between multiple encoded words
- 7e89fae: [Routing] detect circular references in object route parameters
- 24aec8c: [EventDispatcher] fix regression in TraceableEventDispatcher invocation counting
- e85b30a: [AssetMapper] fix crash when a remote package depends on a locally-mapped importmap entry
- 1f10bcd: [Messenger] fix ack/reject failing when the Redis stream entry is already deleted
- e289b15: [Messenger] strip trace from nested exceptions in ErrorDetailsStamp
- cc6e1c4: [PropertyInfo] fix union with mixed handling in PhpStanTypeHelper
- 1c70327: [Validator] allow Traverse to be inherited
- 0a1173b: [PropertyInfo] ignore mutators with several required parameters
- 42ef012: [HttpFoundation] throw when IpUtils::isPrivateIp() receives a non-canonical IP address
- 075a897: [Mailer] reject control characters in SmtpTransport::setLocalDomain()
- aa9d1c9: [Cache] fix "Class Relay\Relay not found" for RedisCluster/RedisArray with tcp_keepalive
- 2704a0a: [Config] escape "*/" in generated array-shape comments
- 9cffd39: [TwigBridge] prevent implicit string casts for translatable message objects
- a6fd02c: [HttpClient] do not stream empty PSR-18 request bodies
- 15a8740: [ObjectMapper] fix per-property #[Map(source:)] being ignored when the target property name also exists on the source
- e295c4d: [FrameworkBundle] fix valkey cache adapters ignoring default_valkey_provider
- fafd5f8: [DependencyInjection] add supported literal option not_found for imports.[*].ignore_errors in services.schema and AppReference
- 650db20: [Validator] allow null groups in ConstraintValidatorTestCase
- b0d37c7: [ObjectMapper] fix explicit #[Map(target:)] being overwritten by a same-name source property
- e713694: [FrameworkBundle] make WebTestCase enable web mode by default
- ceeb7c6: [Serializer] skip XmlEncoderTest::testEncodeException() when using libxml ≥ 2.13
- 3b910dd: [DependencyInjection] fix lazy + factory service with a leading-backslash class on PHP 8.4
- 84438bb: [Validator] merge target's own constraints when using #[ExtendsValidationFor]
- 0f4dbef: [Filesystem] handle PHP 8.6 removing function arguments in error messages
- f6aa8f4: [Messenger] do not reject unknown types when no message requires signing
- 4b9ed82: [Config] accept env placeholders for scalar alternatives in generated array-shapes
- c7717ab: [Serializer] keep FILTER_BOOL working when ENABLE_TYPE_CONVERSION is enabled
- e27c6fc: [ObjectMapper] resolve a nested reverse-mapped property by the type of its destination
- 037121a: do not expose the BundleAdapter class in the kernel.bundles parameter
- 84c13ac: [Console] strip terminal control characters from displayed file names
- 6b7e834: [WebProfilerBundle] fix crash when injecting the toolbar in a BinaryFileResponse
- c8354be: [Messenger] avoid redispatching messages from completed batches
- 66e2ae2: [Form] document the hidden placeholder of required ChoiceType fields
- 38bcc1c: [ObjectMapper] keep the class-level transform/if of the target's #[Map] in the reverse class-map factory
- 86d2696: [PhpUnitBridge] fix finding given config file name
- 5d66a96: [HttpKernel] keep converting scalars of a form payload that carries an uploaded file
- 3399279: [FrameworkBundle] keep transport decorators when mock_response_factory is set
- 40f72e1: [RemoteEvent] allow repeating #[AsRemoteEventConsumer]
Newest issues and pull requests
- [Security] Add an OIDC Authorization Code Flow authenticator
- [AssetMapper] Add support for glob patterns in importmap.php
- [TuiComponent] Allow replacing the screen writer
- [Form] Add zero as false value for empty checkboxes
- [AssetMapper] Avoid re-expanding bare importmap entries
Symfony Jobs
These are some of the most recent Symfony job offers:
- Symfony Developer at ATH
Contract / Freelance - €25 – €50 / hour
Full remote
View details - Lead Symfony Developer at DocuPet
Full-time - CA$140,000 – CA$180,000 / year
Full remote
View details
You can publish a Symfony job offer for free on symfony.com.
They talked about us
- An MCP server in Symfony, with OAuth on both sides
- Building Identity Link: Why I Designed a Modular OpenID Connect Identity Provider in Symfony
- JoliMediaSyliusBundle, a New Bridge for Your Sylius Projects
- Building a production-grade SaaS foundation in Symfony in 2026 — lessons from building ShipAnvil
- 9 Symfony Bundles I Use in Almost Every Project
- New in EasyAdmin 5.3: A Modernized Sidebar, Symfony Reprise, and More Theming Groundwork
- JoliMediaSyliusBundle, un nouveau bridge pour vos projets Sylius
- Кэширование в Symfony: мы сломали авторизацию и исправили это с помощью Lock
Call to Action
- Follow Symfony on X, on Mastodon, on Bluesky and on Threads and share this article.
- Subscribe to the Symfony blog RSS and never miss a Symfony story again.