This week, Symfony 6.4.35, 7.4.7, and 8.0.7 maintenance versions were released. In addition, we introduced featured listings for Symfony job postings. Lastly, we published AI skills for Symfony UX.
Symfony development highlights
This week, 103 pull requests were merged (62 in code and 41 in docs) and 84 issues were closed (49 in code and 35 in docs). Excluding merges, 38 authors made additions and deletions. See details for code and docs.
- fe97232: [DependencyInjection] fix TypeError when using a custom container base class with typed $parameterBag
- 0668b41: [Dotenv] defer variable and command expansion to account for overrides from subsequent .env files
- c4be063: [Validator] regex bypass when match is false with too big input
- e4a06c1: [DebugBundle] gracefully handle the kernel.runtime_mode.web parameter missing
- 373a04b: [PhpUnitBridge] consider PSR-0/PSR-4 fallback dirs when building paths
- e21ee8b: [WebProfilerBundle] fix Symfony web debug toolbar not being displayed
- f13046f: [RateLimiter] prevent negative token from causing integer underflow
- 7aeb3cb: [Mailer] fix inline attachments with custom Content-ID in Mailjet
- 7775d2c: [Messenger] flush batch handlers after inactivity timeout when worker is busy
- 924be26: [HttpKernel] fix int-to-float coercion for JSON #[MapRequestPayload] with pre-parsed array data
- cc07299: [HttpKernel] fix denormalization format detection for pre-parsed request data
- 26f66d2: [TwigBridge] fix Bootstrap 4 horizontal layout broken by form errors moved outside label
- e02494c: [Form] fix duplicate validation errors when ValidatorExtension is instantiated multiple times
- 489cfb5: [FrameworkBundle] fix stale container after reboot in KernelTestCase
- 9d1a817: [Mime] use shell_exec() instead of passthru() in FileBinaryMimeTypeGuesser
- 3a7aa23: [Console] fix OUTPUT_RAW corrupting binary content on Windows
- 2984a00: [Cache] add timeout and slot eviction to LockRegistry stampede prevention
- 5a934cb: [UrlSanitizer] add 'sms' to hostless schemes
- 8ded983: [HttpFoundation] fix session cookie_lifetime not applied in mock session storage
- 71317fd: [Serializer] fix denormalization of magic __set properties
- 1cea9f3: [Console] fix ApplicationTester ignoring interactive and verbosity options when SHELL_VERBOSITY is set
- 3fab323: [JsonStreamer] fix missing generator for shared types in self-referencing objects
- 051053c: [DependencyInjection] handle Stringable for string-typed arguments in CheckTypeDeclarationsPass
- 1debe1d: [Notifier] fix SweegoTransport by allowing bool values
- e738063: [PropertyInfo] fix is/can/has type resolver on method without property in ReflectionExtractor
- 62de3ad: [TypeInfo] fix resolving class const type
- 4b32a41: [Serializer] fix nullable array constructor parameter overriding collection value type
- fd50f20: [TypeInfo] fix StringTypeResolver calling Type::enum() on interfaces extending BackedEnum
- 54b10bb: [HttpClient] fix CachingHttpClient compatibility with decorator clients on 304 responses
- 3d0ef7a: [DoctrineBridge] rename _schema_subscriber_check table to schema_subscriber_check_ for Oracle compatibility
- fb34408: [HttpClient] fix streaming from CachingHttpClient
- c2f29f0: [Form] fix session data contamination by non-serializable objects in form flow
- a55cbcc: [Validator] fix when constraint without expression language installed, when using closure expression
- 8f7776a: [Validator] fix required options check when extending a constraint with a simplified constructor
- 17b1942: [Config] fix NodeDefinition template to be covariant
- 41ddb38: [Validator] remove constant existence check in ExpressionSyntaxValidator
- 6aa6d4c: [FrameworkBundle] remove unused code from messenger routing config related to removed XML configuration
- fd56140: [FrameworkBundle] improve the output of debug:autowiring to be more visually structured
- 94cdedc: [Console] replace executeCommand() by runCommand() when testing commands
- 3a19c07: [Console] sort suggested commands alphabetically
- 8e449ed: [FrameworkBundle] deprecate terminate_on_cache_hit http_cache option
- d8f26e6: [Translation] replace deprecated Upload Translations method with Import Translations in Crowdin
- b565393: [ErrorHandler] allow namespace remapping in DebugClassLoader to relax the "same vendor" constraint
- c62d19c: [Runtime] add SymfonyRuntime::resolveType() for customizing how types are resolved in extending runtimes
- 311ec27: [HttpFoundation] deprecate setting public properties of Request and Response objects directly
- 06b0d18: [Messenger] make $clock nullable in PostgreSqlNotifyOnIdleListener
- 0abec75: [FrameworkBundle] remove hard-dep of KernelTestCase on ConsoleAssertionsTrait
- 2ce7786: [FrameworkBundle] fix wiring of debug.console.argument_resolver
- 37ce612: [HttpClient] default CachingHttpClient's $maxTtl to 86400s to prevent eternal cache items
- dcc4c1d: [FrameworkBundle, Messenger] deprecate "senders" nesting level in routing config
- 9f19ebd: [Console] add outline-style block methods to SymfonyStyle
- 8b00ba7: [TypeInfo] resolve tentative return types
- ea86ec4: [Uid] add Uuid47Transformer support for UUIDv7/v4 conversion
- b22b7be: [FrameworkBundle] allow configuring Webhook's header names and signing algo
- da4be3a: [ObjectMapper] allow class FQDN arrays as TargetClass and SourceClass param
Newest issues and pull requests
- [VarExporter] Add DeepCloner to deep-clone PHP values while preserving copy-on-write benefits
- [Validator] Allow usage of class-constants as default in GroupSequence
- [AssetMapper] Add AssetMapperPathProviderInterface for dynamic path resolution
- [DependencyInjection] Add support for using service stacks as decorators
Symfony Jobs
These are some of the most recent Symfony job offers:
- Backend Symfony Developer at Finviu AG
Contract / Freelance - €35 – €50 / hour
Full remote
View details - Backend Symfony Developer at DigtAg
Full-time - €42,000 – €55,000 / year
Full remote
View details - Lead Symfony Developer at Gravitiq
Full-time - $3,000 – $5,000 / month
Full remote
View details - 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
You can publish a Symfony job offer for free on symfony.com.
They talked about us
- Maintaining a Symfony PHP App in 2026: Email Delivery, OAuth, and Boring Reliability
- eXtreme Legacy 11: A PHP Monorepo of Apps and Packages
- Add Filters to Your Symfony API in 3 Minutes Flat
- I had to build my own Symfony validation bundle because no existing one fits my requirements
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.