Using Inertia v3 optimistic updates
https://freek.dev/3085-how-we-use-inertia-v3-optimistic-updates-in-there-there
https://redd.it/1sk5rez
@r_php
https://freek.dev/3085-how-we-use-inertia-v3-optimistic-updates-in-there-there
https://redd.it/1sk5rez
@r_php
freek.dev
How we use Inertia v3 optimistic updates in There There | freek.dev
A few months ago we started building There There, a helpdesk we're making at Spatie. The premise is simple. After two decades of running customer support for our open source work and our SaaS apps, we wanted the tool we always wished existed.
One thing we…
One thing we…
degecko/laravel-blade-inline: Inline Blade partials at compile time for faster rendering in loops
https://github.com/degecko/laravel-blade-inline
https://redd.it/1sk78qp
@r_php
https://github.com/degecko/laravel-blade-inline
https://redd.it/1sk78qp
@r_php
GitHub
GitHub - degecko/laravel-blade-inline: Inline Blade partials at compile time for faster rendering in loops
Inline Blade partials at compile time for faster rendering in loops - degecko/laravel-blade-inline
SymfonyLive Berlin 2026: “Make your AI useful with MCP”
https://symfony.com/blog/symfonylive-berlin-2026-make-your-ai-useful-with-mcp?utm_medium=feed&utm_source=Symfony%20Blog%20Feed
https://redd.it/1sk7amb
@r_php
https://symfony.com/blog/symfonylive-berlin-2026-make-your-ai-useful-with-mcp?utm_medium=feed&utm_source=Symfony%20Blog%20Feed
https://redd.it/1sk7amb
@r_php
Symfony
SymfonyLive Berlin 2026: “Make your AI useful with MCP” (Symfony Blog)
Stop asking generic questions, make your AI useful! Tobias Nyholm introduces the MCP protocol to build AI services that answer your real, specific needs.
degecko/laravel-blade-inline: Inline Blade partials at compile time for faster rendering in loops
https://github.com/degecko/laravel-blade-inline
https://redd.it/1sk78xe
@r_php
https://github.com/degecko/laravel-blade-inline
https://redd.it/1sk78xe
@r_php
GitHub
GitHub - degecko/laravel-blade-inline: Inline Blade partials at compile time for faster rendering in loops
Inline Blade partials at compile time for faster rendering in loops - degecko/laravel-blade-inline
Named Arguments Make PHP More Readable and a Refactoring Nightmare at the Same Time
Ever since named arguments landed in PHP 8.0, I've gone back and forth on whether they're actually a net positive.
On one hand, this is genuinely nicer to read:
On the other hand, the moment you rename that parameter, even inside a private method, something somewhere breaks. And good luck catching it without full test coverage.
The problem is that parameter names were never part of the contract before. They were implementation details. Named arguments quietly promoted them to public API, and most codebases were not ready for that.
It gets worse in teams. One developer uses named arguments everywhere for readability. Another avoids them entirely. Now your codebase is inconsistent and every PR review turns into an argument about it.
I still use them, but only at the call site of functions I do not own like built-ins and third-party libraries. For my own code that is deployed in prod, I have mostly stopped.
So where do you actually draw the line?
https://redd.it/1skchzn
@r_php
Ever since named arguments landed in PHP 8.0, I've gone back and forth on whether they're actually a net positive.
On one hand, this is genuinely nicer to read:
createUser(
name: 'John',
email: '[email protected]',
role: 'admin'
);
On the other hand, the moment you rename that parameter, even inside a private method, something somewhere breaks. And good luck catching it without full test coverage.
The problem is that parameter names were never part of the contract before. They were implementation details. Named arguments quietly promoted them to public API, and most codebases were not ready for that.
It gets worse in teams. One developer uses named arguments everywhere for readability. Another avoids them entirely. Now your codebase is inconsistent and every PR review turns into an argument about it.
I still use them, but only at the call site of functions I do not own like built-ins and third-party libraries. For my own code that is deployed in prod, I have mostly stopped.
So where do you actually draw the line?
https://redd.it/1skchzn
@r_php
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community
Symfony_Live Berlin 2026: “Symfony AI in Action” !
https://symfony.com/blog/xxxx?utm_medium=feed&utm_source=Symfony%20Blog%20Feed
https://redd.it/1skex7x
@r_php
https://symfony.com/blog/xxxx?utm_medium=feed&utm_source=Symfony%20Blog%20Feed
https://redd.it/1skex7x
@r_php
Symfony
Symfony_Live Berlin 2026: “Symfony AI in Action” ! (Symfony Blog)
AI is more than hype — but how do you use it in real projects? In “Symfony AI in Action”, Christopher Hertel shows how to integrate AI features into Symfony apps in a practical way.
I built an open source WebSocket server in Go that's Pusher-compatible — self-host free forever, or use the managed cloud tier
Hey r/laravel,
I've been building Relay — an open source WebSocket server written in Go that's fully Pusher-compatible. I wanted to share it here because it solves a real problem I kept running into.
The problem: Reverb is great if you're on a pure Laravel monolith. But if your team runs Laravel + Next.js, or Laravel + a Node worker, or anything outside a single Laravel app — Reverb can't serve the non-Laravel parts. Relay can.
What Relay is:
Single Go binary, no runtime dependencies
Fully Pusher-protocol compatible — swap credentials, no code changes
Works with Laravel, Next.js, Rails, Django, Node, and any other language with a Pusher SDK
Multi-app support — one server, multiple projects
Built-in Channel Inspector — live view of active channels and event payloads
Self-host free forever on a $5 VPS
The managed cloud tier (Relay Cloud) is optional. Free hobby plan, $19/mo Startup, $49/mo Business. If you outgrow it, move to self-hosting with two env var changes. Same binary, no code changes.
First-party Laravel package:
bash
composer require darknautica/relay-cloud-laravel
Two env vars and broadcasting works. No
Performance: At 1,000 concurrent connections, Relay used \~18% CPU and 38MB RAM. Reverb used \~95% CPU and 63MB RAM on equivalent hardware. Full benchmark post here: https://relaycloud.dev/blog/relay-vs-reverb-benchmark
Links:
Site + managed cloud: [https://relaycloud.dev](https://relaycloud.dev)
Open source server: https://github.com/DarkNautica/Relay
Laravel package: [https://packagist.org/packages/darknautica/relay-cloud-laravel](https://packagist.org/packages/darknautica/relay-cloud-laravel)
Docs: https://relaycloud.dev/docs
Happy to answer any questions. Would love feedback from anyone who tries it.
https://redd.it/1skfytz
@r_php
Hey r/laravel,
I've been building Relay — an open source WebSocket server written in Go that's fully Pusher-compatible. I wanted to share it here because it solves a real problem I kept running into.
The problem: Reverb is great if you're on a pure Laravel monolith. But if your team runs Laravel + Next.js, or Laravel + a Node worker, or anything outside a single Laravel app — Reverb can't serve the non-Laravel parts. Relay can.
What Relay is:
Single Go binary, no runtime dependencies
Fully Pusher-protocol compatible — swap credentials, no code changes
Works with Laravel, Next.js, Rails, Django, Node, and any other language with a Pusher SDK
Multi-app support — one server, multiple projects
Built-in Channel Inspector — live view of active channels and event payloads
Self-host free forever on a $5 VPS
The managed cloud tier (Relay Cloud) is optional. Free hobby plan, $19/mo Startup, $49/mo Business. If you outgrow it, move to self-hosting with two env var changes. Same binary, no code changes.
First-party Laravel package:
bash
composer require darknautica/relay-cloud-laravel
Two env vars and broadcasting works. No
config/broadcasting.php editing required.Performance: At 1,000 concurrent connections, Relay used \~18% CPU and 38MB RAM. Reverb used \~95% CPU and 63MB RAM on equivalent hardware. Full benchmark post here: https://relaycloud.dev/blog/relay-vs-reverb-benchmark
Links:
Site + managed cloud: [https://relaycloud.dev](https://relaycloud.dev)
Open source server: https://github.com/DarkNautica/Relay
Laravel package: [https://packagist.org/packages/darknautica/relay-cloud-laravel](https://packagist.org/packages/darknautica/relay-cloud-laravel)
Docs: https://relaycloud.dev/docs
Happy to answer any questions. Would love feedback from anyone who tries it.
https://redd.it/1skfytz
@r_php
Server-side Analytics for PHP
https://simplestats.io/blog/server-side-analytics-for-any-php-app
https://redd.it/1skipg2
@r_php
https://simplestats.io/blog/server-side-analytics-for-any-php-app
https://redd.it/1skipg2
@r_php
simplestats.io
SimpleStats - Revenue attribution analytics tool for Laravel apps
Discover which channels actually drive revenue, not just traffic. Server-side analytics built for Laravel apps. GDPR compliant, 100% accurate, ad-blocker proof.
VSCode Intelephense with Workspaces?
It's lowkey killing me that VSCode Intelephense doesn't recognize libraries in the same workspace. Does anyone have a workaround for this?
One alternative is that I can have the library in the IncludePath, but that changes per project even if the library doesn't so it's annoying to have to keep adding the same library while removing the old library so when I jumpto it goes to the one in my active workspace.
Any ideas or workarounds?
https://redd.it/1skkzdk
@r_php
It's lowkey killing me that VSCode Intelephense doesn't recognize libraries in the same workspace. Does anyone have a workaround for this?
One alternative is that I can have the library in the IncludePath, but that changes per project even if the library doesn't so it's annoying to have to keep adding the same library while removing the old library so when I jumpto it goes to the one in my active workspace.
Any ideas or workarounds?
https://redd.it/1skkzdk
@r_php
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community
Symfony UX 3.0.0 Released
https://symfony.com/blog/symfony-ux-3-0-0-released?utm_medium=feed&utm_source=Symfony%20Blog%20Feed
https://redd.it/1skpbhi
@r_php
https://symfony.com/blog/symfony-ux-3-0-0-released?utm_medium=feed&utm_source=Symfony%20Blog%20Feed
https://redd.it/1skpbhi
@r_php
Symfony
Symfony UX 3.0.0 Released (Symfony Blog)
Symfony UX 3.0 is a new major release. Following Symfony's release process, this version removes all features deprecated during the 2.x cycle and raises the minimum requirements to PHP 8.4 and Symfony…
Symfony UX 2.35 Released
https://symfony.com/blog/symfony-ux-2-35-released?utm_medium=feed&utm_source=Symfony%20Blog%20Feed
https://redd.it/1skpbh7
@r_php
https://symfony.com/blog/symfony-ux-2-35-released?utm_medium=feed&utm_source=Symfony%20Blog%20Feed
https://redd.it/1skpbh7
@r_php
Symfony
Symfony UX 2.35 Released (Symfony Blog)
Symfony UX 2.35 is out with smarter HTML attribute merging for Twig components, a new ``reset_on_focus`` option for Autocomplete, a brand new Flowbite 4.0 kit, and more.
Twenty Years Since My First PHP Script
https://iampavel.dev/blog/twenty-years-since-my-first-php-script
https://redd.it/1skppkm
@r_php
https://iampavel.dev/blog/twenty-years-since-my-first-php-script
https://redd.it/1skppkm
@r_php
Asaduzzaman Pavel
Twenty Years Since My First PHP Script • Asaduzzaman Pavel
It has been 20 years since I wrote my first PHP script in 2006. The code was terrible, the forum worked anyway, and here is what I wish I knew then.
Laravel Privacy Agent Skills (feedback is welcome!)
Hey guys, I’ve been working for the past few months on an app in the healthcare industry that requires strong compliance with user data protection and retention policies.
I recently went to Tropical Rails in Sao Paulo and I attended Talysson Oliveira’s talk, "Privacy on Rails - pragmatically complying to data protection laws". They built an Agent Skill for their privacy-by-design approach to help Rails developers ensure their DX is aligned with these policies from the conception of a Rails app.
However, the app I’ve been working on is built with Laravel, and I thought it would be a great idea to take what they built for Rails and apply a similar concept to Laravel. That’s why I decided to create https://github.com/sairojgg/laravel-privacy-skills as a Laravel alternative.
This is my first time sharing something publicly, let alone an Agent Skill, so any feedback is more than welcome.
This project is heavily inspired by their work, and I want to give full credit to the original creators.
https://redd.it/1skpyyj
@r_php
Hey guys, I’ve been working for the past few months on an app in the healthcare industry that requires strong compliance with user data protection and retention policies.
I recently went to Tropical Rails in Sao Paulo and I attended Talysson Oliveira’s talk, "Privacy on Rails - pragmatically complying to data protection laws". They built an Agent Skill for their privacy-by-design approach to help Rails developers ensure their DX is aligned with these policies from the conception of a Rails app.
However, the app I’ve been working on is built with Laravel, and I thought it would be a great idea to take what they built for Rails and apply a similar concept to Laravel. That’s why I decided to create https://github.com/sairojgg/laravel-privacy-skills as a Laravel alternative.
This is my first time sharing something publicly, let alone an Agent Skill, so any feedback is more than welcome.
This project is heavily inspired by their work, and I want to give full credit to the original creators.
https://redd.it/1skpyyj
@r_php
GitHub
GitHub - sairojgg/laravel-privacy-skills: Agent Skills for privacy by design implementation, assessment, and change review in Laravel…
Agent Skills for privacy by design implementation, assessment, and change review in Laravel apps. - sairojgg/laravel-privacy-skills
laravel-nova-multifilter: Combine multiple filter columns into a single Nova filter panel
https://github.com/degecko/laravel-nova-multifilter
https://redd.it/1sl1xox
@r_php
https://github.com/degecko/laravel-nova-multifilter
https://redd.it/1sl1xox
@r_php
GitHub
GitHub - degecko/laravel-nova-multifilter: Combine multiple filter columns into a single Nova filter panel
Combine multiple filter columns into a single Nova filter panel - degecko/laravel-nova-multifilter
I used multiple Claude Code instances to build and test a Laravel package across 3 production codebases
I posted recently on Reddit about building a fluent validation rule builder for Laravel (laravel-fluent-validation). Since then I also released a Rector companion package for automated migration. Instead of the usual pre-release-and-wait cycle, I ran Claude Code on the package repo and on three production Laravel codebases simultaneously and let the Claude instances work together.
# The workflow
claude-peers is an MCP server for Claude Code. Each instance running on your machine can discover other instances, see what they're working on, and send messages. They don't share context. Each has its own conversation with full codebase access.
In practice it works like this: the package peer tags a new release. It sends a message to the three codebase peers saying "0.4.5 tagged, fixes the parallel-worker race, please re-verify." Each codebase peer receives the message, pulls the new version, runs the migration, runs their tests, and sends back results. If something breaks, the response includes the exact error, the file, and usually a theory about why. The package peer reads that, asks follow-up questions if needed, fixes the issue, and the loop continues.
One thing I didn't expect was how quickly the peers developed their own review dynamic. They would challenge each other's assumptions, ask for evidence, and sometimes reach consensus before coming back with a recommendation.
I had four terminals open:
The package repo, building features, writing tests, shipping releases
Three production codebases, each a real Laravel app with its own validation patterns, framework integrations, and test suites
Everything runs locally. Claude Code works on local clones of each codebase, with the same filesystem access you'd have in your terminal. No production servers, no remote environments, no secrets exposed to AI.
The interesting part was what the peers caught that tests and synthetic fixtures couldn't:
One app has 108 FormRequests and uses `rules()` as a naming convention on Actions and Collections. The skip log grew to 2,988 entries / 777KB. On a smaller codebase you'd never notice.
Another app runs 15 parallel Rector workers. The skip log's truncate flag was per-process, so every worker wiped the others' entries. Synthetic fixtures run single-process. This bug doesn't exist there.
The same app runs Filament alongside Livewire. Five components use Filament's `InteractsWithForms` trait which defines its own `validate()`. Inserting the package's trait would have been a fatal collision on first render.
A third app found that 5/7 of its Livewire files had dead
Wrote up the full workflow, what worked, and when I'd use it (link in comments).
https://redd.it/1sl3ckm
@r_php
I posted recently on Reddit about building a fluent validation rule builder for Laravel (laravel-fluent-validation). Since then I also released a Rector companion package for automated migration. Instead of the usual pre-release-and-wait cycle, I ran Claude Code on the package repo and on three production Laravel codebases simultaneously and let the Claude instances work together.
# The workflow
claude-peers is an MCP server for Claude Code. Each instance running on your machine can discover other instances, see what they're working on, and send messages. They don't share context. Each has its own conversation with full codebase access.
In practice it works like this: the package peer tags a new release. It sends a message to the three codebase peers saying "0.4.5 tagged, fixes the parallel-worker race, please re-verify." Each codebase peer receives the message, pulls the new version, runs the migration, runs their tests, and sends back results. If something breaks, the response includes the exact error, the file, and usually a theory about why. The package peer reads that, asks follow-up questions if needed, fixes the issue, and the loop continues.
One thing I didn't expect was how quickly the peers developed their own review dynamic. They would challenge each other's assumptions, ask for evidence, and sometimes reach consensus before coming back with a recommendation.
I had four terminals open:
The package repo, building features, writing tests, shipping releases
Three production codebases, each a real Laravel app with its own validation patterns, framework integrations, and test suites
Everything runs locally. Claude Code works on local clones of each codebase, with the same filesystem access you'd have in your terminal. No production servers, no remote environments, no secrets exposed to AI.
The interesting part was what the peers caught that tests and synthetic fixtures couldn't:
One app has 108 FormRequests and uses `rules()` as a naming convention on Actions and Collections. The skip log grew to 2,988 entries / 777KB. On a smaller codebase you'd never notice.
Another app runs 15 parallel Rector workers. The skip log's truncate flag was per-process, so every worker wiped the others' entries. Synthetic fixtures run single-process. This bug doesn't exist there.
The same app runs Filament alongside Livewire. Five components use Filament's `InteractsWithForms` trait which defines its own `validate()`. Inserting the package's trait would have been a fatal collision on first render.
A third app found that 5/7 of its Livewire files had dead
#[Validate] attributes coexisting with explicit validate([...]) calls. Nobody anticipated that pattern.Wrote up the full workflow, what worked, and when I'd use it (link in comments).
https://redd.it/1sl3ckm
@r_php
GitHub
GitHub - SanderMuller/laravel-fluent-validation: Fluent and extremely fast validation for Laravel
Fluent and extremely fast validation for Laravel. Contribute to SanderMuller/laravel-fluent-validation development by creating an account on GitHub.
I used multiple Claude Code instances to build and test a Laravel package across 3 production codebases
/r/laravel/comments/1sl3ckm/i_used_multiple_claude_code_instances_to_build/
https://redd.it/1sl3d4l
@r_php
/r/laravel/comments/1sl3ckm/i_used_multiple_claude_code_instances_to_build/
https://redd.it/1sl3d4l
@r_php
Reddit
From the PHP community on Reddit: I used multiple Claude Code instances to build and test a Laravel package across 3 production…
Posted by Rhinnii - 0 votes and 0 comments
Composer 2.9.6: Perforce Driver Command Injection Vulnerabilities (CVE-2026-40261, CVE-2026-40176)
https://blog.packagist.com/composer-2-9-6-perforce-driver-command-injection-vulnerabilities/
https://redd.it/1sl4z6i
@r_php
https://blog.packagist.com/composer-2-9-6-perforce-driver-command-injection-vulnerabilities/
https://redd.it/1sl4z6i
@r_php
Private Packagist
Composer 2.9.6: Perforce Driver Command Injection Vulnerabilities (CVE-2026-40261, CVE-2026-40176)
Please immediately update Composer to version 2.9.6 or 2.2.27 (LTS) by running composer.phar self-update. The new releases include fixes for two command injection security vulnerabilities in the Perforce VCS driver. CVE-2026-40261 was reported by Koda Reef…
The NativePHP Masterclass with Shruti Balasa
https://www.youtube.com/watch?v=HO9zbS2dM7M
https://redd.it/1sl6d3q
@r_php
https://www.youtube.com/watch?v=HO9zbS2dM7M
https://redd.it/1sl6d3q
@r_php
YouTube
The NativePHP Masterclass - Teaser
We've enlisted one of the Laravel Community's best teachers to help us create the NativePHP Masterclass.
Let Shruti be your guide (and Shane and Simon too) on your journey to building great native apps.
In this in-depth course, we're going to take you through…
Let Shruti be your guide (and Shane and Simon too) on your journey to building great native apps.
In this in-depth course, we're going to take you through…
Is EasyAdmin still worth it with a lot of customisation?
Hey all!
I've used EasyAdmin to quickstart a back-office with a ton of (sometimes massive) forms. It works great but the more I customise its appearance, the more I feel I'm working against it.
Question: When does it lose out to plain symfony forms and twig templates? Any experience would be much appreciated!
Here's a handful of examples for context:
- boolean fields replaced with a custom tri-state toggle to track true-false-null values
- choicefields displayed as a row of buttons row to view all options at once and pick in one click
- collections of images with an extra link to view the existing file in a new tab
- collection displayed as a custom matrix (properties as rows, objects as columns, values in cells)
Some of these rely on Stimulus, ultimately I may even switch to Turbo.
https://redd.it/1sl6aci
@r_php
Hey all!
I've used EasyAdmin to quickstart a back-office with a ton of (sometimes massive) forms. It works great but the more I customise its appearance, the more I feel I'm working against it.
Question: When does it lose out to plain symfony forms and twig templates? Any experience would be much appreciated!
Here's a handful of examples for context:
- boolean fields replaced with a custom tri-state toggle to track true-false-null values
- choicefields displayed as a row of buttons row to view all options at once and pick in one click
- collections of images with an extra link to view the existing file in a new tab
- collection displayed as a custom matrix (properties as rows, objects as columns, values in cells)
Some of these rely on Stimulus, ultimately I may even switch to Turbo.
https://redd.it/1sl6aci
@r_php
Reddit
From the symfony community on Reddit
Explore this post and more from the symfony community
Laravel 13.4: Better Queue Tools and Stricter Form Requests
https://youtu.be/MsxZvxWSRGg
https://redd.it/1sl7dut
@r_php
https://youtu.be/MsxZvxWSRGg
https://redd.it/1sl7dut
@r_php
YouTube
Laravel 13.4: Better Queue Tools and Stricter Form Requests
Laravel 13.4 brings improvements to queuea, and stricter FormRequesta.
➡️ Queued #[Delay] attribute improvements https://github.com/laravel/framework/pull/59514
➡️ Queue inspection methods https://github.com/laravel/framework/pull/59511
➡️ FormRequest…
➡️ Queued #[Delay] attribute improvements https://github.com/laravel/framework/pull/59514
➡️ Queue inspection methods https://github.com/laravel/framework/pull/59511
➡️ FormRequest…
25 years to the day !! of my first surviving open source PHP project: PHP-Egg, born 13 April 2001. FIrst PHP Daemon. First RFC PHP client (IRC). First long-running (months on end) PHP process.
https://github.com/hopeseekr/phpegg
https://redd.it/1sl89rw
@r_php
https://github.com/hopeseekr/phpegg
https://redd.it/1sl89rw
@r_php
GitHub
GitHub - hopeseekr/phpegg: The first IRC bot + IRC client / server + CLI daemon in PHP.
The first IRC bot + IRC client / server + CLI daemon in PHP. - hopeseekr/phpegg