Symfony 7.3.0-BETA1 has just been released. Here is the list of the most important changes since 7.2:
- feature #60232 Add PHP config support for routing (@fabpot)
- feature #60102 [HttpFoundation] Add UriSigner::verify() that throws named exceptions (@kbond)
- feature #60222 [FrameworkBundle][HttpFoundation] Add Clock support for UriSigner (@kbond)
- feature #60226 [Uid] Add component-specific exception classes (@rela589n)
- feature #60163 [TwigBridge] Allow attachment name to be set for inline images (@aleho)
- feature #60186 [DependencyInjection] Add "when" argument to #[AsAlias] (@Zuruuh)
- feature #60195 [Workflow] Deprecate Event::getWorkflow() method (@lyrixx)
- feature #60193 [Workflow] Add a link to mermaid.live from the profiler (@lyrixx)
- feature #60188 [JsonPath] Add two utils methods to JsonPath builder (@alexandre-daubois)
- feature #60018 [Messenger] Reset peak memory usage for each message (@TimWolla)
- feature #60155 [FrameworkBundle][RateLimiter] compound rate limiter config (@kbond)
- feature #60171 [FrameworkBundle][RateLimiter] deprecate RateLimiterFactory alias (@kbond)
- feature #60139 [Runtime] Support extra dot-env files (@natepage)
- feature #60140 Notifier mercure7.3 (@ernie76)
- feature #59762 [Config] Add NodeDefinition::docUrl() (@alexandre-daubois)
- feature #60099 [FrameworkBundle][RateLimiter] default lock_factory to auto (@kbond)
- feature #60112 [DoctrineBridge] Improve exception message when EntityValueResolver gets no mapping information (@MatTheCat)
- feature #60103 [Console] Mark AsCommand attribute as @final (@Somrlik, @GromNaN)
- feature #60069 [FrameworkBundle] Deprecate setting the collect_serializer_data to false (@mtarld)
- feature #60087 [TypeInfo] add TypeFactoryTrait::arrayKey() (@xabbuh)
- feature #42124 [Messenger] Add $stamps parameter to HandleTrait::handle (@alexander-schranz)
- feature #58200 [Notifier] Deprecate sms77 Notifier bridge (@MrYamous)
- feature #58380 [WebProfilerBundle] Update the logic that minimizes the toolbar (@javiereguiluz)
- feature #60039 [TwigBridge] Collect all deprecations with lint:twig command (@Fan2Shrek)
- feature #60081 [FrameworkBundle] Enable controller service with #[Route] attribute (@GromNaN)
- feature #60076 [Console] Deprecate returning a non-int value from a \Closure function set via Command::setCode() (@yceruto)
- feature #59655 [JsonPath] Add the component (@alexandre-daubois)
- feature #58805 [TwigBridge][Validator] Add the Twig constraint and its validator (@sfmok)
- feature #54275 [Messenger] [Amqp] Add default exchange support (@ilyachase)
- feature #60052 [Mailer][TwigBridge] Revert "Add support for translatable objects" (@kbond)
- feature #59967 [Mailer][TwigBridge] Add support for translatable subject (@norkunas)
- feature #58654 [FrameworkBundle] Binding for Object Mapper component (@soyuka)
- feature #60040 [Messenger] Use newer version of Beanstalkd bridge library (@HypeMC)
- feature #52748 [TwigBundle] Enable #[AsTwigFilter], #[AsTwigFunction] and #[AsTwigTest] attributes to configure runtime extensions (@GromNaN)
- feature #59831 [Mailer][Mime] Refactor S/MIME encryption handling in SMimeEncryptionListener (@Spomky)
- feature #59981 [TypeInfo] Add ArrayShapeType::$sealed (@mtarld)
- feature #51741 [ObjectMapper] Object to Object mapper component (@soyuka)
- feature #57309 [FrameworkBundle][HttpKernel] Allow configuring the logging channel per type of exceptions (@Arkalo2)
- feature #60007 [Security] Add methods param in IsCsrfTokenValid attribute (@Oviglo)
- feature #59900 [DoctrineBridge] add new DatePointType Doctrine type (@garak)
- feature #59904 [Routing] Add alias in {foo:bar} syntax in route parameter (@eltharin)
- feature #59978 [Messenger] Add --class-filter option to the messenger:failed:remove command (@arnaud-deabreu)
- feature #60024 [Console] Add support for invokable commands in LockableTrait (@yceruto)
- feature #59813 [Cache] Enable namespace-based invalidation by prefixing keys with backend-native namespace separators (@nicolas-grekas)
- feature #59902 [PropertyInfo] Deprecate Type (@mtarld, @chalasr)
- feature #59890 [VarExporter] Leverage native lazy objects (@nicolas-grekas)
- feature #54545 [DoctrineBridge] Add argument to EntityValueResolver to set type aliases (@NanoSector)
- feature #60011 [DependencyInjection] Enable multiple attribute autoconfiguration callbacks on the same class (@GromNaN)
- feature #60020 [FrameworkBundle] Make ServicesResetter autowirable (@lyrixx)
- feature #59929 [RateLimiter] Add CompoundRateLimiterFactory (@kbond)
- feature #59993 [Form] Add input with string value in MoneyType (@StevenRenaux)
- feature #59987 [FrameworkBundle] Auto-exclude DI extensions, test cases, entities and messenger messages (@nicolas-grekas)
- feature #59827 [TypeInfo] Add ArrayShapeType class (@mtarld)
- feature #59909 [FrameworkBundle] Add --method option to debug:router command (@santysisi)
- feature #59913 [DependencyInjection] Leverage native lazy objects for lazy services (@nicolas-grekas)
- feature #53425 [Translation] Allow default parameters (@Jean-Beru)
- feature #59464 [AssetMapper] Add --dry-run option on importmap:require command (@chadyred)
- feature #59880 [Yaml] Add the Yaml::DUMP_FORCE_DOUBLE_QUOTES_ON_VALUES flag to enforce double quotes around string values (@dkarlovi)
- feature #59922 [Routing] Add MONGODB_ID to requirement patterns (@GromNaN)
- feature #59842 [TwigBridge] Add Twig field_id() form helper (@Legendary4226)
- feature #59869 [Cache] Add support for valkey: / valkeys: schemes (@nicolas-grekas)
- feature #59862 [Messenger] Allow to close the transport connection (@andrew-demb)
- feature #59857 [Cache] Add \Relay\Cluster support (@dorrogeray)
- feature #59863 [JsonEncoder] Rename the component to JsonStreamer (@mtarld)
- feature #52749 [Serializer] Add discriminator map to debug commmand output (@jschaedl)
- feature #59871 [Form] Add support for displaying nested options in DebugCommand (@yceruto)
- feature #58769 [ErrorHandler] Add a command to dump static error pages (@pyrech)
- feature #54932 [Security][SecurityBundle] OIDC discovery (@vincentchalamon)
- feature #58485 [Validator] Add filenameCharset and filenameCountUnit options to File constraint (@IssamRaouf)
- feature #59828 [Serializer] Add defaultType to DiscriminatorMap (@alanpoulain)
- feature #59570 [Notifier][Webhook] Add Smsbox support (@alanzarli)
- feature #50027 [Security] OAuth2 Introspection Endpoint (RFC7662) (@Spomky)
- feature #57686 [Config] Allow using an enum FQCN with EnumNode (@alexandre-daubois)
- feature #59588 [Console] Add a Tree Helper + multiple Styles (@smnandre)
- feature #59618 [OptionsResolver] Deprecate defining nested options via setDefault() use setOptions() instead (@yceruto)
- feature #59805 [Security] Improve DX of recent additions (@nicolas-grekas)
- feature #59822 [Messenger] Add options to specify SQS queue attributes and tags (@TrePe0)
- feature #59290 [JsonEncoder] Replace normalizers by value transformers (@mtarld)
- feature #59800 [Validator] Add support for closures in When (@alexandre-daubois)
- feature #59814 [Framework] Deprecate the framework.validation.cache config option (@alexandre-daubois)
- feature #59804 [TypeInfo] Add type alias support (@mtarld)
- feature #59150 [Security] Allow using a callable with #[IsGranted] (@alexandre-daubois)
- feature #59789 [Notifier] [Bluesky] Return the record CID as additional info (@javiereguiluz)
- feature #59526 [Messenger] [AMQP] Add TransportMessageIdStamp logic for AMQP (@AurelienPillevesse)
- feature #59771 [Security] Add ability for voters to explain their vote (@nicolas-grekas)
- feature #59768 [Messenger][Process] add fromShellCommandline to RunProcessMessage (@Staormin)
- feature #59377 [Notifier] Add Matrix bridge (@chii0815)
- feature #58488 [Serializer] Fix deserializing XML Attributes into string properties (@Hanmac)
- feature #59657 [Console] Add markdown format to Table (@amenk)
- feature #59274 [Validator] Allow Unique constraint validation on all elements (@Jean-Beru)
- feature #59704 [DependencyInjection] Add Definition::addExcludedTag() and ContainerBuilder::findExcludedServiceIds() for auto-discovering value-objects (@GromNaN)
- feature #49750 [FrameworkBundle] Allow to pass signals to StopWorkerOnSignalsListener in XML config and as plain strings (@alexandre-daubois)
- feature #59479 [Mailer] [Smtp] Add DSN param to enforce TLS/STARTTLS (@ssddanbrown)
- feature #59562 [Security] Support hashing the hashed password using crc32c when putting the user in the session (@nicolas-grekas)
- feature #58501 [Mailer] Add configuration for dkim and smime signers (@elias-playfinder, @eliasfernandez)
- feature #52181 [Security] Ability to add roles in form_login_ldap by ldap group (@Spomky)
- feature #59712 [DependencyInjection] Don't skip classes with private constructor when autodiscovering (@nicolas-grekas)
- feature #50797 [FrameworkBundle][Validator] Add framework.validation.disable_translation option (@alexandre-daubois)
- feature #49652 [Messenger] Add bury_on_reject option to Beanstalkd bridge (@HypeMC)
- feature #51744 [Security] Add a normalization step for the user-identifier in firewalls (@Spomky)
- feature #54141 [Messenger] Introduce DeduplicateMiddleware (@VincentLanglet)
- feature #58546 [Scheduler] Add MessageHandler result to the PostRunEvent (@bartholdbos)
- feature #58743 [HttpFoundation] Streamlining server event streaming (@yceruto)
- feature #58939 [RateLimiter] Add RateLimiterFactoryInterface (@alexandre-daubois)
- feature #58717 [HttpKernel] Support Uid in #[MapQueryParameter] (@seb-jean)
- feature #59634 [Validator] Add support for the otherwise option in the When constraint (@alexandre-daubois)
- feature #59670 [Serializer] Add NumberNormalizer (@valtzu)
- feature #59679 [Scheduler] Normalize TriggerInterface as string (@valtzu)
- feature #59641 [Serializer] register named normalizer & denormalizer aliases (@mathroc)
- feature #59682 [Security] Deprecate UserInterface & TokenInterface's eraseCredentials() (@chalasr, @nicolas-grekas)
- feature #59667 [Notifier] [Bluesky] Allow to attach website preview card (@ppoulpe)
- feature #58300 [Security][SecurityBundle] Show user account status errors (@core23)
- feature #59630 [FrameworkBundle] Add support for info on ArrayNodeDefinition::canBeEnabled() and ArrayNodeDefinition::canBeDisabled() (@alexandre-daubois)
- feature #59612 [Mailer] Add attachments support for Sweego Mailer Bridge (@welcoMattic)
- feature #59302 [TypeInfo] Deprecate CollectionType as list and not as array (@mtarld)
- feature #59481 [Notifier] Add SentMessage additional info (@mRoca)
- feature #58819 [Routing] Allow aliases in #[Route] attribute (@damienfern)
- feature #59004 [AssetMapper] Detect import with a sequence parser (@smnandre)
- feature #59601 [Messenger] Add keepalive support (@silasjoisten)
- feature #59536 [JsonEncoder] Allow to warm up object and list (@mtarld)
- feature #59565 [Console] Deprecating Command getDefaultName and getDefaultDescription methods (@yceruto)
- feature #59473 [Console] Add broader support for command "help" definition (@yceruto)
- feature #54744 [Validator] deprecate the use of option arrays to configure validation constraints (@xabbuh)
- feature #59493 [Console] Invokable command adjustments (@yceruto)
- feature #59482 [Mailer] [Smtp] Add DSN option to make SocketStream bind to IPv4 (@quilius)
- feature #57721 [Security][SecurityBundle] Add encryption support to OIDC tokens (@Spomky)
- feature #58599 [Serializer] Add xml context option to ignore empty attributes (@qdequippe)
- feature #59368 [TypeInfo] Add TypeFactoryTrait::fromValue method (@mtarld)
- feature #59401 [JsonEncoder] Add JsonEncodable attribute (@mtarld)
- feature #59123 [WebProfilerBundle] Extend web profiler listener & config for replace on ajax requests (@chr-hertel)
- feature #59477 [Mailer][Notifier] Add and use Dsn::getBooleanOption() (@OskarStark)
- feature #59474 [Console] Invokable command deprecations (@yceruto)
- feature #59340 [Console] Add support for invokable commands and input attributes (@yceruto)
- feature #59035 [VarDumper] Add casters for object-converted resources (@alexandre-daubois)
- feature #59225 [FrameworkBundle] Always display service arguments & deprecate --show-arguments option for debug:container (@Florian-Merle)
- feature #59384 [PhpUnitBridge] Enable configuring mock namespaces with attributes (@HypeMC)
- feature #59370 [HttpClient] Allow using HTTP/3 with the CurlHttpClient (@MatTheCat)
- feature #50334 [FrameworkBundle][PropertyInfo] Wire the ConstructorExtractor class (@HypeMC)
- feature #59354 [OptionsResolver] Support union of types (@VincentLanglet)
- feature #58542 [Validator] Add Slug constraint (@raffaelecarelle)
- feature #59286 [Serializer] Deprecate the CompiledClassMetadataFactory (@mtarld)
- feature #59257 [DependencyInjection] Support @> as a shorthand for !service_closure in YamlFileLoader (@chx)
- feature #58545 [String] Add AbstractString::pascal() method (@raffaelecarelle)
- feature #58559 [Validator] [DateTime] Add format to error messages (@sauliusnord)
- feature #58564 [HttpKernel] Let Monolog handle the creation of log folder for improved readonly containers handling (@shyim)
- feature #59360 [Messenger] Implement KeepaliveReceiverInterface in Redis bridge (@HypeMC)
- feature #58698 [Mailer] Add AhaSend Bridge (@farhadhf)
- feature #57632 [PropertyInfo] Add PropertyDescriptionExtractorInterface to PhpStanExtractor (@mtarld)
- feature #58786 [Notifier] [Brevo][SMS] Brevo sms notifier add options (@ikerib)
- feature #59273 [Messenger] Add BeanstalkdPriorityStamp to Beanstalkd bridge (@HypeMC)
- feature #58761 [Mailer] [Amazon] Add support for custom headers in ses+api (@StudioMaX)
- feature #54939 [Mailer] Add retry_period option for email transport (Sébastien Despont, @fabpot)
- feature #59068 [HttpClient] Add IPv6 support to NativeHttpClient (@dmitrii-baranov-tg)
- feature #59088 [DependencyInjection] Make #[AsTaggedItem] repeatable (@alexandre-daubois)
- feature #59301 [Cache][HttpKernel] Add a noStore argument to the # attribute (@smnandre)
- feature #59315 [Yaml] Add compact nested mapping support to Dumper (@gr8b)
- feature #59325 [Config] Add ifFalse() (@OskarStark)
- feature #58243 [Yaml] Add support for dumping null as an empty value by using the Yaml::DUMP_NULL_AS_EMPTY flag (@alexandre-daubois)
- feature #59291 [TypeInfo] Add accepts method (@mtarld)
- feature #59265 [Validator] Validate SVG ratio in Image validator (@maximecolin)
- feature #59129 [SecurityBundle][TwigBridge] Add is_granted_for_user() function (@natewiebe13)
- feature #59254 [JsonEncoder] Remove chunk size definition (@mtarld)
- feature #59022 [HttpFoundation] Generate url-safe hashes for signed urls (@valtzu)
- feature #59177 [JsonEncoder] Add native lazyghost support (@mtarld)
- feature #59192 [PropertyInfo] Add non-*-int missing types for PhpStanExtractor (@wuchen90)
- feature #58515 [FrameworkBundle][JsonEncoder] Wire services (@mtarld)
- feature #59157 [HttpKernel] [MapQueryString] added key argument to MapQueryString attribute (@feymo)
- feature #59154 [HttpFoundation] Support iterable of string in StreamedResponse (@mtarld)
- feature #51718 [Serializer] [JsonEncoder] Introducing the component (@mtarld)
- feature #58946 [Console] Add support of millisecondes for formatTime (@SebLevDev)
- feature #48142 [Security][SecurityBundle] User authorization checker (@natewiebe13)
- feature #59075 [Uid] Add @return non-empty-string annotations to AbstractUid and relevant functions (@niravpateljoin)
- feature #59114 [ErrorHandler] support non-empty-string/non-empty-list when patching return types (@xabbuh)
- feature #59020 [AssetMapper] add support for assets pre-compression (@dunglas)
- feature #58651 [Mailer][Notifier] Add webhooks signature verification on Sweego bridges (@welcoMattic)
- feature #59026 [VarDumper] Add caster for Socket instances (@nicolas-grekas)
- feature #58989 [VarDumper] Add caster for AddressInfo objects (@nicolas-grekas)
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.
All the various changes and additions are awesome each release! Thanks to everyone who made that possible. 🙏❤️
Thanks for your hard works !