Symfony 6.3.0-BETA1 has just been released. Here is the list of the most important changes since 6.2:
- feature #50112 [Asset] [AssetMapper] New AssetMapper component: Map assets to publicly available, versioned paths (@weaverryan)
- feature #50155 [Scheduler] add schedule name to MessageContext (@kbond)
- feature #49792 [Scheduler] add "hashed" cron expression support (@kbond)
- feature #50130 [Scheduler] Make MessageGenerator yield some scheduling context (@tucksaun)
- feature #49863 [Scheduler] have TriggerInterface extend \Stringable (@kbond)
- feature #50082 [HttpKernel] Enhance MapQueryString adding validation group (@renanbr)
- feature #49614 [HttpFoundation] add Request::getPayload() (@kbond)
- feature #49966 [Security] Create Controller Argument Resolver for Security Token (@Koc)
- feature #49911 [HttpClient] Support file uploads by nesting resource streams in body option (@nicolas-grekas)
- feature #50069 [Security] Added error code to UserPassword constraint (@okorneliuk)
- feature #50044 [HttpClient] Add JsonMockResponse (@fancyweb)
- feature #50029 [HttpKernel] Enhance MapRequestPayload adding format and validation group (@renanbr)
- feature #49801 [Cache] Support Redis cluster connections with predis/predis:^2.0 (@mfettig)
- feature #49809 [HttpClient] Allow using multiple base_uri as array for retries (@Tiriel)
- feature #49151 [HttpKernel] Collect data from every event dispatcher (@MatTheCat)
- feature #49588 [Form] Deprecate not configuring the "widget" option of date/time form types (@MrYamous, @nicolas-grekas)
- feature #50059 [Form] Don't render seconds for HTML5 date pickers unless "with_seconds" is explicitly set (@fancyweb)
- feature #50053 [BrowserKit][HttpClient] Update the value of some user agents to comply with the RFC 9110 specification (@javiereguiluz)
- feature #50055 [Intl] Allow compressing emoji and data maps (@nicolas-grekas)
- feature #49134 [HttpKernel] Add #[MapQueryParameter] to map and validate individual query parameters to controller arguments (@ruudk, @nicolas-grekas)
- feature #50009 [Validator] Add value_length parameter to Length constraint (@WedgeSama)
- feature #50031 [Routing] Convert BackedEnums passed as controller action parameters to their value (@nalabdou)
- feature #49824 [Mime] Added getDispostion() to TextPart to get current content disposition. (@Cyb0rk)
- feature #49900 [Mailer] Allow overriding default eSMTP authenticators (@cedric-anne)
- feature #48568 [Serializer] Add Debug command (@loic425)
- feature #49982 [BrowserKit] Add proper exception hierarchy (@fabpot)
- feature #49138 [HttpKernel] Create Attributes #[MapRequestPayload] and #[MapQueryString] to map Request input to typed objects (@Koc)
- feature #48272 [Security] Add OidcUserInfoTokenHandler and OidcUser (@vincentchalamon)
- feature #49986 [Notifier] Add options to Telegram Bridge (@Nsbx)
- feature #49913 [TwigBridge][TwigBundle] Add current locale to AppVariable (@SVillette)
- feature #49950 [Serializer] Marking some Normalizer classes as final (@tucksaun)
- feature #49217 [Security] deprecate the $secret argument of the PersistentRememberMeHandler constructor (@xabbuh)
- feature #48343 [Form] [ChoiceType] Add a placeholder_attr option (@elementaire)
- feature #49953 [Serializer] Mark ObjectNormalizer as final for 7.0 (@tucksaun)
- feature #49918 [DoctrineBridge] Deprecate passing doctrine subscribers to ContainerAwareEventManager (@alli83)
- feature #49944 [Serializer] Make ProblemNormalizer give details about ValidationFailedException and PartialDenormalizationException (@nicolas-grekas)
- feature #49491 [Mailer] Add new attributes to Infobip API transport (@ndousson)
- feature #49887 [WebProfilerBundle] Add clickable entry view to debug toolbar (@PhilETaylor)
- feature #49665 [DependencyInjection] Add constructor option to #[Autoconfigure] (@alexandre-daubois)
- feature #49856 [Validator] Remove bjeavons/zxcvbn-php in favor of a builtin solution (@Spomky)
- feature #49798 [HttpClient] Add ServerSentEvent::getArrayData() to get the SSE's data decoded as an array directly (@fancyweb)
- feature #49853 [VarDumper] Add a caster for the FlattenException (@lyrixx)
- feature #48495 [Notifier] Add SimpleTextin bridge (@gnito-org)
- feature #49847 [Cache] Fix DBAL deprecations and stop using NUL chars in tags prefix (@nicolas-grekas)
- feature #49852 [VarDumper] Add Caster::PATTERN_PRIVATE to help builing key (@lyrixx)
- feature #49632 [DependencyInjection] Add support for casting callables into single-method interfaces (@nicolas-grekas)
- feature #49836 [DependencyInjection] Add support for #[Autowire(lazy: class-string)] (@nicolas-grekas)
- feature #49789 [Validator] New PasswordStrength constraint (@Spomky)
- feature #49810 [Scheduler] Tweak debug:scheduler command output (@fabpot)
- feature #49795 add debug:scheduler command (@kbond)
- feature #49705 [FrameworkBundle] Add support to easily clear all cache pools (@bobvandevijver)
- feature #49805 [Mailer] Update default Mailgun port (@dreadnip)
- feature #49762 [Console] Use file system completion for redirect operators (@Chi-teck)
- feature #49781 [Translation] Improve message extraction performance for big code bases (@welcoMattic)
- feature #49726 [HttpFoundation] Add IpUtils::isPrivateIp (@danielburger1337)
- feature #49617 [CssSelector] Add support for :scope (@franckranaivo, Franck RANAIVO-HARISOA)
- feature #49702 [FrameworkBundle] Make StopWorkerOnSignalsListener configurable via messenger's config (@rmikalkenas)
- feature #49734 [Messenger] Add a way to redispatch a message (@fabpot)
- feature #49721 [Security] Add argument $exceptionCode to #[IsGranted] (Maximilian Zumbansen)
- feature #49739 [Scheduler] Add DateIntervalTrigger and DatePeriodTrigger (@fabpot)
- feature #49685 [DependencyInjection] Add support for #[Autowire(lazy: true)] (@nicolas-grekas)
- feature #49730 [Messenger] Add Clock support in Worker (@fabpot)
- feature #47793 [WebLink] Add relations defined in RFC 8631 (@Oipnet)
- feature #49639 [DependencyInjection] Add support for generating lazy closures (@nicolas-grekas)
- feature #48525 [HttpFoundation] Add ParameterBag::getString() and deprecate accepting invalid values (@GromNaN)
- feature #49729 [Scheduler] Add a simple Scheduler class for when the component is used standalone (@fabpot)
- feature #49725 [Messenger] Add support for the DelayStamp in InMemoryTransport (@fabpot)
- feature #47112 [Messenger] Add a scheduler component (@upyx, @fabpot)
- feature #49691 [FrameworkBundle] Add scoped httplug clients and deprecate httplugs use like psr18 client (@simonberger)
- feature #48542 [Webhook][RemoteEvent] Add the components (@fabpot)
- feature #49620 [ErrorHander] Display exception properties in the HTML error page (@lyrixx)
- feature #48128 [HttpFoundation] Add support for the 103 status code (Early Hints) and other 1XX statuses (@dunglas)
- feature #48990 [DependencyInjection] deprecate the @required annotation (@alexislefebvre)
- feature #49306 [Security] Add logout configuration for Clear-Site-Data header (@maxbeckers)
- feature #49596 [Validator] Add the exclude option to the Cascade constraint (@alexandre-daubois)
- feature #49291 [Serializer] Add methods getSupportedTypes to allow better performance (@tucksaun, @nicolas-grekas)
- feature #49642 [DependencyInjection] Deprecate #[MapDecorated] in favor of #[AutowireDecorated] (@nicolas-grekas)
- feature #49539 [Messenger] make StopWorkerOnSignalsListener listen by default on SIGTERM and SIGINT (@lyrixx)
- feature #49628 [DependencyInjection] Add support for autowiring services as closures using attributes (@nicolas-grekas)
- feature #48992 [HttpKernel] Introduce pinnable value resolvers with #[ValueResolver] and #[AsPinnedValueResolver] (@MatTheCat)
- feature #49121 [DomCrawler] Give choice of used parser (@victor-prdh)
- feature #49610 [DoctrineBridge] deprecate doctrine schema subscribers in favor of listeners (@alli83)
- feature #48821 [Serializer] add a context to allow invalid values in BackedEnumNormalizer (@nikophil)
- feature #49529 [Console] Add support for managing exit code while handling signals (@lyrixx)
- feature #49015 [Security] Added condition to always return the real Authenticator from security events (@florentdestremau)
- feature #48899 [Security] Add remember me option for JSON logins (@baumerdev, @nicolas-grekas)
- feature #49302 [HttpClient] Add UriTemplateHttpClient (@fancyweb)
- feature #49013 [Serializer] Replace the MissingConstructorArgumentsException class with MissingConstructorArgumentException (@HypeMC)
- feature #49454 [Notifier] Add Pushover bridge (@mocodo)
- feature #49461 [Mailer] Add MailerSend bridge (@doobas)
- feature #49492 [DependencyInjection] Add support for Exclude attribute (@lyrixx)
- feature #49139 [FrameworkBundle][HttpKernel] Display warmers duration on debug verbosity for cache:clear command (@alexandre-daubois)
- feature #49417 [Validator] Add the option filenameMaxLength to the File constraint (Kevin Auvinet)
- feature #49487 [FrameworkBundle] Allow disabling dumping of container to XML to improve performance (@ruudk)
- feature #49275 [FrameworkBundle][HttpKernel] Configure ErrorHandler on boot (@HypeMC)
- feature #49464 [Validator] Implement countUnit option for Length constraint (@spackmat)
- feature #49300 [Validator] Add a NoSuspiciousCharacters constraint to validate a string is not suspicious (@MatTheCat)
- feature #49318 [HttpKernel] Add skip_response_headers to the HttpCache options (@Toflar)
- feature #49428 [Messenger] Allow to define batch size when using BatchHandlerTrait with getBatchSize() (@alexandre-daubois)
- feature #49429 [Mailer] Add option to enable Sandbox via dsn option sandbox=true (@mdawart)
- feature #49433 [DependencyInjection] allow extending Autowire attribute (@kbond)
- feature #49412 [DependencyInjection] Allow trimming service parameters value in XML configuration files (@alexandre-daubois)
- feature #49442 [TwigBundle] Add alias deprecation for Twig_Environment (@94noni)
- feature #49331 [PropertyAccess] Allow escaping in PropertyPath (@alanpoulain)
- feature #49411 [DependencyInjection] Add AsAlias attribute (@alanpoulain)
- feature #49343 [HtmlSanitizer] Remove experimental status (@tgalopin)
- feature #49261 Smsapi - Make "from" optional (@szal1k)
- feature #49327 [Notifier] Introduce FromNotificationInterface for MessageInterface implementations (@fabpot)
- feature #49270 [Messenger] Allow passing a string instead of an array in TransportNamesStamp (@alexandre-daubois)
- feature #49193 [Security] Return 403 instead of 500 when no firewall is defined (@nicolas-grekas)
- feature #49098 [Config] Allow enum values in EnumNode (@fancyweb)
- feature #49164 [Yaml] Feature #48920 Allow milliseconds and microseconds in dates (@dustinwilson)
- feature #48981 [Console] Add ReStructuredText descriptor (@danepowell)
- feature #48748 [VarDumper] Display invisible characters (@alamirault)
- feature #48250 [Cache] Compatible with aliyun redis instance (@tourze)
- feature #47066 [DependencyInjection] Allow attribute autoconfiguration on static methods (@alex-dev)
- feature #49021 [SecurityBundle] Make firewalls event dispatcher traceable on debug mode (@MatTheCat)
- feature #48930 [Cache] Add Redis Relay support (@ostrolucky)
- feature #49102 [FrameworkBundle][Workflow] Register alias for argument for workflow services with workflow name only (@lyrixx)
- feature #49064 [ExpressionLanguage] Deprecate loose comparisons when using the "in" operator (@nicolas-grekas)
- feature #48999 [Lock] create migration for lock table when DoctrineDbalStore is used (@alli83)
- feature #49011 [WebProfilerBundle] Close profiler settings on escape (@norkunas)
- feature #48997 [WebProfilerBundle] Mailer panel tweaks (@javiereguiluz)
- feature #49012 [WebProfilerBundle] Display date/time elements in the user local timezone (@javiereguiluz)
- feature #48957 [Config] Do not array_unique EnumNode values (@fancyweb)
- feature #48976 [ErrorHandler] try to read SYMFONY_PATCH_TYPE_DECLARATIONS from superglobal arrays too (@xabbuh)
- feature #48938 [FrameworkBundle] Allow setting private services with the test container (@nicolas-grekas)
- feature #48959 [Messenger] Allow password in redis dsn when using sockets (@PhilETaylor)
- feature #48940 [DomCrawler] Add argument $normalizeWhitespace to Crawler::innerText() and make it return the first non-empty text (@otsch)
- feature #48762 [WebProfilerBundle] Improve accessibility of tabs and some links (@javiereguiluz)
- feature #48945 [WebProfilerBundle] Use a dynamic SVG favicon in the profiler (@javiereguiluz)
- feature #48901 Allow Usage of ContentId in html (@m42e)
- feature #48669 [ExpressionLanguage] Add enum expression function (@alexandre-daubois)
- feature #48678 [FrameworkBundle] Rename service notifier.logger_notification_listener to notifier.notification_logger_listener (@ker0x)
- feature #48516 [PhpUnitBridge] Add enum_exists mock (@alexandre-daubois)
- feature #48855 [Notifier] Add new Symfony Notifier for PagerDuty (@stloyd)
- feature #48876 [HttpKernel] Rename HttpStatus atribute to WithHttpStatus (@fabpot)
- feature #48797 [FrameworkBundle] Add extra attribute for HttpClient Configuration (@voodooism)
- feature #48747 [HttpKernel] Allow using #[WithLogLevel] for setting custom log level for exceptions (@angelov)
- feature #48820 [HttpFoundation] ParameterBag::getEnum() (@nikophil)
- feature #48685 [DependencyInjection] Exclude referencing service (self) in TaggedIteratorArgument (@chalasr)
- feature #48409 [Mailer] add reject to MessageEvent to stop sending mail (Thomas Hanke, @fabpot)
- feature #47709 [HttpFoundation] Add StreamedJsonResponse for efficient JSON streaming (@alexander-schranz)
- feature #48810 Drop v1 contracts packages everywhere (@derrabus)
- feature #48802 [DependencyInjection] Cut compilation time (@nicolas-grekas)
- feature #48707 [DependencyInjection] Target Attribute must fail if the target does not exist (@rodmen)
- feature #48387 [SecurityBundle] Rename firewalls.logout.csrf_token_generator to firewalls.logout.csrf_token_manager (@MatTheCat)
- feature #48671 [Validator] Add getConstraint() method to ConstraintViolationInterface (@syl20b)
- feature #48665 [FrameworkBundle] Deprecate framework:exceptions XML tag (@MatTheCat)
- feature #48686 [DependencyInjection] Deprecate integer keys in "service_locator" config (@upyx)
- feature #48616 [Notifier] GoogleChat CardsV1 is deprecated we must use cardsV2 instead (@daifma)
- feature #48396 [Intl] Add a special locale to strip emojis easily with EmojiTransliterator (@fancyweb)
- feature #48098 [HttpKernel] Resolve DateTime value using the Clock (@GromNaN)
- feature #48642 [Clock] Add Clock class and now() function (@nicolas-grekas)
- feature #48531 [FrameworkBundle][Messenger] Add support for namespace wildcard in Messenger routing (@brzuchal)
- feature #48121 [Messenger] Do not return fallback senders when other senders were already found (@wouterj)
- feature #48582 [Security] Make login redirection logic available to programmatic login (@hellomedia)
- feature #48352 [HttpKernel] Allow using #[HttpStatus] for setting status code and headers for HTTP exceptions (@angelov)
- feature #48710 [DependencyInjection] Add support for nesting autowiring-related attributes into #[Autowire(...)] (@nicolas-grekas)
- feature #48127 [Yaml] Add flag to dump numeric key as string (@alamirault)
- feature #48696 [WebProfilerBundle] Add a title and img role to svg of the web debug toolbar (Monet Emilien)
- feature #48594 [SecurityBundle] Improve support for authenticators that don't need a user provider (@wouterj)
- feature #48457 [FrameworkBundle] Improve UX ConfigDebugCommand has not yaml component (@alamirault)
- feature #48044 [SecurityBundle] Set request stateless when firewall is stateless (@alamirault)
- feature #48200 [Security] Allow custom user identifier for X509 authenticator (@Spomky)
- feature #47352 [HttpKernel] FileProfilerStorage remove expired profiles mechanism (@alamirault)
- feature #48614 [Messenger] Move Transport/InMemoryTransport to Transport/InMemory/InMemoryTransport (@lyrixx)
- feature #48059 [HttpFoundation] Create migration for session table when pdo handler is used (@alli83)
- feature #47349 [Notifier] Allow to update Slack messages (@maxim-dovydenok-busuu)
- feature #48432 [VarDumper] Add support of named arguments to dd() and dump() to display a label (@alexandre-daubois)
- feature #48275 [FrameworkBundle] Allow to avoid limit definition in a RateLimiter configuration when using the no_limit policy (@alexandre-daubois)
- feature #39353 [FrameworkBundle][Notifier] Allow to configure or disable the message bus to use (@jschaedl, @fabpot)
- feature #48565 [Notifier] [FakeChat] Allow missing optional dependency (Benjamin Schoch)
- feature #48503 [Notifier] Add options to SmsMessage (@gnito-org)
- feature #48164 [Serializer] Add encoder option for saving options (@ihmels)
- feature #48206 [Console] Add placeholder formatters per ProgressBar instance (@GromNaN)
- feature #48232 [Validator] Add {{pattern}} to Regex constraint violations (@alamirault)
- feature #48299 [Console] #47809 remove exit() call in last SignalHandler (@akuzia)
- feature #48424 [DomCrawler][FrameworkBundle] Add assertSelectorCount (@curlycarla2004)
- feature #48546 [Notifier] [FakeSms] Allow missing optional dependency (Benjamin Schoch)
- feature #48484 [ProxyManagerBridge] Deprecate the package (@nicolas-grekas)
- feature #48101 [Notifier] Add Mastodon Notifier (@qdequippe)
- feature #48362 [Clock] Add ClockAwareTrait to help write time-sensitive classes (@nicolas-grekas)
- feature #48478 [VarDumper] Add caster for WeakMap (@nicolas-grekas)
- feature #47680 [DependencyInjection][HttpKernel] Introduce build parameters (@HeahDude)
- feature #48374 [Notifier] [Telegram] Add support to answer callback queries (@alexsoft)
- feature #48466 [Notifier] Add Line bridge (@kurozumi)
- feature #48381 [Validator] Add Uuid::TIME_BASED_VERSIONS to match that a UUID being validated embeds a timestamp (@alexandre-daubois)
- feature #48379 [HttpKernel] Set a default file link format when none is provided to FileLinkFormatter (@alexandre-daubois)
- feature #48389 [Notifier] Add Bandwidth bridge (@gnito-org)
- feature #48394 [Notifier] Add Plivo bridge (@gnito-org)
- feature #48397 [Notifier] Add RingCentral bridge (@gnito-org)
- feature #48398 [Notifier] Add Termii bridge (@gnito-org)
- feature #48399 [Notifier] Add iSendPro bridge (@leblanc-simon)
- feature #48084 [Notifier] Add Twitter notifier (@nicolas-grekas)
- feature #48053 [Messenger] Improve DX (@Nommyde)
- feature #48043 [SecurityBundle] Deprecate enabling bundle and not configuring it (@alamirault)
- feature #48147 [DependencyInjection] Add env and param parameters for Autowire attribute (@alexndlm)
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.