This week, Symfony celebrated the Online January 2026 conference. Meanwhile, the upcoming Symfony 8.1 version added support for persistent cURL handles in HttpClient, enabled mocking non-shared services in tests, and updated ContainerConfigurator to allow excluding items when importing services. Lastly, Twig 3.23 was released with new operators and destructuring support.

Symfony development highlights

This week, 52 pull requests were merged (40 in code and 12 in docs) and 17 issues were closed (14 in code and 3 in docs). Excluding merges, 26 authors made additions and deletions. See details for code and docs.

6.4 changelog:

  • 9e00306: [Serializer] fix NameConverter not detecting wrong input format with allow_extra_attributes=false
  • ffff4b0: [Form] fix ICU 72+ whitespace handling in DateTimeToLocalizedStringTransformer
  • 4f55bbb: [ErrorHandler] fix parsing of complexe type
  • 59438c9: [DoctrineBridge] fix custom type based on Uid on entity loader
  • 6e00648: [Form] don't skip custom view transformers while normalizing submitted newlines
  • 0e7c9fb: [Form] fix OrderedHashMap auto-increment logic with mixed keys
  • 1db906a: [Serializer] fix is/has/can accessor naming to strip prefix unless colliding
  • 101a5cc: [PropertyInfo] do not parse scalar as an object
  • 6d95721: [Cache] fix DSN auth not passed to clusters in RedisTrait
  • 158f8d9: [DependencyInjection] fix alias chain inversion when deprecated alias points to decorated service
  • f54f23d, ca37246: do not use PHPUnit mock objects without configured expectations

7.3 changelog:

  • 3ccf36c: [HttpClient] skip HTTP/3 when using a proxy
  • 805179c: [JsonStreamer] fix exponential resource class memory growth

8.1 changelog:

  • ce11be4, 08b622f: [FrameworkBundle] add AbstractController::createFormFlowBuilder
  • 2d7d901: [Translation, FramworkBundle] allow using env vars in the list of enabled locales
  • a4d18c8: [HttpClient] add support of the persistent cURL handles
  • 2ed74bd: [FrameworkBundle] enable mocking non-shared services in tests
  • 21aa580: [DependencyInjection, Routing] extract loadContent() methods into reusable traits
  • 5943a0b: [Semaphore] add SemaphoreKeyNormalizer
  • 5f967cc: [HttpKernel] move the Extension class to the DependencyInjection component
  • 9f07b1b: [Scheduler] add option to order recurring messages by next run date in debug command
  • 4b6d12d: [DependencyInjection] add argument exclude to ContainerConfigurator::import()
  • 1c66b40: [DependencyInjection] throw exception when #[Required] attribute on non-public(set) property
  • bb3c143: [ObjectMapper] add targetClass on MapCollection transform

Newest issues and pull requests

Symfony Jobs

These are some of the most recent Symfony job offers:

  • 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
  • Backend Symfony Developer at DonkeyCode
    Contract / Freelance - €400 – €450 / day
    Full remote
    View details
  • Symfony Developer at Dutch Volleyball Federation Nevobo
    Full-time - €33,000 – €46,000 / year
    Remote + part-time onsite (Utrecht, Netherlands)
    View details
  • Backend Symfony Developer at SportFinder
    Full-time - €3,500 – €4,500 / month
    Remote + part-time onsite (Charleroi, Belgium)
    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