This week, Symfony released the maintained versions 6.4.37, 7.4.9, and 8.0.9. Meanwhile, we continued merging new features for the upcoming Symfony 8.1 version, such as the new TUI component. Lastly, we published an update about the recent SymfonyInsight improvements.
Symfony development highlights
This week, 65 pull requests were merged (62 in code and 3 in docs) and 50 issues were closed (50 in code and 0 in docs). Excluding merges, 24 authors made additions and deletions. See details for code and docs.
- a990dfd: [Dotenv] strip NUL byte placeholder from values passed to putenv()
- 884ba49: [AssetMapper] allow spaces in version constraints
- 579599f: [DoctrineBridge] fail with a clear exception when symfony/form is missing
- f3eb6ec: [Validator] fix mapping properties using property hooks
- bf55ada: [HttpClient] don't share CURL_LOCK_DATA_CONNECT to honor max_host_connections
- 42935b9: [Lock] avoid aborting outer PostgreSQL transaction on lock contention
- 5f8ed0a: [RateLimiter] keep token bucket alive while reservation debt is unpaid
- 7a771fc: [Cache] normalize default_lifetime for pools wrapped by ChainAdapter
- 9b4e0ba: [MonologBridge] guard against re-entrant calls in AbstractTokenProcessor
- eab9413: [FrameworkBundle] apply tagged MIME type guessers in File::getMimeType()
- 49af6cc: [Mime] preserve inline part filename instead of overwriting it with the Content-ID
- 1b54941: [Config] allow env placeholders in NumericNode min/max checks
- 59d2a90: [Notifier] fix Basic auth header by keeping base64 padding in Ntfy
- a0a4c4b: [Serializer] move type-mismatch and uninitialized-property handling into concrete normalizers
- fe017f8: [Messenger] do not sleep after worker is stopped during idle cycle
- 37c3c42: [Messenger] alias the AMQP "user" connection option to "login"
- d87ea79: [DependencyInjection] reject circular references through a factory builder's setup
- f5731dd: remove usages of named arguments in tests
- 8af7d2e: [Mailer] handle alternate error payload shapes for Payload Too Large in Postmark
- 532e9cb: [Messenger] keep deduplication lock when handler throws
- 1fc1587: [FrameworkBundle] fix mailer package check for bridges whose composer name does not match the service id
- 13420b5: [DoctrineBridge] catch any driver exception in the same-database check
- 9d2959e: [Config] fix array-shape generator dropping alternative types on nested PrototypedArrayNode
- 6c24463: [Form] preserve collection children added by PRE_SET_DATA listeners
- 4708a71: [Notifier] fix default boolean values SweegoTransportFactory
- 95ae294: [Uid] fix compat with ext-ds v2
- ce04d4d: [Validator] simplify When::$expression’s closure PHPDoc
- 28e35c1: [Tui] add the component
- 8af0042: [Messenger] release deduplication lock on definitive failure
- 27ba8df: [Serializer] improve NotNormalizableValueException message in BackedEnumNormalizer
- 949a300: [DependencyInjection] support autowiring env vars as closures or Stringable when using #[Autowire(env: 'FOO')]
- 8fa019f: [Runtime] add FRANKENPHP_RESET_KERNEL to reset the kernel between requests
- 82ee657: [Validator] make constraint validators reentrant instead of being stateful
- ca35814: [MonologBridge] add $subjectMaxLength option to MailerHandler
- 9d8f068: [RateLimiter] add #[RateLimit] attribute to rate limit controllers declaratively
- 39ac8ed: [FrameworkBundle] add --sort option to debug:router command
- bb9e429: [Workflow] remove bg_color and description from metadata text in GraphvizDumper
- 54d7bf9: [JsonStreamer] add DateTimeZone value object support
- 42d1138: [Workflow] add support for dumping listeners in Graphviz diagrams
- 11a5783: [ObjectMapper] fix #[Map] attribute breaking auto-mapping of other properties
- 4b49e5b: [VarDumper] add CSP nonce support to HtmlDumper
- 52db04c: [Form] use translation_domain for expanded ChoiceType placeholder
- d96bbae: [Form] hide the placeholder in ChoiceType/select when not required
- 2a032cc: [Notifier] add bridge for Prelude
- ff69ea3: [TwigBundle] add twig.safe_class resource tag to register safe classes for the escaper
- 409109c: [VarDumper] dump class-strings as class stubs with source location and static properties
- ac97b50: [HttpFoundation] add SessionHasFlashMessage test constraint
- 2566d12: [Serializer] add AbstractObjectNormalizer::ENABLE_TYPE_CONVERSION for scalar type transformation
- 57e0c13: [VarDumper] skip built-in class names
- 9883d5e: [Console] add support for OSC 9;4 escape sequence for progress reporting
- 089fb07: [Serializer] add COLLECT_EXTRA_ATTRIBUTES_ERRORS and full deserialization path
- 6f09f3f: [ErrorHandler] trigger @method deprecation notices for abstract classes
- 645e8bc: [HttpKernel, VarDumper, WebProfilerBundle] forward CSP nonce to dump() instead of disabling CSP
Newest issues and pull requests
- [Kms] Add a new component for Key Management Systems
- [Mime] Add support for binary Content-Transfer-Encoding
- [Security] Add per-username login rate-limit to prevent brute-force attacks
Symfony Jobs
These are some of the most recent Symfony job offers:
- DevOps for a Symfony project at Cloudpepper
Full-time - $150,000 – $180,000 / year
Full remote
View details - Lead Symfony Developer at SCTR Services
Full-time - $70,000 – $110,000 / year
Full remote
View details - Symfony Developer at Design Force Marketing
Full-time - $60,000 – $100,000 / year
Grand Haven Michigan, United States
View details - Backend Symfony Developer at ShipMonk
Contract / Freelance - $5,000 – $8,000 / month
Full remote
View details - Backend Symfony Developer at Vacatia
Full-time - $150,000 – $180,000 / year
Remote + part-time onsite (Portland, Oregon, United States)
View details
You can publish a Symfony job offer for free on symfony.com.
They talked about us
- How to build a reactive SPA without writing a single line of React or Vue. Part #2
- Chain of Responsibility Design Pattern — A Practical Guide with Symfony (PHP)
- Practical Techniques to Override Symfony Bundles Safely
- Repenser les formulaires Symfony : une approche moderne
Upcoming Symfony Events
- Web Summer Camp 2026: Opatija, Croatia (July 2, 2026 – July 4, 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.