This week, Symfony development activity focused mostly on bug fixes, while the community celebrated a busy first week for Symfony Language Tools and the release of Symfony Reprise 1.0.0.
Symfony development highlights
This week, 112 pull requests were merged (72 in code and 40 in docs) and 68 issues were closed (40 in code and 28 in docs). Excluding merges, 44 authors made additions and deletions. See details for code and docs.
- 757b06e: [PropertyInfo] do not prefer a static named constructor as the property accessor
- 0cb81e0: [PropertyInfo] do not prefer a static named constructor as the property mutator
- 38bc4c0: [Cache] fix authenticating to the master when using Redis Sentinel
- f0146f7: [HttpKernel] fix regression when a locale aware service is never initialized
- 19a9f0c: [Console, FrameworkBundle] fix profiling a command stopped at ConsoleEvents::COMMAND
- 9814363: [Notifier] fix escaping of MarkdownV2 markup in TelegramTransport
- ba62bf3: [Yaml] quote strings that look like octal numbers when dumping
- 1b0bfd1: [Serializer] fix max depth counting for subclasses that inherit MaxDepth metadata
- 00d9875: [Cache] respect max_execution_time in LockRegistry's wait loop
- 7ddd4df: [HtmlSanitizer] accept percent-encoded line breaks and tabs in the query of hostless URLs
- 338724d: [VarDumper] account for PHP 8.6 deprecating SplFileObject::getCsvControl()
- 773f277: [Mailer] use the configured secret to authenticate Postmark webhooks
- eb0a2ae: [HtmlSanitizer] keep rejecting denied URL characters when percent-decoding yields malformed UTF-8
- 099ba8d: [Security] apply "signature_properties" when a remember-me token provider is used
- dc566db: [Lock] delete a DynamoDb lock only when the caller holds it
- 2bb496b: [SecurityBundle] make the remember-me cookie follow the session cookie defaults
- 6121e1a: [Messenger] cover the headers that describe the message with the SigningSerializer signature
- c3a4933: [Mailer] reject Mailomat webhook requests with a stale timestamp
- e7fac28: [HttpClient] fix GuzzleHttpHandler consuming responses out of band
- bf5c07f: [Serializer] let DISABLE_TYPE_ENFORCEMENT keep strings that cannot be converted
- efc7bee: [Tui] fix Tailwind font-weight and font-family utilities being treated as FIGlet fonts
- 49889f2: [VarExporter] fix fatal error when loading code exported by versions < 8.1
- 9e3449f: [Messenger] stop deduplicating the messages sent to a FIFO SQS queue on their content by default
- cb4d4a2: [FrameworkBundle] suggest more packages for unknown commands
- 524a899: [Console] allow dropping multiple files
- d334117: [ErrorHandler] fix what the exception page announces to assistive technologies
- 93fcc92: [HttpFoundation] expand PRIVATE_SUBNETS with five not-globally-reachable ranges
Newest issues and pull requests
- [FrameworkBundle] Move AssetMapper internal artefacts in build dir
- [Security] Dispatch RateLimitExceededEvent from LoginThrottlingListener
- [Messenger] Force quit messenger:consume and messenger:failed:retry on repeated SIGINT
- [Messenger] Add claim check support
Symfony CLI
Symfony CLI is a must-have tool when developing Symfony applications on your local machine. It includes the Symfony Local Server, the best way to run local Symfony applications. This week Symfony CLI released its new 5.20.0 version with the following changes:
- Set up Buildx for release attestations (@fabpot)
- Add Symfony LSP support (@fabpot)
- Widen archive timeout test margins to avoid flaky metadata timeouts (@fabpot)
- Use Sigstore bundles for release signing (@fabpot)
- Simplify external tool validation (@fabpot)
- Set up Buildx for release attestations (@fabpot)
- Reject overflowing archive sizes (@fabpot)
- Preserve older Upsun CLI fallbacks (@fabpot)
- Preserve LSP arguments for case-insensitive commands (@fabpot)
- Generalize managed external tool installation (@fabpot)
- Cover zip extraction size overflow rejection (@fabpot)
- Add Symfony diagnostics check command (@fabpot)
Symfony Jobs
These are some of the most recent Symfony job offers:
- Symfony Developer at Steward
Part-time / Temporary - $8,700 – $13,000 / month
Full remote
View details - 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.
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:
- (Article) Playwright-PHP Changes the Game for Symfony Testing
- (Video) Symfony Security: The Basics: Limiting Login Attempts
- (Video) Symfony Security: The Basics: Exiting Impersonation & IS_IMPERSONATOR
They talked about us
- Migrating from Webpack Encore to Vite with Reprise
- A modern API reference for Symfony with Scalar
- Catching Risky Doctrine Migrations Before Production
- Small Entity Schema now supports Symfony and Doctrine 3
- Field‑Level Encryption in Doctrine, Without Polluting Your Domain
- How to Deploy a Symfony Application with Docker and FrankenPHP
- Precognition in Symfony: validating a request without running the controller
- Your Symfony Logs Know More Than You Think
- UX Driver: a Symfony bundle integrating Driver.js in Symfony applications
- GitLab MCP Symfony Enterprise Is Now Public - A Security-Hardened MCP for Business Development
- Enable Sentry Bundle Logging
- The Lost Update Problem in Symfony APIs: Connecting HTTP ETags to Doctrine Optimistic Locking
- Migrer de Webpack Encore vers Vite avec Reprise
- Symfony Dependency’leri Nereden Buluyor? Autowiring Nasıl Çalışıyor?
- 100% покрытия не поймали единственный баг, который был важен
- Современный API Reference в Symfony через Scalar
Upcoming Symfony Events
- Symfony/PHP Meetup Cologne by SensioLabs: Cologne, Germany (September 24, 2026)
- Sylius France Community Meetup by ACSEO: Aix en Provence, France (September 28, 2026)
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.