<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom"
>
    <channel>
        <title>Symfony Blog</title>
        <atom:link href="https://feeds.feedburner.com/symfony/blog" rel="self" type="application/rss+xml" />
        <link>https://symfony.com/blog/</link>
        <description>Most recent posts published on the Symfony project blog</description>
        <pubDate>Wed, 29 Jul 2026 05:22:42 +0200</pubDate>
        <lastBuildDate>Tue, 28 Jul 2026 15:30:00 +0200</lastBuildDate>
        <language>en</language>
                        <item>
            <title><![CDATA[SymfonyCon Warsaw 2026: Asynchronous PHP & Symfony in High-Performance Systems]]></title>
            <link>https://symfony.com/blog/symfonycon-warsaw-2026-asynchronous-php-and-symfony-in-high-performance-systems?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</link>
            <description>
    

SymfonyCon returns to its roots! Join us in Warsaw (Poland) on November 26 and 27, 2026, for two days of world-class technical sessions. See more details here!



🎤 Speaker announcements

We are excited to introduce Mathias Arlaud, Software Engineer…</description>
            <content:encoded><![CDATA[
                                <p><a class="block text-center" href="https://live.symfony.com/2026-warsaw-con/">
    <img src="https://symfony.com/uploads/assets/blog/NL-BLOG-Banner-38.png" alt="Nl Blog Banner 38">
</a>
SymfonyCon returns to its roots! Join us in Warsaw (Poland) on November 26 and 27, 2026, for two days of world-class technical sessions. See more details <strong><a href="https://live.symfony.com/2026-warsaw-con/">here!</a></strong></p>

<hr />

<h3>🎤 Speaker announcements</h3>

<p>We are excited to introduce <strong><a href="https://connect.symfony.com/profile/mtarld">Mathias Arlaud</a></strong>, Software Engineer at baksla.sh ! He'll take the mic to present <strong><a href="https://live.symfony.com/2026-warsaw-con/schedule/the-hidden-cost-of-return-new-response">"Asynchronous PHP &amp; Symfony in High-Performance Systems"</a></strong>, taking a deep dive into runtime internals and architecture to help you engineer lightning-fast applications:</p>

<p>"Most Symfony applications buffer everything: Doctrine results, serialized objects, JSON, exports. They build the entire response, then send it. This works fine, until it doesn't: memory spikes, time-to-first-byte creeps up, and exports start dying in production.</p>

<p>LLMs make the problem impossible to ignore. When a model takes several seconds to answer, waiting for the return means staring at a spinner the whole time. Streaming isn't a back-end optimization anymore. It's the foundation modern user experience is built on.</p>

<p>In this talk, we tear down an assumption baked into most Symfony apps: that a response has to be fully built before it's sent. We'll rethink the data flow end to end, StreamedResponse, incremental JSON encoding with the JsonStreamer component, iterable Doctrine data sources, Server-Sent Events, and EventStreamResponse for real time.</p>

<p>You'll walk away knowing how to stream data as it's produced, power live interfaces, generate exports of several million rows, and keep memory flat, using tools already sitting in Symfony."</p>

<p>Click here to see more <a href="https://live.symfony.com/2026-warsaw-con/schedule">talks</a> — the full schedule will be unveiled step-by-step over the coming weeks. Stay tuned!</p>

<h3>Ready to join us?</h3>

<h3>🏨 Accommodation</h3>

<p>The official conference hotel offers special preferential rates and flexible conditions for our attendees. Make sure to use our <strong><a href="https://www.hilton.com/en/book/reservation/rooms/?ctyhocn=WAWHIHI&amp;arrivalDate=2026-11-23&amp;departureDate=2026-11-29&amp;groupCode=GSYMDP&amp;room1NumAdults=1">dedicated link</a></strong> to book your room and stay right where the action happens!</p>

<h3>🥳 Save the date for the Community Party!</h3>

<p>Because SymfonyCon isn't just about code, we are happy to confirm that our traditional Community Party will take place on the evening of <strong>Thursday, November 26</strong>. Get ready for a great night of networking, fun, and connecting with peers!</p>

<h3>💻 Hackday</h3>

<p>Ready to contribute? The Hackday on <strong>Saturday, November 28</strong> (free and open to all!) will take place at "The Brain Embassy - Czackiego" thanks to the support of Baksla.sh. Bring your laptop and your good mood!</p>

<h3>🎟️ Get your tickets</h3>

<p>Regular tickets are available now, but don't wait too long. <strong><a href="https://live.symfony.com/2026-warsaw-con/registration">secure your ticket today</a></strong></p>

<hr />

<h3>Join us online!</h3>

<p>💡Follow the "conference" blog posts to not miss anything!</p>

<p>Want the latest Symfony updates? Follow us and tune in from wherever you are 🌎</p>

<p><a class="block text-center" href="https://linktr.ee/symfony">
   <img src="https://symfony.com/uploads/assets/blog/Banner-BLOG.png" alt="Banner Blog">
</a></p>

                <hr style="margin-bottom: 5px" />
                <div style="font-size: 90%">
                    <a href="https://symfony.com/sponsor">Sponsor</a> the Symfony project.
                </div>
            ]]></content:encoded>
            <guid isPermaLink="false">https://symfony.com/blog/symfonycon-warsaw-2026-asynchronous-php-and-symfony-in-high-performance-systems?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</guid>
            <dc:creator><![CDATA[ Eloïse Charrier ]]></dc:creator>
            <pubDate>Tue, 28 Jul 2026 15:30:00 +0200</pubDate>
            <comments>https://symfony.com/blog/symfonycon-warsaw-2026-asynchronous-php-and-symfony-in-high-performance-systems?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed#comments-list</comments>
        </item>
                        <item>
            <title><![CDATA[A Week of Symfony #1021 (July 20–26, 2026)]]></title>
            <link>https://symfony.com/blog/a-week-of-symfony-1021-july-20-26-2026?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</link>
            <description>This week, Symfony development activity was very intense and focused mostly on bug fixes. In addition, we added support for the upcoming Twig 4.0 version and fixed some issues related to changes in the upcoming PHP 8.6 version. Lastly, we published the first…</description>
            <content:encoded><![CDATA[
                                <p>This week, Symfony development activity was very intense and focused mostly on bug fixes. In addition, we added <a href="https://github.com/symfony/symfony/commit/b6562e73b93b4f73f5726b5e134d69f01f3f7df4">support for the upcoming Twig 4.0</a> version and <a href="https://github.com/symfony/symfony/commit/94213f30a0c48c9c201ad060223a2c77861076f9">fixed some issues</a> related to changes in the upcoming PHP 8.6 version. Lastly, we published the first talks for the <a href="https://live.symfony.com/2026-warsaw-con/">SymfonyCon Warsaw 2026</a> conference.</p>

<h2>Symfony development highlights</h2>

<p>This week, 73 pull requests were merged (65 in code and 8 in docs) and 49 issues were closed (43 in code and 6 in docs). Excluding merges, 36 authors made additions and deletions. See details for <a href="https://github.com/symfony/symfony/pulse">code</a> and <a href="https://github.com/symfony/symfony-docs/pulse">docs</a>.</p>

<p><a href="https://github.com/symfony/symfony/commits/6.4">6.4 changelog</a>:</p>

<ul>
<li><a href="https://github.com/symfony/symfony/commit/f93084a6b44fe440b9c3e8aa9c48f0bbdaee1a6e">f93084a</a>: &#91;DependencyInjection&#93; fix env var reported as never used for a removed autowired service</li>
<li><a href="https://github.com/symfony/symfony/commit/11e06866251b7c0c0a27b160dbf02d77eb8069f9">11e0686</a>: &#91;Yaml&#93; fix line folding after trailing backslashes in quoted strings</li>
<li><a href="https://github.com/symfony/symfony/commit/a6e67729b6fe4ef692ad25030136078c93335903">a6e6772</a>: &#91;EventDispatcher&#93; clear wrappedListeners in TraceableEventDispatcher::reset()</li>
<li><a href="https://github.com/symfony/symfony/commit/05b14f277a4c7e96f697ee467c49f698ea1bc023">05b14f2</a>: &#91;ErrorHandler&#93; fix fatal error without args triggering an error when calling getTraceFromString</li>
<li><a href="https://github.com/symfony/symfony/commit/649942c4a2be666de0c8f80d6b88da331516c8ef">649942c</a>: &#91;Messenger&#93; fix fatal on AmazonSqs shutdown when the in-flight receive cannot be resumed</li>
<li><a href="https://github.com/symfony/symfony/commit/07ed2b67433cbef739c09771dca979f988c8f31b">07ed2b6</a>: &#91;Cache&#93; initialize PhpArrayAdapter before classifying keys in deleteItems()</li>
<li><a href="https://github.com/symfony/symfony/commit/c4f08558217883bb54c7c33c5c9a63bc8e547196">c4f0855</a>: &#91;Console&#93; fix two ValueError crashes on multibyte / multi-column widths</li>
<li><a href="https://github.com/symfony/symfony/commit/a11f0f9a46d11276e47773fdf2110b2d6c4d9bed">a11f0f9</a>: &#91;Config&#93; escape comment-closing sequence in generated config builders</li>
<li><a href="https://github.com/symfony/symfony/commit/7b243b56f685806be86e88a1ff49f10372343568">7b243b5</a>: &#91;DoctrineBridge&#93; filter non-php files in ProxyCacheWarmer::warmUp() to avoid CacheWarmerAggregate exception</li>
<li><a href="https://github.com/symfony/symfony/commit/94213f30a0c48c9c201ad060223a2c77861076f9">94213f3</a>:  handle PHP 8.6 removing function arguments in error messages</li>
<li><a href="https://github.com/symfony/symfony/commit/b520c9eab99f7c433ab6125a88356f93412ad1cc">b520c9e</a>: &#91;Console&#93; fix table borders around colspan cells and header-less tables</li>
<li><a href="https://github.com/symfony/symfony/commit/b6562e73b93b4f73f5726b5e134d69f01f3f7df4">b6562e7</a>:  allow Twig 4</li>
<li><a href="https://github.com/symfony/symfony/commit/140e32b2c72cca45a97fed1ca00d78a242717147">140e32b</a>: &#91;Mime&#93; fix dropped whitespace between multiple encoded words</li>
<li><a href="https://github.com/symfony/symfony/commit/7e89faef37d33e7e7a2d53d9534d1fe94b470563">7e89fae</a>: &#91;Routing&#93; detect circular references in object route parameters</li>
<li><a href="https://github.com/symfony/symfony/commit/24aec8caf13467d599a1bdc9d5479ccca4f5bff6">24aec8c</a>: &#91;EventDispatcher&#93; fix regression in TraceableEventDispatcher invocation counting</li>
<li><a href="https://github.com/symfony/symfony/commit/e85b30ac519c51a8d4e0b07505faef71211495b5">e85b30a</a>: &#91;AssetMapper&#93; fix crash when a remote package depends on a locally-mapped importmap entry</li>
<li><a href="https://github.com/symfony/symfony/commit/1f10bcdc9529ff91e1d02409c4a4536e6be9f580">1f10bcd</a>: &#91;Messenger&#93; fix ack/reject failing when the Redis stream entry is already deleted</li>
<li><a href="https://github.com/symfony/symfony/commit/e289b15336016892f65e784e5d2392768d6c54c7">e289b15</a>: &#91;Messenger&#93; strip trace from nested exceptions in ErrorDetailsStamp</li>
<li><a href="https://github.com/symfony/symfony/commit/cc6e1c47d4b2e570a36b4a6fc46ebe001231a54f">cc6e1c4</a>: &#91;PropertyInfo&#93; fix union with mixed handling in PhpStanTypeHelper</li>
<li><a href="https://github.com/symfony/symfony/commit/1c70327405d97004040f10294daef5175d6a2952">1c70327</a>: &#91;Validator&#93; allow Traverse to be inherited</li>
<li><a href="https://github.com/symfony/symfony/commit/0a1173bc9d12d95df788b7c3561f6a5947e1d86b">0a1173b</a>: &#91;PropertyInfo&#93; ignore mutators with several required parameters</li>
<li><a href="https://github.com/symfony/symfony/commit/42ef0120c0fc2bcb614b7a93e5531b403aee115c">42ef012</a>: &#91;HttpFoundation&#93; throw when IpUtils::isPrivateIp() receives a non-canonical IP address</li>
<li><a href="https://github.com/symfony/symfony/commit/075a8979caa7d21007da9ef6bc990349507dc7d2">075a897</a>: &#91;Mailer&#93; reject control characters in SmtpTransport::setLocalDomain()</li>
<li><a href="https://github.com/symfony/symfony/commit/aa9d1c929256ed920438498b8ecb7e2980ad276e">aa9d1c9</a>: &#91;Cache&#93; fix "Class Relay\Relay not found" for RedisCluster/RedisArray with tcp_keepalive</li>
</ul>

<p><a href="https://github.com/symfony/symfony/commits/7.4">7.4 changelog</a>:</p>

<ul>
<li><a href="https://github.com/symfony/symfony/commit/2704a0a5159cbf6e393bbf18d29ac1589b90ee59">2704a0a</a>: &#91;Config&#93; escape "&#42;/" in generated array-shape comments</li>
<li><a href="https://github.com/symfony/symfony/commit/9cffd395c9271252a0a438ebb21e4ddd23ca12b1">9cffd39</a>: &#91;TwigBridge&#93; prevent implicit string casts for translatable message objects</li>
<li><a href="https://github.com/symfony/symfony/commit/a6fd02c2488ab8761b6eb6b3f62b4c3855182def">a6fd02c</a>: &#91;HttpClient&#93; do not stream empty PSR-18 request bodies</li>
<li><a href="https://github.com/symfony/symfony/commit/15a8740cbcd2f6eba10f3657337e4478e597b712">15a8740</a>: &#91;ObjectMapper&#93; fix per-property #[Map(source:)] being ignored when the target property name also exists on the source</li>
<li><a href="https://github.com/symfony/symfony/commit/e295c4dba1e417598583b7bb6e5bd1410fa1141f">e295c4d</a>: &#91;FrameworkBundle&#93; fix valkey cache adapters ignoring default_valkey_provider</li>
<li><a href="https://github.com/symfony/symfony/commit/fafd5f8021b6f715748d30ad9aeb63538c7eeff1">fafd5f8</a>: &#91;DependencyInjection&#93; add supported literal option not_found for imports.[&#42;].ignore_errors in services.schema and AppReference</li>
<li><a href="https://github.com/symfony/symfony/commit/650db20039a1621f982e99824e7a7cf8d1311bbc">650db20</a>: &#91;Validator&#93; allow null groups in ConstraintValidatorTestCase</li>
<li><a href="https://github.com/symfony/symfony/commit/b0d37c7088de36d5fc4f664ebfc1f6cf89eee51b">b0d37c7</a>: &#91;ObjectMapper&#93; fix explicit #[Map(target:)] being overwritten by a same-name source property</li>
<li><a href="https://github.com/symfony/symfony/commit/e71369412703d63c5ef230da705d46af8239fe1d">e713694</a>: &#91;FrameworkBundle&#93; make WebTestCase enable web mode by default</li>
<li><a href="https://github.com/symfony/symfony/commit/ceeb7c6e4b3b532f9df294bc92a6374ff2bd9dde">ceeb7c6</a>: &#91;Serializer&#93; skip XmlEncoderTest::testEncodeException() when using libxml ≥ 2.13</li>
<li><a href="https://github.com/symfony/symfony/commit/3b910ddf0750bc00f05c2d7feb068631e3be099a">3b910dd</a>: &#91;DependencyInjection&#93; fix lazy + factory service with a leading-backslash class on PHP 8.4</li>
<li><a href="https://github.com/symfony/symfony/commit/84438bb03e951a6023c9c3e6293eb9d2fabf8f36">84438bb</a>: &#91;Validator&#93; merge target's own constraints when using #[ExtendsValidationFor]</li>
<li><a href="https://github.com/symfony/symfony/commit/0f4dbefc0db9eddde21ac4c61c1b0013a14d229e">0f4dbef</a>: &#91;Filesystem&#93; handle PHP 8.6 removing function arguments in error messages</li>
<li><a href="https://github.com/symfony/symfony/commit/f6aa8f4bc6a16fa62970fe12b1d57fb1174630b9">f6aa8f4</a>: &#91;Messenger&#93; do not reject unknown types when no message requires signing</li>
<li><a href="https://github.com/symfony/symfony/commit/4b9ed826917d40b4ffcc1870f8d4b6ccfd99cba6">4b9ed82</a>: &#91;Config&#93; accept env placeholders for scalar alternatives in generated array-shapes</li>
<li><a href="https://github.com/symfony/symfony/commit/c7717abc024222001ece34706ac46963964295d1">c7717ab</a>: &#91;Serializer&#93; keep FILTER_BOOL working when ENABLE_TYPE_CONVERSION is enabled</li>
<li><a href="https://github.com/symfony/symfony/commit/e27c6fc0a6ed3bd4d5a1089abd97be56f3f4f9f6">e27c6fc</a>: &#91;ObjectMapper&#93; resolve a nested reverse-mapped property by the type of its destination</li>
</ul>

<p><a href="https://github.com/symfony/symfony/commits/8.1">8.1 changelog</a>:</p>

<ul>
<li><a href="https://github.com/symfony/symfony/commit/037121a20b254126252254b6813a8dec1d0a0ee3">037121a</a>:  do not expose the BundleAdapter class in the kernel.bundles parameter</li>
<li><a href="https://github.com/symfony/symfony/commit/84c13acd0b3628f51e99062de3e0f40e96bc8192">84c13ac</a>: &#91;Console&#93; strip terminal control characters from displayed file names</li>
<li><a href="https://github.com/symfony/symfony/commit/6b7e834b6716b653c1fd0588106bee4c67ae435e">6b7e834</a>: &#91;WebProfilerBundle&#93; fix crash when injecting the toolbar in a BinaryFileResponse</li>
<li><a href="https://github.com/symfony/symfony/commit/c8354bec494b479e52458de4c44bf6542fdce71f">c8354be</a>: &#91;Messenger&#93; avoid redispatching messages from completed batches</li>
<li><a href="https://github.com/symfony/symfony/commit/66e2ae28eed2dea620b09f88f08ad386ffd2b1bd">66e2ae2</a>: &#91;Form&#93; document the hidden placeholder of required ChoiceType fields</li>
<li><a href="https://github.com/symfony/symfony/commit/38bcc1cbbf4d457c6224257deabfc9c728d86a2c">38bcc1c</a>: &#91;ObjectMapper&#93; keep the class-level transform/if of the target's #[Map] in the reverse class-map factory</li>
<li><a href="https://github.com/symfony/symfony/commit/86d2696b97acf3721ccd04f6ea091d47b69d8745">86d2696</a>: &#91;PhpUnitBridge&#93; fix finding given config file name</li>
<li><a href="https://github.com/symfony/symfony/commit/5d66a969448320838dec0a8111ccc6821a5ba543">5d66a96</a>: &#91;HttpKernel&#93; keep converting scalars of a form payload that carries an uploaded file</li>
<li><a href="https://github.com/symfony/symfony/commit/3399279fd9d2016c0ea220ec03faf26571941248">3399279</a>: &#91;FrameworkBundle&#93; keep transport decorators when mock_response_factory is set</li>
</ul>

<p><a href="https://github.com/symfony/symfony/commits/8.2">8.2 changelog</a>:</p>

<ul>
<li><a href="https://github.com/symfony/symfony/commit/40f72e114136cb3471e5eed9e9e77b483103d3fc">40f72e1</a>: &#91;RemoteEvent&#93; allow repeating #[AsRemoteEventConsumer]</li>
</ul>

<h2>Newest issues and pull requests</h2>

<ul>
<li><a href="https://github.com/symfony/symfony/pull/64954">[Security] Add an OIDC Authorization Code Flow authenticator</a></li>
<li><a href="https://github.com/symfony/symfony/pull/64929">[AssetMapper] Add support for glob patterns in importmap.php</a></li>
<li><a href="https://github.com/symfony/symfony/issues/64941">[TuiComponent] Allow replacing the screen writer</a></li>
<li><a href="https://github.com/symfony/symfony/pull/64951">[Form] Add zero as false value for empty checkboxes</a></li>
<li><a href="https://github.com/symfony/symfony/pull/64966">[AssetMapper] Avoid re-expanding bare importmap entries</a></li>
</ul>

<h2>Symfony Jobs</h2>

<p>These are some of the most recent Symfony job offers:</p>

<ul>
<li><strong>Symfony Developer</strong> at ATH<br>
Contract / Freelance - €25 – €50 / hour<br>
Full remote<br>
<a href="https://symfony.com/jobs/4a82fc1">View details</a></li>
<li><strong>Lead Symfony Developer</strong> at DocuPet<br>
Full-time - CA$140,000 – CA$180,000 / year<br>
Full remote<br>
<a href="https://symfony.com/jobs/b6a97b9">View details</a></li>
</ul>

<p>You can <a href="https://symfony.com/jobs">publish a Symfony job offer for free</a> on symfony.com.</p>

<h2>They talked about us</h2>

<ul>
<li><a href="https://timobakx.dev/php/symfony/2026/07/20/an-mcp-server-in-symfony-with-oauth-on-both-sides.html">An MCP server in Symfony, with OAuth on both sides</a></li>
<li><a href="https://medium.com/@simeon.goranov/building-identity-link-why-i-designed-a-modular-openid-connect-identity-provider-in-symfony-be79696f5475">Building Identity Link: Why I Designed a Modular OpenID Connect Identity Provider in Symfony</a></li>
<li><a href="https://jolicode.com/blog/jolimediasyliusbundle-a-new-bridge-for-your-sylius-projects">JoliMediaSyliusBundle, a New Bridge for Your Sylius Projects</a></li>
<li><a href="https://dev.to/mollenthiel/building-a-production-grade-saas-foundation-in-symfony-in-2026-lessons-from-building-shipanvil-b8a">Building a production-grade SaaS foundation in Symfony in 2026 — lessons from building ShipAnvil</a></li>
<li><a href="https://medium.com/@tiwabrayan/9-symfony-bundles-i-use-in-almost-every-project-b03106c52ca7">9 Symfony Bundles I Use in Almost Every Project</a></li>
<li><a href="https://dev.to/javiereguiluz/new-in-easyadmin-53-a-modernized-sidebar-symfony-reprise-and-more-theming-groundwork-3p8i">New in EasyAdmin 5.3: A Modernized Sidebar, Symfony Reprise, and More Theming Groundwork</a></li>
<li><a href="https://jolicode.com/blog/jolimediasyliusbundle-un-nouveau-bridge-pour-vos-projets-sylius">JoliMediaSyliusBundle, un nouveau bridge pour vos projets Sylius</a></li>
<li><a href="https://habr.com/ru/articles/1061794/">Кэширование в Symfony: мы сломали авторизацию и исправили это с помощью Lock</a></li>
</ul>

<h2>Call to Action</h2>

<ul>
<li>Follow Symfony <a href="https://x.com/symfony">on X</a>, <a href="https://mastodon.social/@symfony">on Mastodon</a>, <a href="https://bsky.app/profile/symfony.com">on Bluesky</a> and <a href="https://www.threads.net/@symfony">on Threads</a> and share this article.</li>
<li><a href="https://feeds.feedburner.com/symfony/blog">Subscribe to the Symfony blog RSS</a> and never miss a Symfony story again.</li>
</ul>

                <hr style="margin-bottom: 5px" />
                <div style="font-size: 90%">
                    <a href="https://symfony.com/sponsor">Sponsor</a> the Symfony project.
                </div>
            ]]></content:encoded>
            <guid isPermaLink="false">https://symfony.com/blog/a-week-of-symfony-1021-july-20-26-2026?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</guid>
            <dc:creator><![CDATA[ Javier Eguiluz ]]></dc:creator>
            <pubDate>Sun, 26 Jul 2026 09:50:00 +0200</pubDate>
            <comments>https://symfony.com/blog/a-week-of-symfony-1021-july-20-26-2026?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed#comments-list</comments>
        </item>
                        <item>
            <title><![CDATA[SymfonyCon Warsaw 2026: Securing Your API: The OWASP API Top 10]]></title>
            <link>https://symfony.com/blog/symfonycon-warsaw-2026-securing-your-api-the-owasp-api-top-10?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</link>
            <description>
    


Mark your calendars! The global Symfony community is heading to Warsaw (Poland) on November 26-27, 2026, for SymfonyCon Warsaw 2026.



🎤 Speaker announcements

Joining us in Warsaw is Rob Allen, Software Consultant at Nineteen Feet Limited. He will…</description>
            <content:encoded><![CDATA[
                                <p><a class="block text-center" href="https://live.symfony.com/2026-warsaw-con/">
    <img src="https://symfony.com/uploads/assets/blog/NL-BLOG-Banner-38.png" alt="Nl Blog Banner 38">
</a></p>

<p>Mark your calendars! The global Symfony community is heading to Warsaw (Poland) on November 26-27, 2026, for <a href="https://live.symfony.com/2026-warsaw-con/">SymfonyCon Warsaw 2026</a>.</p>

<hr />

<h3>🎤 Speaker announcements</h3>

<p>Joining us in Warsaw is <strong><a href="https://connect.symfony.com/profile/akrabat">Rob Allen</a></strong>, Software Consultant at Nineteen Feet Limited. He will be delivering a talk titled <strong><a href="https://live.symfony.com/2026-warsaw-con/schedule/securing-your-api-the-owasp-api-top-10">"Securing Your API: The OWASP API Top 10"</a></strong>, in which he breaks down practical strategies and technical insights for building and scaling high-quality web applications:</p>

<p>"APIs are the foundation of our AI applications today and need to be secure. From broken authorisation and authentication to injection attacks, the OWASP API Security Top 10 identifies the most critical security issues facing APIs today. In this talk, we'll walk through the items on the list and explore these security flaws and look at how to prevent them. By the end of this session, you'll have a clear understanding of the most critical API security risks and be equipped with the knowledge to build more secure APIs."</p>

<p>Click here to see more <a href="https://live.symfony.com/2026-warsaw-con/schedule">talks</a> — the full schedule will be unveiled step-by-step over the coming weeks. Stay tuned!</p>

<h3>🏨 Looking for a place to stay?</h3>

<p>The official conference hotel offers special preferential rates and flexible conditions for our attendees. Make sure to use our <strong><a href="https://www.hilton.com/en/book/reservation/rooms/?ctyhocn=WAWHIHI&amp;arrivalDate=2026-11-23&amp;departureDate=2026-11-29&amp;groupCode=GSYMDP&amp;room1NumAdults=1">dedicated link</a></strong> to book your room and stay right where the action happens!</p>

<h3>🥳 Save the date for the Community Party!</h3>

<p>Because SymfonyCon isn't just about code, we are happy to confirm that our traditional Community Party will take place on the evening of <strong>Thursday, November 26</strong>. Get ready for a great night of networking, fun, and connecting with peers!</p>

<h3>💻 Hackday</h3>

<p>Ready to contribute? The Hackday on <strong>Saturday, November 28</strong> (free and open to all!) will take place at "The Brain Embassy - Czackiego" thanks to the support of Baksla.sh. Bring your laptop and your good mood!</p>

<h3>🎟️ Get your tickets</h3>

<p>Regular tickets are available now, but don't wait too long. <strong><a href="https://live.symfony.com/2026-warsaw-con/registration">secure your ticket today</a></strong></p>

<hr />

<h3>Join us online!</h3>

<p>💡Follow the "conference" blog posts to not miss anything!</p>

<p>Want the latest Symfony updates? Follow us and tune in from wherever you are 🌎</p>

<p><a class="block text-center" href="https://linktr.ee/symfony">
   <img src="https://symfony.com/uploads/assets/blog/Banner-BLOG.png" alt="Banner Blog">
</a></p>

                <hr style="margin-bottom: 5px" />
                <div style="font-size: 90%">
                    <a href="https://symfony.com/sponsor">Sponsor</a> the Symfony project.
                </div>
            ]]></content:encoded>
            <guid isPermaLink="false">https://symfony.com/blog/symfonycon-warsaw-2026-securing-your-api-the-owasp-api-top-10?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</guid>
            <dc:creator><![CDATA[ Eloïse Charrier ]]></dc:creator>
            <pubDate>Fri, 24 Jul 2026 11:00:00 +0200</pubDate>
            <comments>https://symfony.com/blog/symfonycon-warsaw-2026-securing-your-api-the-owasp-api-top-10?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed#comments-list</comments>
        </item>
                        <item>
            <title><![CDATA[SymfonyCon Warsaw 2026: 10 easy steps towards a more inclusive workplace]]></title>
            <link>https://symfony.com/blog/symfonycon-warsaw-2026-10-easy-steps-towards-a-more-inclusive-workplace?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</link>
            <description>
    


We are thrilled to announce that SymfonyCon Warsaw 2026 will take place on November 26 and 27, 2026, in Warsaw (Poland)! Join us for an extraordinary worldwide conference with 3 parallel tracks and community events.



🎤 Speaker announcements

We…</description>
            <content:encoded><![CDATA[
                                <p><a class="block text-center" href="https://live.symfony.com/2026-warsaw-con/">
    <img src="https://symfony.com/uploads/assets/blog/NL-BLOG-Banner-38.png" alt="Nl Blog Banner 38">
</a></p>

<p>We are thrilled to announce that <a href="">SymfonyCon Warsaw 2026</a> will take place on November 26 and 27, 2026, in Warsaw (Poland)! Join us for an extraordinary worldwide conference with 3 parallel tracks and community events.</p>

<hr />

<h3>🎤 Speaker announcements</h3>

<p>We are delighted to feature <strong><a href="https://connect.symfony.com/profile/skoop">Stefan Koopmanschap</a></strong>, Co-Owner, Ingewikkeld, on stage! As a long-standing community leader Stefan will talk about <strong><a href="https://live.symfony.com/2026-warsaw-con/schedule/10-easy-steps-towards-a-more-inclusive-workplace">"10 easy steps towards a more inclusive workplace"</a></strong>:</p>

<p>Are you aware of how your daily common language may exclude certain people or groups? Could it be that implicit bias and our own behaviour may impact our chances of improving diversity? Slightly changing your language and behaviour and being aware of potential pitfalls may make your workplace more inclusive and welcoming. In this talk we'll discuss 10 situations in which we can improve our daily (work) life to be more inclusive. It includes practical examples that can be directly applied to your team or company.</p>

<p>This is just the beginning — the full schedule will be unveiled step-by-step over the coming weeks. Stay tuned!</p>

<h3>🏨 Looking for a place to stay?</h3>

<p>The official conference hotel offers special preferential rates and flexible conditions for our attendees. Make sure to use our <strong><a href="https://www.hilton.com/en/book/reservation/rooms/?ctyhocn=WAWHIHI&amp;arrivalDate=2026-11-23&amp;departureDate=2026-11-29&amp;groupCode=GSYMDP&amp;room1NumAdults=1">dedicated link</a></strong> to book your room and stay right where the action happens!</p>

<h3>🥳 Save the date for the Community Party!</h3>

<p>Because SymfonyCon isn't just about code, we are happy to confirm that our traditional Community Party will take place on the evening of <strong>Thursday, November 26</strong>. Get ready for a great night of networking, fun, and connecting with peers!</p>

<h3>💻 Hackday</h3>

<p>Ready to contribute? The Hackday on <strong>Saturday, November 28</strong> (free and open to all!) will take place at "The Brain Embassy - Czackiego" thanks to the support of Baksla.sh. Bring your laptop and your good mood!</p>

<h3>🎟️ Get your tickets</h3>

<p>Regular tickets are available now, but don't wait too long. <strong><a href="https://live.symfony.com/2026-warsaw-con/registration">secure your ticket today</a></strong></p>

<hr />

<h3>Join us online!</h3>

<p>💡Follow the "conference" blog posts to not miss anything!</p>

<p>Want the latest Symfony updates? Follow us and tune in from wherever you are 🌎</p>

<p><a class="block text-center" href="https://linktr.ee/symfony">
   <img src="https://symfony.com/uploads/assets/blog/Banner-BLOG.png" alt="Banner Blog">
</a></p>

                <hr style="margin-bottom: 5px" />
                <div style="font-size: 90%">
                    <a href="https://symfony.com/sponsor">Sponsor</a> the Symfony project.
                </div>
            ]]></content:encoded>
            <guid isPermaLink="false">https://symfony.com/blog/symfonycon-warsaw-2026-10-easy-steps-towards-a-more-inclusive-workplace?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</guid>
            <dc:creator><![CDATA[ Eloïse Charrier ]]></dc:creator>
            <pubDate>Wed, 22 Jul 2026 15:30:00 +0200</pubDate>
            <comments>https://symfony.com/blog/symfonycon-warsaw-2026-10-easy-steps-towards-a-more-inclusive-workplace?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed#comments-list</comments>
        </item>
                        <item>
            <title><![CDATA[A Week of Symfony #1020 (July 13–19, 2026)]]></title>
            <link>https://symfony.com/blog/a-week-of-symfony-1020-july-13-19-2026?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</link>
            <description>This week, Symfony published Symfony UX 3.3, which adds support for Symfony Reprise and includes several improvements to the toolkit. In addition, SymfonyCasts announced a new course on upgrading to Symfony 8. Finally, the upcoming SymfonyCon Warsaw 2026…</description>
            <content:encoded><![CDATA[
                                <p>This week, Symfony published <a href="https://symfony.com/blog/symfony-ux-3-3-0-released">Symfony UX 3.3</a>, which adds support for <a href="https://github.com/symfony/reprise">Symfony Reprise</a> and includes several improvements to the toolkit. In addition, SymfonyCasts announced a new <a href="https://symfony.com/blog/new-symfonycasts-course-upgrading-to-symfony-8">course on upgrading to Symfony 8</a>. Finally, the upcoming <a href="https://live.symfony.com/2026-warsaw-con/">SymfonyCon Warsaw 2026</a> conference announced <a href="https://symfony.com/blog/symfonycon-warsaw-2026-the-first-4-speakers-are-live">its first four speakers</a>.</p>

<h2>Symfony development highlights</h2>

<p>This week, 13 pull requests were merged (9 in code and 4 in docs) and 11 issues were closed (10 in code and 1 in docs). Excluding merges, 14 authors made 233 additions and 88 deletions. See details for <a href="https://github.com/symfony/symfony/pulse">code</a> and <a href="https://github.com/symfony/symfony-docs/pulse">docs</a>.</p>

<p><a href="https://github.com/symfony/symfony/commits/6.4">6.4 changelog</a>:</p>

<ul>
<li><a href="https://github.com/symfony/symfony/commit/b416502e1beedc5c050a1dfecae8520268959c2f">b416502</a>: &#91;WebProfilerBundle&#93; fix Twig macros usage in Mailer panel</li>
<li><a href="https://github.com/symfony/symfony/commit/d9b1d6d4be4f53aaf98228c3267bdaa3bcd7a436">d9b1d6d</a>: &#91;Dotenv&#93; allow multiple underscores at start</li>
<li><a href="https://github.com/symfony/symfony/commit/abf190f24ecc3cf8c3d8b81cd6fe65b638e191fc">abf190f</a>: &#91;Cache&#93; remove obsolete return instruction from classes constructors</li>
<li><a href="https://github.com/symfony/symfony/commit/879ac15b954ef7edca054b727f0cdccdc726152f">879ac15</a>: &#91;HttpClient&#93; replace the native "dechunk" stream filter with a pure PHP implementation</li>
<li><a href="https://github.com/symfony/symfony/commit/1dbbec90e7164a531ebe9429a60b60dcfb6fc1d0">1dbbec9</a>: &#91;TwigBridge&#93; ensure that a label with value "0" is rendered</li>
</ul>

<h2>Newest issues and pull requests</h2>

<ul>
<li><a href="https://github.com/symfony/symfony/pull/64892">[Messenger] Add AMPHP SQL messenger transport</a></li>
<li><a href="https://github.com/symfony/symfony/pull/64885">[Console] Add input and output to handleSignal()</a></li>
<li><a href="https://github.com/symfony/symfony/issues/64894">SSR Streaming Support</a></li>
<li><a href="https://github.com/symfony/symfony/pull/64883">[Notifier] Add the MetaWhatsApp bridge</a></li>
</ul>

<h2>Symfony Jobs</h2>

<p>These are some of the most recent Symfony job offers:</p>

<ul>
<li><strong>Symfony Developer</strong> at ATH<br>
Contract / Freelance - €25 – €50 / hour<br>
Full remote<br>
<a href="https://symfony.com/jobs/4a82fc1">View details</a></li>
<li><strong>Lead Symfony Developer</strong> at DocuPet<br>
Full-time - CA$140,000 – CA$180,000 / year<br>
Full remote<br>
<a href="https://symfony.com/jobs/b6a97b9">View details</a></li>
<li><strong>DevOps for a Symfony project</strong> at Cloudpepper<br>
Full-time - $150,000 – $180,000 / year<br>
Full remote<br>
<a href="https://symfony.com/jobs/a9262d7">View details</a></li>
</ul>

<p>You can <a href="https://symfony.com/jobs">publish a Symfony job offer for free</a> on symfony.com.</p>

<h2>SymfonyCasts Updates</h2>

<p><a href="https://symfonycasts.com/">SymfonyCasts</a> is the official way to learn Symfony.
Select a track for a guided path through 100+ video tutorial courses about
Symfony, PHP and JavaScript.</p>

<p>This week, SymfonyCasts published the following updates:</p>

<ul>
<li>(New article) <a href="https://symfonycasts.com/blog/brontie-deep-dive">How We Built Brontie your AI Assistant</a></li>
<li>(Video) <a href="https://symfonycasts.com/screencast/symfony8-security/remember-me">Symfony Security: The Basics: Enabling "Remember Me" Feature</a></li>
</ul>

<h2>They talked about us</h2>

<ul>
<li><a href="https://dev.to/rosen_hristov/building-a-chat-plugin-for-shopware-6-message-queues-sales-channels-and-service-decoration-onm">Building a Chat Plugin for Shopware 6: Message Queues, Sales Channels, and Service Decoration</a></li>
<li><a href="https://medium.com/@youssefbassim/symfony-flex-recipes-how-a-composer-plugin-automates-project-configuration-22e8a4198b5b">Symfony Flex &amp; Recipes: How a Composer Plugin Automates Project Configuration</a></li>
<li><a href="https://jolicode.com/blog/customizing-sylius-grids-improved-dx-with-grid-mutators">Customizing Sylius Grids – Improved DX with Grid Mutators</a></li>
<li><a href="https://dev.to/javiereguiluz/new-in-easyadmin-52-twig-components-polished-ui-and-theming-groundwork-23on">New in EasyAdmin 5.2: Twig Components, Polished UI, and Theming Groundwork</a></li>
<li><a href="https://jolicode.com/blog/customiser-les-grilles-sylius-dx-amelioree-avec-les-grid-mutators">Customiser les grilles Sylius – DX améliorée avec les Grid mutators</a></li>
<li><a href="https://habr.com/ru/articles/1059392/">Как связать symfony 8 и Angular 22?</a></li>
<li><a href="https://habr.com/ru/articles/1058064/">LLM говнокодит не хуже людей. Только быстрее</a></li>
</ul>

<h2>Call to Action</h2>

<ul>
<li>Follow Symfony <a href="https://x.com/symfony">on X</a>, <a href="https://mastodon.social/@symfony">on Mastodon</a>, <a href="https://bsky.app/profile/symfony.com">on Bluesky</a> and <a href="https://www.threads.net/@symfony">on Threads</a> and share this article.</li>
<li><a href="https://feeds.feedburner.com/symfony/blog">Subscribe to the Symfony blog RSS</a> and never miss a Symfony story again.</li>
</ul>

                <hr style="margin-bottom: 5px" />
                <div style="font-size: 90%">
                    <a href="https://symfony.com/sponsor">Sponsor</a> the Symfony project.
                </div>
            ]]></content:encoded>
            <guid isPermaLink="false">https://symfony.com/blog/a-week-of-symfony-1020-july-13-19-2026?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</guid>
            <dc:creator><![CDATA[ Javier Eguiluz ]]></dc:creator>
            <pubDate>Sun, 19 Jul 2026 09:23:00 +0200</pubDate>
            <comments>https://symfony.com/blog/a-week-of-symfony-1020-july-13-19-2026?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed#comments-list</comments>
        </item>
                        <item>
            <title><![CDATA[SymfonyCon Warsaw 2026: The first 4 speakers are live! 🔥]]></title>
            <link>https://symfony.com/blog/symfonycon-warsaw-2026-the-first-4-speakers-are-live?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</link>
            <description>
    


SymfonyCon Warsaw 2026, our next annual international Symfony conference, will take place on:


November 24 &amp;amp; 25 with two days of hands-on workshops to learn, practice, and enhance your skills in small groups.
November 26 &amp;amp; 27 with three English-speaking…</description>
            <content:encoded><![CDATA[
                                <p><a class="block text-center" href="https://live.symfony.com/2026-warsaw-con/">
    <img src="https://symfony.com/uploads/assets/blog/NL-BLOG-Banner-38.png" alt="Nl Blog Banner 38">
</a></p>

<p>SymfonyCon Warsaw 2026, our next annual international Symfony conference, will take place on:</p>

<ul>
<li>November 24 &amp; 25 with two days of hands-on workshops to learn, practice, and enhance your skills in small groups.</li>
<li>November 26 &amp; 27 with three English-speaking tracks, an Unconference track, and a lively community evening.</li>
</ul>

<hr />

<h3>🎤 Speaker announcements</h3>

<p>The Call for Papers is officially closed, and wow... we are blown away by your submissions! Thank you to everyone who submitted a talk or a workshop. We are thrilled to kick off the countdown by <strong>revealing our first 4 speakers</strong> on our page! <strong><a href="https://live.symfony.com/2026-warsaw-con/">Go check them out</a>! 👀</strong></p>

<p>This is just the beginning — the full schedule will be unveiled step-by-step over the coming weeks. Stay tuned!</p>

<p>Here is a quick reminder of what’s waiting for you in Warsaw:</p>

<p>✔️ 3 parallel tracks featuring around 50 international speakers covering the latest in Symfony &amp; PHP.</p>

<p>✔️ The Unconference track: As always, this is your stage! Claim your slot by emailing us at <code>events@symfony.com</code> and set the stage for an unforgettable experience. Each unconference talk lasts 20 minutes.</p>

<h3>🏨 Looking for a place to stay?</h3>

<p>The official conference hotel offers special preferential rates and flexible conditions for our attendees. Make sure to use our <strong><a href="https://www.hilton.com/en/book/reservation/rooms/?ctyhocn=WAWHIHI&amp;arrivalDate=2026-11-23&amp;departureDate=2026-11-29&amp;groupCode=GSYMDP&amp;room1NumAdults=1">dedicated link</a></strong> to book your room and stay right where the action happens!</p>

<h3>🥳 Save the date for the Community Party!</h3>

<p>Because SymfonyCon isn't just about code, we are happy to confirm that our traditional Community Party will take place on the evening of <strong>Thursday, November 26</strong>. Get ready for a great night of networking, fun, and connecting with peers!</p>

<h3>💻 Hackday</h3>

<p>Ready to contribute? The Hackday on <strong>Saturday, November 28</strong> (free and open to all!) will take place at "The Brain Embassy - Czackiego" thanks to the support of Baksla.sh. Bring your laptop and your good mood!</p>

<h3>🎟️ Get your tickets</h3>

<p>Regular tickets are still available, but not for long. <strong><a href="https://live.symfony.com/2026-warsaw-con/registration/">Secure your spot now and join the ultimate Symfony week!</a></strong></p>

<hr />

<h3>Join us online!</h3>

<p>💡Follow the "conference" blog posts to not miss anything!</p>

<p>Want the latest Symfony updates? Follow us and tune in from wherever you are 🌎</p>

<p><a class="block text-center" href="https://linktr.ee/symfony">
   <img src="https://symfony.com/uploads/assets/blog/Banner-BLOG.png" alt="Banner Blog">
</a></p>

                <hr style="margin-bottom: 5px" />
                <div style="font-size: 90%">
                    <a href="https://symfony.com/sponsor">Sponsor</a> the Symfony project.
                </div>
            ]]></content:encoded>
            <guid isPermaLink="false">https://symfony.com/blog/symfonycon-warsaw-2026-the-first-4-speakers-are-live?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</guid>
            <dc:creator><![CDATA[ Eloïse Charrier ]]></dc:creator>
            <pubDate>Wed, 15 Jul 2026 10:00:00 +0200</pubDate>
            <comments>https://symfony.com/blog/symfonycon-warsaw-2026-the-first-4-speakers-are-live?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed#comments-list</comments>
        </item>
                        <item>
            <title><![CDATA[Symfony UX 3.3.0 released]]></title>
            <link>https://symfony.com/blog/symfony-ux-3-3-0-released?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</link>
            <description>Symfony UX 3.3.0 is out. This release brings first-class support for Symfony
Reprise in StimulusBundle, two new Shadcn components for the Toolkit (Sonner
and Combobox), and a batch of quality-of-life improvements to the ux:install
command and to how component…</description>
            <content:encoded><![CDATA[
                                <p>Symfony UX 3.3.0 is out. This release brings first-class support for Symfony
Reprise in StimulusBundle, two new Shadcn components for the Toolkit (Sonner
and Combobox), and a batch of quality-of-life improvements to the <code translate="no" class="notranslate">ux:install</code>
command and to how component documentation is parsed and linted.</p>
<div class="section">
<h2 id="stimulusbundle-symfony-reprise-support"><a class="headerlink" href="#stimulusbundle-symfony-reprise-support" title="Permalink to this headline">StimulusBundle: Symfony Reprise support</a></h2>
<div class="blog-post-contributor-info">
    <div class="blog-post-contributor-avatar">
                    <a target="_blank" href="https://github.com/Kocal">
                <img src="https://github.com/Kocal.png" alt="Hugo Alliaume">
            </a>
            </div>
    <div class="blog-post-contributor-contents">
        <span>Contributed by</span>
                    <a target="_blank" class="blog-post-contributor-name" href="https://github.com/Kocal">Hugo Alliaume</a>
                                        <span class="blog-post-contributor-prs"> in
                                    <a target="_blank" href="https://github.com/symfony/ux/pull/3705">#3705</a>
                                                </span>
            </div>
</div>
<p><a href="https://github.com/symfony/reprise" class="reference external" rel="external noopener noreferrer" target="_blank">Symfony Reprise</a> is the new Vite and
Rsbuild integration for Symfony assets. It is brand new and still very much
experimental (its first commit landed in September 2025 and the repository only
just went public), so expect things to move fast and APIs to change. That said,
StimulusBundle already supports it as a first-class asset system, alongside
AssetMapper and Webpack Encore. Point the Reprise plugin at your
<code translate="no" class="notranslate">controllers.json</code> and start the app from <code translate="no" class="notranslate">@symfony/reprise/stimulus</code>:</p>
<div translate="no" data-loc="4" class="notranslate codeblock codeblock-length-sm codeblock-javascript">
        <div class="codeblock-scroll">
        
        <pre class="codeblock-code"><code><span class="hljs-comment">// vite.config.js (or rsbuild.config.js)</span>
Symfony({
    <span class="hljs-attr">stimulus</span>: <span class="hljs-string">'./assets/controllers.json'</span>,
})</code></pre>
    </div>
</div>
<p>As part of this change, <code translate="no" class="notranslate">@symfony/stimulus-bridge</code> is no longer a default npm
peer dependency: it is specific to Webpack Encore, and Reprise projects would
pull it in for nothing. Only <code translate="no" class="notranslate">@hotwired/stimulus</code> remains; Encore users now
install the bridge manually.</p>
</div>
<div class="section">
<h2 id="stimulusbundle-preserved-stimulusfetch-039-lazy-039-comments"><a class="headerlink" href="#stimulusbundle-preserved-stimulusfetch-039-lazy-039-comments" title="Permalink to this headline">StimulusBundle: preserved <code translate="no" class="notranslate">stimulusFetch: 'lazy'</code> comments</a></h2>
<div class="blog-post-contributor-info">
    <div class="blog-post-contributor-avatar">
                    <a target="_blank" href="https://github.com/IndraGunawan">
                <img src="https://github.com/IndraGunawan.png" alt="Indra Gunawan">
            </a>
            </div>
    <div class="blog-post-contributor-contents">
        <span>Contributed by</span>
                    <a target="_blank" class="blog-post-contributor-name" href="https://github.com/IndraGunawan">Indra Gunawan</a>
                                        <span class="blog-post-contributor-prs"> in
                                    <a target="_blank" href="https://github.com/symfony/ux/pull/3702">#3702</a>
                                                </span>
            </div>
</div>
<p>The <code translate="no" class="notranslate">stimulusFetch: 'lazy'</code> directive that marks a controller as lazy-loaded
is now detected even when it uses a preserved comment marker
(<code translate="no" class="notranslate">/*! stimulusFetch: 'lazy' */</code>). Tools like <code translate="no" class="notranslate">tsc</code> and <code translate="no" class="notranslate">esbuild</code> emit that
form to keep important comments from being stripped during compilation, so
lazy controllers written in TypeScript now behave as expected.</p>
</div>
<div class="section">
<h2 id="toolkit-two-new-shadcn-components"><a class="headerlink" href="#toolkit-two-new-shadcn-components" title="Permalink to this headline">Toolkit: two new Shadcn components</a></h2>
<div class="blog-post-contributor-info">
    <div class="blog-post-contributor-avatar">
                    <a target="_blank" href="https://github.com/makraz">
                <img src="https://github.com/makraz.png" alt="Hamza Makraz">
            </a>
            </div>
    <div class="blog-post-contributor-contents">
        <span>Contributed by</span>
                    <a target="_blank" class="blog-post-contributor-name" href="https://github.com/makraz">Hamza Makraz</a>
                                        <span class="blog-post-contributor-prs"> in
                                    <a target="_blank" href="https://github.com/symfony/ux/pull/3477">#3477</a>
                     and                                     <a target="_blank" href="https://github.com/symfony/ux/pull/3482">#3482</a>
                                                </span>
            </div>
</div>
<p>The Shadcn kit gains two components:</p>
<ul>
    <li><strong>Sonner</strong> is an opinionated toast notification component for showing
transient feedback.</li>
<li><strong>Combobox</strong> combines an input with a searchable, filterable list of options
for autocomplete-style selection. Install either one with <code translate="no" class="notranslate">ux:install</code>.</li>
</ul>
<div translate="no" data-loc="2" class="notranslate codeblock codeblock-length-sm codeblock-terminal codeblock-bash">
        <div class="codeblock-scroll">
        
        <pre class="codeblock-code"><code><span class="hljs-prompt">$ </span>php bin/console ux:install sonner --kit=shadcn
<span class="hljs-prompt">$ </span>php bin/console ux:install combobox --kit=shadcn</code></pre>
    </div>
</div>
</div>
<div class="section">
<h2 id="toolkit-friendlier-ux-install"><a class="headerlink" href="#toolkit-friendlier-ux-install" title="Permalink to this headline">Toolkit: friendlier <code translate="no" class="notranslate">ux:install</code></a></h2>
<div class="blog-post-contributor-info">
    <div class="blog-post-contributor-avatar">
                    <a target="_blank" href="https://github.com/Kocal">
                <img src="https://github.com/Kocal.png" alt="Hugo Alliaume">
            </a>
            </div>
    <div class="blog-post-contributor-contents">
        <span>Contributed by</span>
                    <a target="_blank" class="blog-post-contributor-name" href="https://github.com/Kocal">Hugo Alliaume</a>
                                        <span class="blog-post-contributor-prs"> in
                                    <a target="_blank" href="https://github.com/symfony/ux/pull/3700">#3700</a>
                                                </span>
            </div>
</div>
<p>Recipe names are stored in lower-case, so <code translate="no" class="notranslate">ux:install Alert</code> used to fail with
a raw "does not exist in any official kits" error. Recipe lookup is now
case-insensitive: <code translate="no" class="notranslate">Alert</code> resolves to the <code translate="no" class="notranslate">alert</code> recipe, both without
<code translate="no" class="notranslate">--kit</code> (the "which kit?" prompt) and with an explicit <code translate="no" class="notranslate">--kit=shadcn</code>. When
a recipe genuinely does not exist in any official kit, the error now suggests the
closest alternatives found across all kits instead of leaving you guessing.</p>
</div>
<div class="section">
<h2 id="toolkit-better-prop-and-block-documentation"><a class="headerlink" href="#toolkit-better-prop-and-block-documentation" title="Permalink to this headline">Toolkit: better <code translate="no" class="notranslate">@prop</code> and <code translate="no" class="notranslate">@block</code> documentation</a></h2>
<div class="blog-post-contributor-info">
    <div class="blog-post-contributor-avatar">
                    <a target="_blank" href="https://github.com/Kocal">
                <img src="https://github.com/Kocal.png" alt="Hugo Alliaume">
            </a>
            </div>
    <div class="blog-post-contributor-contents">
        <span>Contributed by</span>
                    <a target="_blank" class="blog-post-contributor-name" href="https://github.com/Kocal">Hugo Alliaume</a>
                                        <span class="blog-post-contributor-prs"> in
                                    <a target="_blank" href="https://github.com/symfony/ux/pull/3694">#3694</a>
                                                </span>
            </div>
</div>
<p>Component documentation comments now have a single, well-defined format. A new
<code translate="no" class="notranslate">ComponentDocParser</code> reads the <code translate="no" class="notranslate">{# @prop #}</code> and <code translate="no" class="notranslate">{# @block #}</code> comments
at the top of a Twig component, and a companion <code translate="no" class="notranslate">ComponentDocChecker</code> lints them
for consistency (capitalized descriptions ending with a period, valid types, and
no more hand-written "Defaults to ..." strings):</p>
<div translate="no" data-loc="4" class="notranslate codeblock codeblock-length-sm codeblock-twig">
        <div class="codeblock-scroll">
        
        <pre class="codeblock-code"><code><span class="hljs-comment">{# @prop defaultValue string Define the open Tabs at initial rendering. #}</span><span class="xml">
</span><span class="hljs-comment">{# @prop orientation 'horizontal'|'vertical' Define the visual orientation. #}</span><span class="xml">
</span><span class="hljs-comment">{# @block content The default block. #}</span><span class="xml">
</span><span class="hljs-template-tag">{%- <span class="hljs-name">props</span> defaultValue = <span class="hljs-string">''</span>, orientation = <span class="hljs-string">'horizontal'</span> -%}</span></code></pre>
    </div>
</div>
<p>Default values are now read directly from the <code translate="no" class="notranslate">{% props %}</code> tag, so they are
no longer duplicated in the description. The same parser can power both the UX
website and the Toolkit linter, and it gives LLMs a clear structure to fix
documentation issues against.</p>
</div>
<div class="section">
<h2 id="shadcn-tooltip-fixes"><a class="headerlink" href="#shadcn-tooltip-fixes" title="Permalink to this headline">Shadcn tooltip fixes</a></h2>
<div class="blog-post-contributor-info">
    <div class="blog-post-contributor-avatar">
                    <a target="_blank" href="https://github.com/Kocal">
                <img src="https://github.com/Kocal.png" alt="Hugo Alliaume">
            </a>
            </div>
    <div class="blog-post-contributor-contents">
        <span>Contributed by</span>
                    <a target="_blank" class="blog-post-contributor-name" href="https://github.com/Kocal">Hugo Alliaume</a>
                                        <span class="blog-post-contributor-prs"> in
                                    <a target="_blank" href="https://github.com/symfony/ux/pull/3696">#3696</a>
                                                </span>
            </div>
</div>
<p>The Shadcn <code translate="no" class="notranslate">tooltip</code> now dismisses itself on scroll and resize, and no longer
intercepts pointer events while hidden, so it stops swallowing clicks on the
elements underneath it.</p>
</div>
<div class="section">
<h2 id="notable-bug-fixes"><a class="headerlink" href="#notable-bug-fixes" title="Permalink to this headline">Notable bug fixes</a></h2>
<p>LiveComponent no longer returns a 500 error on malformed hydration payloads,
handles nullable collection properties correctly, and stops the data-loading
scanner from ignoring <code translate="no" class="notranslate">data-live-ignore</code> subtrees. Autocomplete fixes a
<code translate="no" class="notranslate">LIKE ESCAPE</code> clause that broke search on PostgreSQL.</p>
</div>
<div class="section">
<h2 id="full-changelog"><a class="headerlink" href="#full-changelog" title="Permalink to this headline">Full Changelog</a></h2>
<ul>
    <li><a href="https://github.com/symfony/ux/pull/3705" class="reference external" rel="external noopener noreferrer" target="_blank">#3705</a> [StimulusBundle] Add support for Symfony Reprise (@Kocal)</li>
<li><a href="https://github.com/symfony/ux/pull/3702" class="reference external" rel="external noopener noreferrer" target="_blank">#3702</a> [StimulusBundle] Support preserved <code translate="no" class="notranslate">/*! stimulusFetch: 'lazy' */</code> syntax (@IndraGunawan)</li>
<li><a href="https://github.com/symfony/ux/pull/3703" class="reference external" rel="external noopener noreferrer" target="_blank">#3703</a> [StimulusBundle] Sort custom controllers to keep the generated loader deterministic (@Amoifr)</li>
<li><a href="https://github.com/symfony/ux/pull/3676" class="reference external" rel="external noopener noreferrer" target="_blank">#3676</a> [LiveComponent] Avoid 500 errors on malformed hydration payloads (@Amoifr)</li>
<li><a href="https://github.com/symfony/ux/pull/3688" class="reference external" rel="external noopener noreferrer" target="_blank">#3688</a> [LiveComponent] Fix data-loading scanner ignoring data-live-ignore subtrees (@Amoifr)</li>
<li><a href="https://github.com/symfony/ux/pull/3690" class="reference external" rel="external noopener noreferrer" target="_blank">#3690</a> [LiveComponent] Fix support for nullable collection properties on component (@rogierknoester)</li>
<li><a href="https://github.com/symfony/ux/pull/3700" class="reference external" rel="external noopener noreferrer" target="_blank">#3700</a> [Toolkit] Resolve <code translate="no" class="notranslate">ux:install</code> recipe name case-insensitively and suggest alternatives (@Kocal)</li>
<li><a href="https://github.com/symfony/ux/pull/3696" class="reference external" rel="external noopener noreferrer" target="_blank">#3696</a> [Toolkit][Shadcn] Dismiss the <code translate="no" class="notranslate">tooltip</code> on scroll and resize, and stop it from intercepting pointer events while hidden (@Kocal)</li>
<li><a href="https://github.com/symfony/ux/pull/3694" class="reference external" rel="external noopener noreferrer" target="_blank">#3694</a> [Toolkit] Refactor (again) but improve <code translate="no" class="notranslate">@prop</code> and <code translate="no" class="notranslate">@block</code> comments format (@Kocal)</li>
<li><a href="https://github.com/symfony/ux/pull/3685" class="reference external" rel="external noopener noreferrer" target="_blank">#3685</a> [Autocomplete] Fix LIKE ESCAPE clause breaking search on PostgreSQL (@Amoifr)</li>
<li><a href="https://github.com/symfony/ux/pull/3477" class="reference external" rel="external noopener noreferrer" target="_blank">#3477</a> [Shadcn] Add Sonner (@makraz)</li>
<li><a href="https://github.com/symfony/ux/pull/3693" class="reference external" rel="external noopener noreferrer" target="_blank">#3693</a> [Toolkit] Make component rendering snapshots independent from the libxml version (@Kocal)</li>
<li><a href="https://github.com/symfony/ux/pull/3482" class="reference external" rel="external noopener noreferrer" target="_blank">#3482</a> [Toolkit][Shadcn] Add Combobox (@makraz)</li>
</ul>
</div>
                <hr style="margin-bottom: 5px" />
                <div style="font-size: 90%">
                    <a href="https://symfony.com/sponsor">Sponsor</a> the Symfony project.
                </div>
            ]]></content:encoded>
            <guid isPermaLink="false">https://symfony.com/blog/symfony-ux-3-3-0-released?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</guid>
            <dc:creator><![CDATA[ Fabien Potencier ]]></dc:creator>
            <pubDate>Wed, 15 Jul 2026 08:17:00 +0200</pubDate>
            <comments>https://symfony.com/blog/symfony-ux-3-3-0-released?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed#comments-list</comments>
        </item>
                        <item>
            <title><![CDATA[New SymfonyCasts Course: Upgrading to Symfony 8]]></title>
            <link>https://symfony.com/blog/new-symfonycasts-course-upgrading-to-symfony-8?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</link>
            <description>One of Symfony&#039;s greatest strengths is its upgrade process. Thanks to the 
backward compatibility promise and deprecation system, major upgrades 
are smooth, predictable, and, dare I say it, enjoyable!

Our newest tutorial is now available - and completely…</description>
            <content:encoded><![CDATA[
                                <p>One of Symfony's greatest strengths is its upgrade process. Thanks to the 
backward compatibility promise and deprecation system, major upgrades 
are smooth, predictable, and, dare I say it, enjoyable!</p>

<p>Our newest tutorial is now available - and <strong>completely free</strong>:</p>

<p>👉 <strong><a href="https://symfonycasts.com/screencast/symfony8-upgrade">Upgrading to Symfony 8</a></strong></p>

<p>In this course, we take a real Symfony application and guide it through
the entire upgrade process. You'll learn how to identify and fix
deprecations, modernize dependencies, prepare for PHP 8.4, and upgrade to
Symfony 8 with confidence.</p>

<p>By the end, you'll have a practical, repeatable process that you can apply
to your own applications - making future upgrades smaller, safer, and much
less stressful.</p>

<h2>What This Course Covers</h2>

<p>This course follows a real-world Symfony application through the upgrade
process, some of the things you'll learn include:</p>

<ul>
<li>Understanding Symfony's backward compatibility promise</li>
<li>Finding and fixing deprecations</li>
<li>Using automated tests to upgrade safely</li>
<li>Updating Composer dependencies</li>
<li>Preparing your application for Symfony 8 and PHP 8.4</li>
<li>Modernizing Doctrine integrations</li>
<li>Cleaning up deprecated configuration and APIs</li>
<li>Verifying third-party bundle compatibility</li>
</ul>

<p>As a <a href="https://symfonycasts.com/screencast/symfony8-upgrade/composer-audit"><strong>bonus chapter</strong></a>,
we also cover something that's become increasingly
important for every PHP developer: dependency security.</p>

<p>Recent advances in AI-assisted security auditing have dramatically
increased the number of vulnerabilities being discovered across the entire
software ecosystem. That's good news - issues are being found and fixed
faster than ever - but it also means it's more important than ever to stay
on top of dependency updates.</p>

<p>In the bonus chapter, you'll learn how to use Composer's built-in
<code>composer audit</code> command to identify known vulnerabilities, understand
security advisories, and keep your applications secure as part of your
regular maintenance workflow.</p>

<h2>Who Is This For?</h2>

<p>This course is perfect if you:</p>

<ul>
<li>Maintain Symfony applications that need to stay current</li>
<li>Want a repeatable process for framework upgrades</li>
<li>Feel intimidated by major version upgrades</li>
<li>Want to better understand Symfony's upgrade philosophy</li>
<li>Care about keeping your dependencies secure</li>
</ul>

<p>Whether you're upgrading your first application or your fiftieth, this
course will help make the process predictable and approachable.</p>

<h2>What's Next on SymfonyCasts?</h2>

<p>If this course leaves you wanting more, we're already releasing the next
chapter in your Symfony journey.</p>

<ul>
<li><strong><a href="https://symfonycasts.com/screencast/symfony8-security">Symfony Security: The Basics</a></strong> -
learn the fundamentals of Symfony's security system, including
authentication, login forms, user providers, password hashing, CSRF
protection, and more.</li>
</ul>

<p>And coming soon:</p>

<ul>
<li><strong><a href="https://symfonycasts.com/screencast/e2e-testing">E2E Testing</a></strong> -
a practical guide to browser testing, including authentication,
JavaScript interactions, debugging tools, and complete user flows from
end to end.</li>
</ul>

<p>In the meantime, check out a couple of our recent blog posts:</p>

<ul>
<li><p><strong><a href="https://symfonycasts.com/blog/honest-entities">Keeping Doctrine Entities Honest</a></strong> -
Should your Doctrine entities always represent valid domain objects?
We explore a different approach that separates persistence from user
input using Symfony's ObjectMapper.</p></li>
<li><p><strong><a href="https://symfonycasts.com/blog/brontie-your-ai-companion">Meet Brontie, Your AI Companion</a></strong> -
Meet our new AI-powered course assistant that can answer questions about
the current chapter, explain concepts, and help you learn faster without
leaving the course.</p></li>
</ul>

<p>Happy upgrading!</p>

                <hr style="margin-bottom: 5px" />
                <div style="font-size: 90%">
                    <a href="https://symfony.com/sponsor">Sponsor</a> the Symfony project.
                </div>
            ]]></content:encoded>
            <guid isPermaLink="false">https://symfony.com/blog/new-symfonycasts-course-upgrading-to-symfony-8?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</guid>
            <dc:creator><![CDATA[ Kevin Bond ]]></dc:creator>
            <pubDate>Mon, 13 Jul 2026 21:40:00 +0200</pubDate>
            <comments>https://symfony.com/blog/new-symfonycasts-course-upgrading-to-symfony-8?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed#comments-list</comments>
        </item>
                        <item>
            <title><![CDATA[A Week of Symfony #1019 (July 6–12, 2026)]]></title>
            <link>https://symfony.com/blog/a-week-of-symfony-1019-july-6-12-2026?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</link>
            <description>This week, development activity focused on various improvements, such as enhancing the DX of AssetMapper in debug mode and allowing developers to disable redirects on logout. There were also proposals to improve Messenger with a new command and to add pipe…</description>
            <content:encoded><![CDATA[
                                <p>This week, development activity focused on various improvements, such as <a href="https://github.com/symfony/symfony/commit/d56fec85da23b3e8b893c505c427048549e26b39">enhancing the DX of AssetMapper</a> in debug mode and allowing developers to <a href="https://github.com/symfony/symfony/commit/71d1fa7cbb93c31465b7645fd304de71ca6f2e8c">disable redirects on logout</a>. There were also proposals to <a href="https://github.com/symfony/symfony/pull/64829">improve Messenger with a new command</a> and to add <a href="https://github.com/symfony/symfony/pull/64844">pipe operator compatibility</a> to the Validator component.</p>

<h2>Symfony development highlights</h2>

<p>This week, 48 pull requests were merged (31 in code and 17 in docs) and 25 issues were closed (12 in code and 13 in docs). Excluding merges, 22 authors made 5,573 additions and 2,979 deletions. See details for <a href="https://github.com/symfony/symfony/pulse">code</a> and <a href="https://github.com/symfony/symfony-docs/pulse">docs</a>.</p>

<p><a href="https://github.com/symfony/symfony/commits/6.4">6.4 changelog</a>:</p>

<ul>
<li><a href="https://github.com/symfony/symfony/commit/8bce4feb83a710eea4df0c5bb3282297417678ac">8bce4fe</a>: &#91;Cache&#93; remove always-true method_exists() check in FilesystemCommonTrait::__destruct()</li>
<li><a href="https://github.com/symfony/symfony/commit/2aa4d7dc48489bc8ade6d83534229dde0fef0413">2aa4d7d</a>: &#91;Scheduler&#93; fix jitter shouldn't make scheduler miss runs</li>
<li><a href="https://github.com/symfony/symfony/commit/cf7a2d1f31f9932e55644713c37a15ff89653358">cf7a2d1</a>: &#91;Serializer&#93; fix support check for nested array items</li>
<li><a href="https://github.com/symfony/symfony/commit/fd30af703bc126ab8f15a2800819022111eb826a">fd30af7</a>: &#91;Console&#93; fix SymfonyStyle questions when using output sections</li>
<li><a href="https://github.com/symfony/symfony/commit/62cd8e92649217fd8f50b8cc93dd8a7f8a996af9">62cd8e9</a>: &#91;Console&#93; fall back to "stty sane" when restoring the captured terminal state fails</li>
</ul>

<p><a href="https://github.com/symfony/symfony/commits/8.1">8.1 changelog</a>:</p>

<ul>
<li><a href="https://github.com/symfony/symfony/commit/7c9773ce62bab38744fef715ccd985c577d9875f">7c9773c</a>: &#91;Notifier&#93; add handling for the Prelude bridge to UnsupportedSchemeException</li>
<li><a href="https://github.com/symfony/symfony/commit/fa6e7fb43fc7a93741dbb5e8b223c485700206cf">fa6e7fb</a>: &#91;Tui&#93; repaint the full screen on resize so multiplexer reattaches are not blank</li>
</ul>

<p><a href="https://github.com/symfony/symfony/commits/8.2">8.2 changelog</a>:</p>

<ul>
<li><a href="https://github.com/symfony/symfony/commit/f504f7ef0e64cfea0a3b1d303acb6762ba270a70">f504f7e</a>: &#91;FrameworkBundle&#93; unregister its service when the EnumMappingMetadataFactory class does not exist</li>
<li><a href="https://github.com/symfony/symfony/commit/15b0727068f7f5d473e6aa097f7541bc9cf67e53">15b0727</a>: &#91;HttpClient&#93; remove unused code in AsyncResponse::__destruct()</li>
<li><a href="https://github.com/symfony/symfony/commit/71d1fa7cbb93c31465b7645fd304de71ca6f2e8c">71d1fa7</a>: &#91;Security&#93; allow disabling redirect on logout</li>
<li><a href="https://github.com/symfony/symfony/commit/d56fec85da23b3e8b893c505c427048549e26b39">d56fec8</a>: &#91;AssetMapper&#93; ignore compiled assets in debug mode</li>
<li><a href="https://github.com/symfony/symfony/commit/a1115aa08f98619351aab9658978373612b9cfab">a1115aa</a>: &#91;Serializer&#93; allow associative csv_headers to map and reorder columns when encoding</li>
</ul>

<h2>Newest issues and pull requests</h2>

<ul>
<li><a href="https://github.com/symfony/symfony/pull/64844">[Validator] Make Validation invokable for use with the pipe operator</a></li>
<li><a href="https://github.com/symfony/symfony/pull/64829">[Messenger] Add messenger:show command to inspect pending messages</a></li>
<li><a href="https://github.com/symfony/symfony/pull/64866">[FrameworkBundle][Messenger] Add option to disable the RejectRedeliveredMessageMiddleware</a></li>
</ul>

<h2>Symfony Jobs</h2>

<p>These are some of the most recent Symfony job offers:</p>

<ul>
<li><strong>Symfony Developer</strong> at ATH<br>
Contract / Freelance - €25 – €50 / hour<br>
Full remote<br>
<a href="https://symfony.com/jobs/4a82fc1">View details</a></li>
<li><strong>Lead Symfony Developer</strong> at DocuPet<br>
Full-time - CA$140,000 – CA$180,000 / year<br>
Full remote<br>
<a href="https://symfony.com/jobs/b6a97b9">View details</a></li>
<li><strong>DevOps for a Symfony project</strong> at Cloudpepper<br>
Full-time - $150,000 – $180,000 / year<br>
Full remote<br>
<a href="https://symfony.com/jobs/a9262d7">View details</a></li>
</ul>

<p>You can <a href="https://symfony.com/jobs">publish a Symfony job offer for free</a> on symfony.com.</p>

<h2>SymfonyCasts Updates</h2>

<p><a href="https://symfonycasts.com/">SymfonyCasts</a> is the official way to learn Symfony.
Select a track for a guided path through 100+ video tutorial courses about
Symfony, PHP and JavaScript.</p>

<p>This week, SymfonyCasts published the following updates:</p>

<ul>
<li>(Video) <a href="https://symfonycasts.com/screencast/symfony8-security/logout-csrf">Symfony Security: The Basics: Protecting Logout with CSRF</a></li>
</ul>

<h2>They talked about us</h2>

<ul>
<li><a href="https://dev.to/kaikina/markdown-for-agents-self-hosted-one-symfony-subscriber-instead-of-a-cloudflare-plan-13cd">Markdown for Agents, Self-Hosted: One Symfony Subscriber Instead of a Cloudflare Plan</a></li>
<li><a href="https://dev.to/refaatalktifan/pimcore-upgrade-10-to-12-the-real-migration-path-3k8">Pimcore Upgrade 10 to 12: The Real Migration Path</a></li>
<li><a href="https://habr.com/ru/articles/1055764/">Контракт из кода, клиент из контракта: избавляемся от тройного дублирования в API</a></li>
</ul>

<h2>Call to Action</h2>

<ul>
<li>Follow Symfony <a href="https://x.com/symfony">on X</a>, <a href="https://mastodon.social/@symfony">on Mastodon</a>, <a href="https://bsky.app/profile/symfony.com">on Bluesky</a> and <a href="https://www.threads.net/@symfony">on Threads</a> and share this article.</li>
<li><a href="https://feeds.feedburner.com/symfony/blog">Subscribe to the Symfony blog RSS</a> and never miss a Symfony story again.</li>
</ul>

                <hr style="margin-bottom: 5px" />
                <div style="font-size: 90%">
                    <a href="https://symfony.com/sponsor">Sponsor</a> the Symfony project.
                </div>
            ]]></content:encoded>
            <guid isPermaLink="false">https://symfony.com/blog/a-week-of-symfony-1019-july-6-12-2026?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed</guid>
            <dc:creator><![CDATA[ Javier Eguiluz ]]></dc:creator>
            <pubDate>Sun, 12 Jul 2026 09:33:00 +0200</pubDate>
            <comments>https://symfony.com/blog/a-week-of-symfony-1019-july-6-12-2026?utm_source=Symfony%20Blog%20Feed&amp;utm_medium=feed#comments-list</comments>
        </item>
            </channel>
</rss>
