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.

6.4 changelog:

  • 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

7.4 changelog:

  • 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

8.1 changelog:

  • 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

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:

They talked about us

Call to Action

Published in #A week of symfony