Symfony 7.1.0-BETA1 has just been released. Here is the list of the most important changes since 7.0:

  • feature #54818 [Translation] Crowdin is backing its translation bridge, thanks to them! \o/ (@nicolas-grekas)
  • feature #54806 [HttpClient] deprecate setLogger() methods of decorating clients (@xabbuh)
  • feature #54809 JoliCode is sponsoring Symfony 7.1, thanks to them! \o/ (@nicolas-grekas)
  • feature #54657 [TwigBundle] Deprecate base_template_class option (@Steveb-p)
  • feature #54663 [Serializer] Add XmlEncoder::CDATA_WRAPPING_PATTERN context option (@alexpozzi)
  • feature #54666 [DependencyInjection] Reset env vars when resetting the container (@faizanakram99)
  • feature #54455 [DoctrineBridge] Deprecate auto-mapping of entities in favor of mapped route parameters (@nicolas-grekas)
  • feature #52820 [DependencyInjection] Add #[AutowireInline] attribute to allow service definition at the class level (@DaDeather, @nicolas-grekas)
  • feature #54720 [Routing] Add {foo:bar} syntax to define a mapping between a route parameter and its corresponding request attribute (@nicolas-grekas)
  • feature #38662 [DoctrineBridge][Validator] Allow validating every class against unique entity constraint (@wkania)
  • feature #54371 [DependencyInjection] Deprecate #[TaggedIterator] and #[TaggedLocator] (@GromNaN)
  • feature #54674 [FrameworkBundle] revert implementing LoggerAwareInterface in HTTP client decorators (@xabbuh)
  • feature #54670 [TypeInfo] Ease getting base type on nullable types (@mtarld)
  • feature #54789 [PropertyInfo] remove deprecations, mark TypeInfo as experimental (@soyuka)
  • feature #54788 [TypeInfo] mark classes as experimental (@soyuka)
  • feature #54661 [TypeInfo] Handle custom collection objects properly (@mtarld)
  • feature #53214 [DoctrineBridge] Idle connection listener for long running runtime (@alli83)
  • feature #49978 [HttpKernel] Introduce #[MapUploadedFile] controller argument attribute (@renedelima)
  • feature #53365 [DoctrineBridge] Allow EntityValueResolver to return a list of entities (@HypeMC)
  • feature #54525 [Mailer] [Resend] Add Resend webhook signature verification (@welcoMattic)
  • feature #54589 [Messenger] forward a Clock instance to the created InMemoryTransport (@xabbuh)
  • feature #54604 [Ldap] Improve error reporting during LDAP bind (@RoSk0)
  • feature #54356 [Notifier] LOX24 SMS bridge (@alebedev80)
  • feature #54473 [Validator] Add support for types (ALL, LOCAL_, UNIVERSAL_, UNICAST_, MULTICAST_*, BROADCAST) in MacAddress constraint (@Ninos)
  • feature #53971 Cast env vars to null or bool when referencing them using #[Autowire(env: '...')] depending on the signature of the corresponding parameter (@ruudk)
  • feature #54535 [Validator] Deprecate Bic::INVALID_BANK_CODE_ERROR (@MatTheCat)
  • feature #54044 [Mailer] Add support for allowing some users even if recipients is defined in EnvelopeListener (@lyrixx)
  • feature #54442 [Clock] Add a polyfill for DateTimeImmutable::createFromTimestamp() (@derrabus)
  • feature #53801 [HttpKernel] Deprecate AddAnnotatedClassesToCachePass and related code infrastructure (@nicolas-grekas)
  • feature #54510 [Console] Handle SIGQUIT signal (@ostrolucky)
  • feature #54385 [HttpKernel] Map a list of items with MapRequestPayload attribute (@yceruto)
  • feature #54432 [TwigBridge] Add emojify twig filter (@lyrixx)
  • feature #54496 [Contracts] Rename ServiceSubscriberTrait to ServiceMethodsSubscriberTrait (@nicolas-grekas)
  • feature #54443 [Security] Add support for dynamic CSRF id with Expression in #[IsCsrfTokenValid] (@yguedidi)
  • feature #53968 [Process] allow to ignore signals when executing a process (@joelwurtz)
  • feature #54346 [Serializer] Fix: Report Xml warning/error instead of silently returning a wrong xml (@VincentLanglet)
  • feature #54423 [WebProfilerBundle] Update the search links in the profiler layout (@javiereguiluz)
  • feature #52986 [HttpFoundation] Similar locale selection (@Spomky)
  • feature #53160 [PropertyInfo] Deprecate PropertyInfo Type (@mtarld)
  • feature #54408 [Validator] Add a requireTld option to Url constraint (@javiereguiluz)
  • feature #54470 [Emoji] Add the "text" locale (@nicolas-grekas)
  • feature #54414 [DependencyInjection] Improve the error message when there is no extension to load some configuration (@javiereguiluz)
  • feature #54479 [Validator] set the password strength as a violation parameter (@xabbuh)
  • feature #52843 [DependencyInjection] Prepending extension configs with file loaders (@yceruto)
  • feature #53682 [Security] Support RSA algorithm signature for OIDC tokens (@Spomky)
  • feature #54441 [Emoji] Add the gitlab locale (@alamirault)
  • feature #54420 [WebProfilerBundle] Update main menu to display active panels first (@javiereguiluz)
  • feature #54381 [Messenger] Allow extending attribute class AsMessageHandler (@GromNaN)
  • feature #54364 [WebProfilerBundle] [WebProfilerPanel] Update the design of the workflow profiler panel (@javiereguiluz)
  • feature #54365 [DependencyInjection] Apply attribute configurator to child classes (@GromNaN)
  • feature #54320 [VarDumper] Add support for new DOM extension classes in DOMCaster (@alexandre-daubois)
  • feature #54344 [Workflow] Add EventNameTrait to compute event name strings in subscribers (@squrious)
  • feature #54347 [Console] Allow to return all tokens after the command name (@lyrixx)
  • feature #54135 [Console] Add a way to use custom lock factory in lockableTrait (@VincentLanglet)
  • feature #51502 [HttpKernel] Add temporary URI signed (@BaptisteContreras)
  • feature #53898 [Serializer] Add context for CamelCaseToSnakeCaseNameConverter (@AurelienPillevesse)
  • feature #49184 [FrameworkBundle][HttpFoundation] reduce response constraints verbosity (Nicolas Appriou, @Nicals)
  • feature #53901 [Mailer] [Amazon] Add support for X-SES-LIST-MANAGEMENT-OPTIONS header (@sebschaefer)
  • feature #54153 [HttpKernel] allow boolean argument support for MapQueryString (@Jean-Beru)
  • feature #53885 [WebProfilerBundle] Allow to search inside profiler tables (@javiereguiluz)
  • feature #52950 [WebProfilerBundle] Set XDEBUG_IGNORE option for all XHR (@adrolter)
  • feature #54173 [Filesystem] Add the readFile() method (@derrabus)
  • feature #54313 [Mime] Update mime types (@smnandre)
  • feature #54016 [DependencyInjection] Add #[AutowireMethodOf] attribute to autowire a method of a service as a callable (@nicolas-grekas)
  • feature #54272 [Workflow] Add support for workflows that need to store many tokens in the marking (@lyrixx)
  • feature #54238 [Console] Add ArgvInput::getRawTokens() (@lyrixx)
  • feature #51227 [FrameworkBundle][Workflow] Attach the workflow's configuration to the workflow tag (@lyrixx)
  • feature #54107 [HttpKernel] Improve error reporting when requiring the wrong Request class (@ilyachase)
  • feature #53851 [Security] Ignore empty username or password login attempts (@llupa)
  • feature #54125 [AssetMapper] Deprecate unused method splitPackageNameAndFilePath (@smnandre)
  • feature #54084 [Lock] Make NoLock implement the SharedLockInterface (@mbabker)
  • feature #53892 [Messenger][AMQP] Automatically reconnect on connection loss (@ostrolucky)
  • feature #53734 [Notifier] Add SMSense bridge (@jimiero)
  • feature #53942 [Clock] Add get/setMicroseconds() (@nicolas-grekas)
  • feature #53986 [Console] Add descriptions to Fish completion output (@adriaanzon)
  • feature #53927 [Notifier] Add new Pushy notifier bridge (@stloyd)
  • feature #53866 [Workflow] determines places from transitions (@lyrixx)
  • feature #53868 [Config] Allow custom meta location in ConfigCache (@alamirault)
  • feature #48603 [Messenger][Amqp] Add config option 'arguments' for delay queues (Thomas Beaujean)
  • feature #50745 [DependencyInjection] Add CheckAliasValidityPass to check interface compatibility (@n-valverde)
  • feature #53806 [ExpressionLanguage] Add more configurability to the parsing/linting methods (@fabpot)
  • feature #49144 [HttpFoundation] Add support for \SplTempFileObject in BinaryFileResponse (@alexandre-daubois)
  • feature #53706 [Mailer] Add timestamp to SMTP debug log (@bytestream)
  • feature #53747 [Yaml] Revert "feature #48022 Fix Yaml Parser with quote end in a newline (maxbeckers)" (@xabbuh)
  • feature #50864 [TwigBridge] Allow twig:lint to excludes dirs (@94noni)
  • feature #48022 [Yaml] Fix Yaml Parser with quote end in a new line (@maxbeckers)
  • feature #48803 [CssSelector] add support for :is() and :where() (@Jean-Beru)
  • feature #52510 [TypeInfo] Introduce component (@mtarld)
  • feature #52043 [Config] Allow custom meta location in ResourceCheckerConfigCache (@ruudk)
  • feature #51343 [HttpFoundation] Add HeaderRequestMatcher (@alexandre-daubois)
  • feature #51324 [HttpFoundation] Add QueryParameterRequestMatcher (@alexandre-daubois)
  • feature #51514 [Serializer] Add Default and "class name" default groups (@mtarld)
  • feature #52658 [Validator] Add additional versions (_NO_PUBLIC, _ONLY_PRIV & *_ONLY_RES) in IP address & CIDR constraint (@Ninos)
  • feature #52230 [Yaml] Allow to get all the enum cases (@phansys)
  • feature #48276 [Security] add CAS 2.0 AccessToken handler (@nacorp)
  • feature #52922 [DependencyInjection] Add Lazy attribute for classes and arguments (@Tiriel)
  • feature #53056 [Serializer] Add DateTimeNormalizer::CAST_KEY context option (@norkunas)
  • feature #53096 [Intl] [Emoji] Move emoji data in a new component (@smnandre)
  • feature #53362 [PropertyInfo] Restrict access to PhpStanExtractor based on visibility (@nikophil)
  • feature #53550 [FrameworkBundle][HttpClient] Add ThrottlingHttpClient to limit requests within a timeframe (@HypeMC)
  • feature #53466 Add SecretsRevealCommand (@danielburger1337)
  • feature #53740 Mailersend webhook remote event (@doobas, @fabpot)
  • feature #53728 [ExpressionLanguage] Add min and max php functions (@maxbeckers)
  • feature #51562 [DoctrineBridge] Add message to #[MapEntity] for NotFoundHttpException (@moesoha)
  • feature #53680 [DependencyInjection][Yaml] dump enums with the !php/enum tag (@xabbuh)
  • feature #53621 [Mailer] [Smtp] Add DSN param 'auto_tls' to disable automatic STARTTLS (@srsbiz)
  • feature #53554 [Mailer] Add Resend bridge (@welcoMattic)
  • feature #53448 [Cache] Add support for using DSN with PDOAdapter (@HypeMC)
  • feature #52447 [Form] Add option separator to ChoiceType to use a custom separator after preferred choices (@mboultoureau)
  • feature #53080 [Clock] Return Symfony ClockInterface in ClockSensitiveTrait (@ruudk)
  • feature #53328 [Messenger] Add jitter parameter to MultiplierRetryStrategy (@rmikalkenas)
  • feature #53382 [Uid] Add AbstractUid::toString() (@fancyweb)
  • feature #53374 [Validator] support \Stringable instances in all constraints (@xabbuh)
  • feature #53163 [Contracts][DependencyInjection] Add ServiceCollectionInterface (@kbond)
  • feature #52638 [Dotenv] Add SYMFONY_DOTENV_PATH, consumed by debug:dotenv for custom .env path (@GromNaN)
  • feature #51862 [Validator] Add MacAddress constraint for validating MAC address (@Ninos)
  • feature #52924 [FrameworkBundle] add a private_ranges shortcut for trusted_proxies (@xabbuh)
  • feature #53209 [HttpKernel] Add support for custom HTTP status code for the #[MapQueryParameter] attribute (@ovidiuenache)
  • feature #53151 mark classes implementing the WarmableInterface as final (@xabbuh)
  • feature #53262 [Notifier] [OneSignal] Add support for sending to external user ids (@KDederichs)
  • feature #51884 [Form] add "model_type" option to MoneyType (@garak)
  • feature #52936 [Notifier] Add Seven.io bridge (@NeoBlack)
  • feature #53249 [Validator] support Stringable instances in CharsetValidator (@xabbuh)
  • feature #53251 [AssetMapper] Add integrity hash to the default es-module-shims script (@smnandre)
  • feature #52976 [Notifier] Add sms-sluzba.cz bridge (@dfridrich)
  • feature #53154 [Validator] Add the Charset constraint (@alexandre-daubois)
  • feature #53191 [HttpKernel] Allow #[WithHttpStatus] and #[WithLogLevel] to take effect on interfaces (@priyadi)
  • feature #53212 [HttpKernel] Add HttpException::fromStatusCode() (@nicolas-grekas)
  • feature #53060 [Uid] Add UuidV1::toV6(), UuidV1::toV7() and UuidV6::toV7() (@fancyweb, @nicolas-grekas)
  • feature #53148 [Notifier] Add Smsbox notifier bridge (Alan ZARLI)
  • feature #52954 [Validator] Add list and associative_array types to Type constraint (Florian Hermann)
  • feature #53091 [FrameworkBundle][RateLimiter] add rate_limiter tag to rate limiter services (@kbond)
  • feature #53123 [VarDumper] Added default message for dd function (Shamimul Alam)
  • feature #52948 Use faster hashing algorithms when possible (@javiereguiluz)
  • feature #52970 [HttpClient] Add JsonMockResponse::fromFile() and MockResponse::fromFile() shortcuts (@fancyweb)
  • feature #52989 allow Twig 4 (@xabbuh)
  • feature #53092 [Notifier] Add Unifonic notifier bridge (@seferov)
  • feature #53083 [Notifier] Add Bluesky notifier bridge (@Nyholm)
  • feature #52775 [HttpClient] Allow mocking start_time info in MockResponse (@fancyweb)
  • feature #52962 [FrameworkBundle] Move Router cache directory to kernel.build_dir (@Okhoshi)
  • feature #52974 [Cache] Deprecate CouchbaseBucketAdapter, use CouchbaseCollectionAdapter (@alexandre-daubois)
  • feature #52971 [Messenger] Make #[AsMessageHandler] final (@Valmonzo)
  • feature #52961 [Security][SecurityBundle] Add #[IsCsrfTokenValid] attribute (@yguedidi)
  • feature #39438 [Form] Errors Property Paths mismatch CollectionType children when removing an entry (@cristoforocervino)
  • feature #52842 [Mailer] Add Azure bridge (@hafael)
  • feature #52946 [HttpClient] Add HttpOptions->addHeader as a shortcut to add an header in an existing options object (@Dean151)
  • feature #52893 [Cache][Messenger] make both options redis_sentinel and sentinel_master available everywhere (@xabbuh)
  • feature #52854 [Workflow] Add getEnabledTransition() method annotation to WorkflowInterface (@alexandre-daubois)
  • feature #52916 [Mailer] Dispatch event for Postmark's "inactive recipient" API error (@vicdelfant)
  • feature #52879 [PropertyAccess][Serializer] Fix "type unknown" on denormalize (@seferov)
  • feature #52411 [Messenger] Add --all option to messenger:consume (@javaDeveloperKid)
  • feature #52493 [HttpFoundation] Add UploadedFile::getClientOriginalPath() to support directory uploads (@danielburger1337)
  • feature #52632 [PropertyInfo] Make PhpDocExtractor::getDocBlock() public (@Nyholm)
  • feature #52730 [Serializer] Consider SerializedPath in debug command output (@jschaedl)
  • feature #52128 [HttpKernel] Introduce ExceptionEvent::isKernelTerminating() to skip error rendering when kernel is terminating (@VincentLanglet)
  • feature #52636 [DependencyInjection] Prepend extension config with ContainerConfigurator (@yceruto)
  • feature #52198 [String] New locale aware casing methods (@bram123)
  • feature #52369 [DependencyInjection] Add urlencode function to EnvVarProcessor (@crtl)
  • feature #50922 [Form] Deprecate not configuring the default_protocol option of the UrlType (@MatTheCat)
  • feature #52605 [Console] Support ProgressBar::iterate() on empty array (@GromNaN)

Want to upgrade to this new release? Because Symfony protects backwards-compatibility very closely, this should be quite easy. Use SymfonyInsight upgrade reports to detect the code you will need to change in your project and read our upgrade documentation to learn more.

Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.

Published in #Releases