This week, development activity was very intense for the upcoming Symfony 8.1 release, which introduced new features across the framework. Meanwhile, we shared more details about the upcoming SymfonyLive Paris 2026 conference. Finally, SymfonyCasts announced a new course about Symfony Forms.
Symfony development highlights
This week, 120 pull requests were merged (73 in code and 47 in docs) and 69 issues were closed (36 in code and 33 in docs). Excluding merges, 46 authors made additions and deletions. See details for code and docs.
- f4d9e4e: [Cache] fix DSN auth not passed to Redis/RedisCluster/Relay in RedisTrait
- fc9236c: [Cache] fix DSN auth not passed to Redis/RedisCluster/Relay in RedisTrait
- 3ae6a8a: [Asset] fix JsonManifestVersionStrategy exception on missing manifest in non-strict mode
- c77e715: [DependencyInjection] fix stale binding lookup in ResolveBindingsPass error message
- 8883053: [HttpFoundation] BinaryFileResponse: always return 206 if Range is valid
- 4e7b0ce: [PropertyInfo] fix union with mixed handling for the legacy PropertyInfo Type
- e6821c3: [Console] fix SymfonyStyle block output with \r\n line endings
- ce94e30: [Validator] fix comparison validator crash on extreme dates
- aebbb21: [PropertyInfo] prioritize property type over is/has/can accessors
- 60e54c1: [DependencyInjection] prevent false unused-env errors for abstract definitions removed at compile time
- a69cd63: [FrameworkBundle] fail gracefully when the semaphore config is used but the component is missing
- f42a44d: [HttpKernel] handle invalid backed-enum values gracefully in RequestPayloadValueResolver
- 026450d: [WebProfilerBundle] fix EventSource is missing static properties
- 754b737: [Workflow] fix swapped workflow/transition names in WorkflowValidator
- d7e6bba: [FrameworkBundle] express in array shape that strings are allowed for messenger routing
- bddcc1e: [TypeInfo] fix ArrayShapeType::getExtraValueType() return value
- f14a46e: [Mailer] also bypass Sender header within MicrosoftGraphApiTransport
- 475dc2a: [FrameworkBundle] fix JsonStreamer forward compatibility
- 83ad581: [ObjectMapper] skip source mapping attempts when target class condition evaluates to false
- a9222a7: [PropertyInfo] fix support for inline @var docblocks on promoted properties
- 2b2b1bc: [Mailer] clarify some tests cases for Resend transport
- dcd1148: [FrameworkBundle] fix referencing DI's AppReference shape in config/reference.php
- ec9e832: [Validator] fix AbstractComparison deprecation triggered for array values
- 168f7b9: [ObjectMapper] fix Map attribute PHPDoc for $if param
- db81fbb: [Mailer] fix invalid encoding of custom headers in SES API
- ce94e30: [Validator] fix comparison validator crash on extreme dates
- 97bf7b3: [HttpKernel] fix variadic argument handling with #[MapUploadedFile]
- 1c7c255: [Console] fix ProgressBar %remaining% and %estimated% placeholder guards
- 081b375: use PHPUnit 13 on PHP 8.4+
- 2513aae: [Dotenv] use SYMFONY_DOTENV_PATH variable when dumping dotenv
- 9d2cfbb: [PropertyInfo] prioritize property type over is/has/can accessors
- fbf3b21: [Messenger] use mutable datetime columns in Doctrine transport schema
- bb02975: [TypeInfo] fix template key-type for array
- 6ec1afc: [Contracts, DependencyInjection] support hooked properties in ServiceMethodsSubscriberTrait
- adbab65: [HttpKernel, WebProfilerBundle] add error indicator to profiler list view
- f2d0293: [Translation] rework string deletion in Crowdin Provider
- a0904b6: [Form] allow ViolationMapperInterface injection for ValidatorExtension and FormTypeValidatorExtension
- 861c30e: [WebProfiler] add cURL copy/paste to request tab
- 6f41ff2: [DependencyInjection] add tag decoration support
- b2f0849: [Messenger] move PostgreSQL LISTEN/NOTIFY blocking to worker idle event listener
- 58c115d: [TypeInfo] improve TypeContextFactory
- 3c18c91: [Semaphore] add a semaphore store based on lock
- 423bfd9: [Form] BirthdayType has automatic attr when widget is single_text
- 824601c: [Filesystem] rename Filesystem::mirror() option copy_on_windows to follow_symlinks
- 04fb7a1: [Console] add image support to QuestionHelper and #[Ask]
- 0784c81: [HttpClient] configure MockClient if mock_response_factory has been set on a scoped client
- 1ffcfd2: [Messenger] allow disabling default queue binding in AMQP via queues option
- e39c1a7: [FrameworkBundle] properly set tag "lock.store" on flock and semaphore stores when they're used
- f6fbaeb: [Validator] add clock-awareness to comparison and range validators
- 1a8dbf8: [HttpKernel] support variadic with #[MapRequestPayload]
- 6306343: [Console] allow passing Validator constraints to QuestionHelper and #[Ask]
- 7e85437: [FrameworkBundle] configure custom marshaller per cache pool
- 68d31d5: [TwigBridge] add form_flow_* helper functions
- 532ed59: [Validator] add ValidatorBuilder::enablePropertyMetadataExistenceCheck()
- d5a43a0: create #[Serialize] Attribute to serialize controller result
- ddaeea2: [Lock] update UnserializableKeyException message
- 202a2ed: [HttpFoundation] add BinaryFileResponse::shouldDeleteFileAfterSend()
- a025658: [FrameworkBundle] provide a useful message when symfony/semaphore misses lock store support
- 64af23e: [WebProfilerBundle] misc improvements in the profiler templates
- 19c9504: [Yaml] implement $blockChompingIndicator for TaggedValue multi-line literal blocks
- 68382bc: [Serializer] improve displaying of non-normalizable value type during denormalization
Newest issues and pull requests
- [JsonStreamer] Handle value objects
- [ObjectMapper] Allow array of class FQDN as TargetClass and SourceClass param
Symfony Jobs
These are some of the most recent Symfony job offers:
- Symfony Developer at Collectmaxx
Full-time - €4,000 – €6,500 / month
Remote + part-time onsite (Rotterdam, Netherlands)
View details - Symfony Developer at ongoing.ch
Full-time - €80,000 – €120,000 / year
Remote + part-time onsite (Zug, Switzerland)
View details - Backend Symfony Developer at Licorn Group SA
Contract / Freelance - €350 – €450 / day
Full remote
View details - Software Architect for a Symfony project at Califrais
Full-time - €60,000 – €75,000 / year
Remote + part-time onsite (Paris, France)
View details - Symfony Developer at Paystone
Full-time - CA$75,000 – CA$100,000 / year
Full remote
View details
You can publish a Symfony job offer for free on symfony.com.
SymfonyCasts Updates
SymfonyCasts is the official way to learn Symfony. Select a track for a guided path through 100+ video tutorial courses about Symfony, PHP and JavaScript.
This week, SymfonyCasts published the following updates:
- New course announced: Symfony 7 Security: The Basics
They talked about us
- Benchmark: FrankenPHP vs. RoadRunner in Symfony 8
- Tracing the Request Path in Clean Architecture (DTOs, Entities, Ports & Adapters)
- CORS: The Traffic Guard You Actually Need (And How It Protects User Sessions)
- AutoMapper 10.0: High-performance mapping ready for the future
- Building REST APIs with API Platform, Symfony, and MongoDB
- AutoMapper 10.0 : Le mapping haute performance prêt pour le futur
- J'ai créé mon premier chatbot IA en 3 jours : retour d'expérience
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.