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

  • feature #58467 [PhpUnitBridge] support ClockMock and DnsMock with PHPUnit 10+ (@xabbuh)
  • feature #58506 [FrameworkBundle] Add --no-fill option to translation:extract command (@jawira)
  • feature #58428 [Config] Add StringNode (@raffaelecarelle)
  • feature #58322 [Notifier] Add Sweego bridge (@welcoMattic)
  • feature #58527 [Notifier] Add LINE Bot bridge (@pan93412)
  • feature #58552 [Console][Messenger] Add $seconds to keepalive() methods (@valtzu)
  • feature #51041 [Form] Use form.post_set_data in ResizeFormListener (@HeahDude)
  • feature #58287 [WebProfilerBundle] Render the toolbar stylesheet (@smnandre)
  • feature #58512 [Validator] Pass context to expressions used in When constraints (@KoNekoD)
  • feature #52503 [DoctrineBridge][Form] Introducing new LazyChoiceLoader class and choice_lazy option for ChoiceType (@yceruto)
  • feature #58109 [Lock] Add NullStore (@xabbuh)
  • feature #58490 [Config] Allow using defaultNull() on BooleanNodeDefinition (@alexandre-daubois)
  • feature #58095 [Security] Implement stateless headers/cookies-based CSRF protection (@nicolas-grekas)
  • feature #53508 [Console][Messenger] Asynchronously notify transports which messages are still being processed (@HypeMC)
  • feature #57829 [FrameworkBundle] Finetune AboutCommand (@JoppeDC)
  • feature #58264 [Mailer] Support region in sendgrid bridge (@MrYamous)
  • feature #50324 [Webhook] Add Mailchimp webhook (@johanadivare)
  • feature #58361 [Mailer][Mime] Support unicode email addresses (@arnt, @OskarStark)
  • feature #53533 [Console] Add ability to schedule alarm signals and a ConsoleAlarmEvent (@HypeMC)
  • feature #54664 [DependencyInjection] Resolve container parameter used in index attribute of service tags (Marvin Feldmann)
  • feature #57576 [Console] Add finished indicator to ProgressIndicator (@LauLaman)
  • feature #58448 [TwigBridge] Update main.css email stylesheet to latest foundation-emails release (@phasdev)
  • feature #58408 [Translation] Allow sort when extracting translation files (@danut007ro)
  • feature #58427 [Notifier] [GatewayAPI] Add support for label parameter (Nico Hiort af Ornäs)
  • feature #58341 [ExpressionLanguage] Add support for logical xor operator (@HypeMC)
  • feature #58385 [String] Add the AbstractString::kebab() method (@alexandre-daubois)
  • feature #58403 [Mailer][Webhook] Mailtrap webhook support (@kbond)
  • feature #58351 [Mailer] deprecate the TransportFactoryTestCase (@xabbuh)
  • feature #58401 [Mailer][Webhook] Fix SendGrid Webhook parsing (@kbond)
  • feature #58366 [HttpKernel] Improve accessibility (@javiereguiluz)
  • feature #58352 [Translation] deprecate the ProviderFactoryTestCase (@xabbuh)
  • feature #58248 [Webhook] Allow request parsers to return multiple RemoteEvent's (@kbond)
  • feature #58308 [Serializer] Deprecate AdvancedNameConverterInterface (@mtarld)
  • feature #58335 [Notifier] deprecate the TransportFactoryTestCase (@xabbuh)
  • feature #57270 [Messenger] Allow to skip message in FailedMessagesRetryCommand (Thibaut Chieux)
  • feature #58141 [AssetMapper] Search & filter assets in debug:asset-mapper command (@smnandre)
  • feature #58386 [WebProfilerBundle] Update the contents of the Config panel (@javiereguiluz)
  • feature #58161 [FrameworkBundle][HttpKernel] Add support for SYMFONY_TRUSTED_PROXIES, SYMFONY_TRUSTED_HEADERS, SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER and SYMFONY_TRUSTED_HOSTS env vars (@nicolas-grekas)
  • feature #53632 [Console] Add silent verbosity suppressing all output, including errors (@wouterj)
  • feature #56823 [Serializer] Introduce named serializers (@HypeMC)
  • feature #57611 [DependencyInjection][FrameworkBundle] Introducing container non-empty parameters (@yceruto)
  • feature #58249 [FrameworkBundle] Add ability to use existing service as lock/semaphore resource (@HypeMC)
  • feature #58166 [Security][SecurityBundle] Allow passing attributes to passport via Security::login() (@alexandre-daubois)
  • feature #58205 [Translation] Added segment-attributes metadata for Xliff2 files to preserve the "state" attribute of translations (@jbtronics)
  • feature #58228 [String] Add Spanish inflector with some rules (@dennistobar)
  • feature #58252 [Mailer] add Mailtrap bridge (@kbond)
  • feature #57805 [FrameworkBundle] Deprecate session.sid_length and session.sid_bits_per_character config options (@alexandre-daubois)
  • feature #58199 [FrameworkBundle] Add --resolve-env-vars option to lint:container command (@ostrolucky)
  • feature #58244 [HttpFoundation] Deprecate more options in NativeSessionStorage (@alexandre-daubois)
  • feature #58246 [Serializer][Uid] Add the Uuid::FORMAT_RFC_9562 and UidNormalizer::NORMALIZATION_FORMAT_RFC9562 constants (@alexandre-daubois)
  • feature #58258 [Process] Add Laravel Herd php detection path (@mpociot)
  • feature #58182 make test case classes compatible with PHPUnit 10+ (@xabbuh)
  • feature #58165 [FrameworkBundle] Remove default value for gc_probability config option (@nicolas-grekas)
  • feature #58154 [HttpFoundation] Add PRIVATE_SUBNETS as a shortcut for private IP address ranges to Request::setTrustedProxies() (@nicolas-grekas)
  • feature #58145 allow Twig 4 (@xabbuh)
  • feature #58072 [Translation] [Loco] Ability to configure value of status query-variable (@mathielen)
  • feature #57793 [Serializer] Support subclasses of DateTime and DateTimeImmutable (@amcsi)
  • feature #58042 [Ldap] Add support for sasl_bind and whoami LDAP operations (@manu0401)
  • feature #58074 [Console][Process] Add $verbosity argument to mustRun helper method (@willrowe)
  • feature #58129 [VarExporter] Allow reinitializing lazy objects with a new initializer (@nicolas-grekas)
  • feature #57683 [Notifier] Support for desktop notifications via jolicode/JoliNotif (@ahmedghanem00)
  • feature #58035 [DependencyInjection] Add support for key-type in XmlFileLoader (@alexandre-daubois)
  • feature #58047 [Webhook] Pass original request to RequestParserInterface (@alexandre-daubois)
  • feature #58052 [ExpressionLanguage] Add support for <<, >>, and ~ bitwise operators (@alexandre-daubois)
  • feature #58062 [Validator] Add $groups and $payload to Compound constructor (@derrabus)
  • feature #58038 [HttpFoundation] Add optional $v4Bytes and $v6Bytes parameters to IpUtils::anonymize() (@alexandre-daubois)
  • feature #58060 [Serializer] Add SnakeCaseToCamelCaseNameConverter (@dunglas)
  • feature #49547 [Validator] Add CompoundConstraintTestCase to ease testing Compound Constraints (@alexandre-daubois)
  • feature #57833 [VarDumper] Add support for virtual properties (@alexandre-daubois)
  • feature #57960 [Form] Add support for the calendar option in DateType (@alexandre-daubois)
  • feature #52951 [Messenger] Add previous to the exception output (@ToshY)
  • feature #54179 [HttpClient] Add support for amphp/http-client v5 (@nicolas-grekas)
  • feature #57577 [FrameworkBundle][HttpKernel] Let RequestPayloadValueResolver consider mapped argument type (@unixslayer)
  • feature #58001 [Scheduler] Add capability to skip missed periodic tasks, only the last schedule will be called (@eltharin)
  • feature #57827 [Serializer][Translation] Deprecate passing a non-empty CSV escape char (@alexandre-daubois)
  • feature #58007 [Security] Deprecate empty user identifier (@ajgarlag)
  • feature #57431 [Mailer] Add Sweego bridge (@welcoMattic)
  • feature #58028 [TwigBridge] Render a block via the #[Template] attribute (@smnandre)
  • feature #58004 [DependencyInjection] Add ContainerBuilder::registerChild() shortcut method (@HypeMC)
  • feature #57881 [Webhook] decouple the Webhook component from the Serializer component (@xabbuh)
  • feature #57804 [FrameworkBundle] enable detailed error messages by default when debug enabled (@xabbuh)
  • feature #57777 [VarDumper] Add support for FORCE_COLOR environment variable (@artshade)
  • feature #57915 [Messenger] Allow setting retry delay by RecoverableExceptionInterface (@valtzu)
  • feature #57927 [FrameworkBundle] Deprecate making cache.app adapter taggable (@alexandre-daubois)
  • feature #57935 [DoctrineBridge] Loosened CollectionToArrayTransformer::transform() to accept ReadableCollection (@timdev)
  • feature #57940 [Uid] Add support for binary, base-32 and base-58 representations in Uuid::isValid() (@alexandre-daubois)
  • feature #57908 [Validator] Add Week constraint (@alexandre-daubois)
  • feature #57934 [DependencyInjection] Deprecate !tagged tag, use !tagged_iterator instead (@alexandre-daubois)
  • feature #57903 [Mailer] Implement Postal mailer (@jonasclaes)
  • feature #57938 [Validator] Add support for RFC4122 format in the Ulid constraint (@alexandre-daubois)
  • feature #57879 [AssetMapper] Truncate public digests to 8 characters (@smnandre)
  • feature #57909 [HttpFoundation] Add $requests parameter to RequestStack constructor (@alexander-schranz)
  • feature #57839 [Form] Deprecate VersionAwareTest trait (@derrabus)
  • feature #57836 [Cache] Add optional ClockInterface to ArrayAdapter (@jasiolpn)
  • feature #54593 [PhpUnitBridge] Add ExpectUserDeprecationMessageTrait (@derrabus)
  • feature #57525 [SecurityBundle] Improve profiler’s authenticators tab (@MatTheCat)
  • feature #57618 [TypeInfo] Add PhpDocAwareReflectionTypeResolver (@mtarld)
  • feature #57702 [Cache] Stop defaulting to igbinary in DefaultMarshaller (Martijn Croonen)
  • feature #57773 [Security] pass the current token to the checkPostAuth() method of user checkers (@xabbuh)
  • feature #57797 [FrameworkBundle] terminate with non-zero exit code when a secret could not be read (@xabbuh)
  • feature #57716 [Validator] Add the WordCount constraint (@alexandre-daubois)
  • feature #57694 [SecurityBundle] Update web-token/jwt-library version and adjust checker parameters (@Spomky)
  • feature #57692 [SecurityBundle] Link to the profile the token was (de)authenticated (@MatTheCat)
  • feature #57685 [ExpressionLanguage] Allow passing any iterable as $providers list (@HypeMC)
  • feature #57670 [FrameworkBundle] Add exit option to secrets:decrypt-to-local command (@dciprian-petrisor)
  • feature #57671 [Messenger] Let WrappedExceptionsInterface extend the native Throwable interface (@xabbuh)
  • feature #57658 [Notifier] Remove the Gitter bridge (@fabpot)
  • feature #57627 [Notifier] Add Sipgate bridge (Lukas Kaltenbach, @sakul95)
  • feature #57243 [String] Add TruncateMode mode to truncate methods (@Korbeil)
  • feature #57456 [Mailer] Add mailomat bridge (@scuben)
  • feature #57399 [HtmlSanitizer] Add support for configuring the default action (@Seldaek)
  • feature #57595 [Yaml] Deprecate duplicate mapping keys containing null (@xabbuh)
  • feature #57507 [Messenger] Introduce #[AsMessage] attribute for message routing (@pounard)
  • feature #57518 Unify how --format is handled by commands (@fabpot)
  • feature #57379 [DependencyInjection] Add #[WhenNot] attribute (@alexandre-daubois)
  • feature #54978 [ExpressionLanguage] Add comment support to expression language (@valtzu)
  • feature #57438 [Validator] Add the format option to the Ulid constraint to allow accepting different ULID formats (@alexandre-daubois)
  • feature #57426 [Messenger] Add --format option to the messenger:stats command (@xvilo)
  • feature #57369 [Security] Display authenticators in the profiler even if they are all skipped (@MatTheCat)
  • feature #57425 [SecurityBundle] Improve profiler’s data (@MatTheCat)
  • feature #57436 [Validator] Add errorPath to Unique constraint (@norkunas)
  • feature #57408 [FrameworkBundle] Simpler Kernel setup with MicroKernelTrait (@yceruto)
  • feature #57424 [Mailer] [Infobip] Add trackClicks, trackOpens and trackingUrl as supp… (@ndousson)
  • feature #57380 [Validator] fix IBAN validator fails if IBAN contains non-breaking space (@antten)
  • feature #53749 [Validator] Add Yaml constraint for validating YAML content (@symfonyaml)
  • feature #57313 [Uid] Make AbstractUid implement Ds\Hashable if available (@jahudka)
  • feature #52679 [Process] ExecutableFinder::addSuffix() has no effect (@TravisCarden)
  • feature #54879 BicValidator add strict mode to validate bics in strict mode (@maxbeckers)
  • feature #54679 [TypeInfo] Proxies methods to non-nullable and fail gracefully (@mtarld)
  • feature #54737 [Notifier] [Slack] Add button block element and emoji/verbatim options to section block (@cvergne)
  • feature #54757 [ExpressionLanguage] Support non-existent names when followed by null coalescing (@adamkiss)
  • feature #54747 [Notifier] Add Primotexto bridge (Samael tomas)
  • feature #54975 [Mime] Support custom encoders in mime parts (@KDederichs)
  • feature #54894 [PropertyInfo] Adds static cache to PhpStanExtractor (@mvhirsch)
  • feature #57101 [Translation] Add lint:translations command (@Kocal)
  • feature #56985 [FrameworkBundle] Derivate kernel.secret from the decryption secret when its env var is not defined (@nicolas-grekas)
  • feature #57073 [AssetMapper][FrameworkBundle] Do not require http_client service (@ruudk)
  • feature #54678 [FrameworkBundle] Add support for setting headers with TemplateController (@HypeMC)
  • feature #54756 [Notifier] [Bluesky] Allow to attach image (@jdecool)
  • feature #54854 [Stopwatch] Add ROOT constant to make it easier to reference (@hacfi)
  • feature #54855 [Stopwatch] Add getLastPeriod method to StopwatchEvent (@hacfi)
  • feature #56838 [Security] Deprecate argument $secret of RememberMeToken and RememberMeAuthenticator (@nicolas-grekas)
  • feature #54881 [Validator] Make PasswordStrengthValidator::estimateStrength() public (@yalit)

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