Punyapal Shah

@mrpunyapal.dev

Laravel Engineer. Open Source Maintainer. Core Team @ Pinkary & Pest. Founder @ Laravel Artisans. Sharing code, ideas & lessons learned.

Laravel devs, Laravel 13.24 adds a new array_keys validation rule. 👀 If you've ever written custom validation just to check array keys, this one is for you. A small addition, but it makes validating configuration arrays and structured payloads much cleaner.

Bild

Laravel devs using PostgreSQL, Laravel 13.23 adds support for PostgreSQL's USING clause in migrations. 👀 Need to convert a text column like 2026-08-02 into a DATE column? PostgreSQL requires a USING clause to define how existing values should be cast. Laravel now supports this with ->using().

Bild

Laravel devs using PostgreSQL, Laravel 13.23 adds support for PostgreSQL's USING clause in migrations. 👀 Need to convert a text column like 2026-08-02 into a DATE column? PostgreSQL requires a USING clause to define how existing values should be cast. Laravel now supports this with ->using().

Bild

Laravel devs, queue:clear got a small but useful improvement in Laravel 13.22. 👀 You can now clear multiple queues in a single command using a comma-separated list. One less thing to repeat.

Bild

My site initially started as just one page with one paragraph, my photo, and my socials. But now it has talks, a resume, projects, and open-source pages. For the past few days, I've been working hard on collecting and adding stuff, fixing many things. And now I think it's fully loaded.

Punyapal Shah | Laravel Engineer & Open Source Maintainer

Laravel Engineer and open source maintainer. Core Team at Pest and Pinkary, founder of Laravel Artisans, speaker, and technical content creator.

mrpunyapal.dev

Laravel devs, your email:dns validation tests don't need to rely on real DNS anymore. 👀 Laravel 13.22 added support for faking DNS lookups during validation. You can define exactly what DNS records should be returned and keep your tests predictable without external DNS requests.

Bild

Laravel devs, Laravel 13.23 adds a new monthly log driver. 👀 Instead of creating a new log file every day, you can now keep one log file per month. You can also control how many monthly log files are retained with max_files. A nice option for apps that don't need daily log rotation.

Bild

Pest 5 TIP: You can enable the TIA plugin by default, so you don't need to brag to AI about adding the --tia flag to your commands. And yeah, this can be a good setup for your pest.php in your Laravel project.

Bild

Got a shoutout at Laracon US! 🫶 I hope you'll find the new PHPStan and Rector plugins for Pest useful. These are plugins I wanted myself badly, and now, after 100k+ downloads each, they've found a new home in Pest 5. ❤️ Moments like this make open source worth it. Thank you, @nunomaduro.com. 🫶

Bild

Laravel devs, another new attribute is coming in Laravel 13.22. 👀 #[BindWhen] lets you conditionally bind implementations using a closure. The closure receives the container, so your condition can depend on configuration, feature flags, or anything resolvable at runtime. Note: Requires PHP 8.5.

Bild

PHP devs, how do you build documentation once your README isn't enough? 👀 I got tired of rebuilding documentation websites for every open source project. So I built DocSmith. 👇 Repository in the first reply.

Bild

Laravel devs, here's a helper you might not know about. 👀 Str::transliterate() converts Unicode characters to their closest ASCII equivalent. Great for uploaded filenames, search normalization, and ASCII-only systems. One of those helpers that's easy to overlook.

Bild

Laravel 13.21 adds a built-in base64 validation rule. No more custom validation logic just to verify a Base64-encoded value. One less custom rule to maintain. 👌

Bild

One more attribute for Laravel's attribute lovers. 👀 Laravel 13.21 introduces #[RouteKey]. If you're only overriding getRouteKeyName() to return a column like slug, you can now replace the entire method with a single attribute. A nice little quality-of-life improvement.

Bild

New in Laravel 13.21: #[RequestAttribute] The request attributes bag is perfect for data you've already resolved during the current request. For example, if middleware has already loaded the current tenant, there's no reason to hit the database again later.

Bild

Most Laravel developers know unique(). But did you know Collections also have duplicates()? One thing that surprised me is how it works. If a value appears 3 times, it will be returned twice. Every occurrence after the first is considered a duplicate.

Bild

Most Laravel developers know pipe(). Far fewer know about pipeThrough(). Instead of one transformation, you can pass your collection through multiple reusable callables, keeping each step small, focused, and easy to test. Have you ever used it?

Bild