|
Hi there!
Welcome to the 199th freek.dev newsletter!
Here are a couple of links I hope you'll enjoy as much as I did.
β Laravel Query Builder v7: a must-have package for building APIs in Laravel
We just released v7 of spatie/laravel-query-builder, our package that makes it easy to build flexible API endpoints. If you're building an API with Laravel, you'll almost certainly need to let consumers filter results, sort them, include relationships and select specific fields. This package can help you with that.
β Scotty: a beautiful SSH task runner
We just released Scotty, a beautiful SSH task runner. It lets you define deploy scripts and other remote tasks, run them from your terminal, and watch every step as it happens. It supports both Laravel Envoy's Blade format and a new plain bash format.
Oh Dear: uptime, certificates, broken links, DNS, and more in one place (sponsored link)
Most monitoring tools do one thing. Oh Dear combines uptime monitoring, SSL certificate checks, broken link crawling, mixed content detection, scheduled task monitoring, DNS tracking, performance checks and more into a single dashboard. No need to juggle with a bunch of different services.
β What's new in laravel-activitylog v5
We just released v5 of laravel-activitylog, our package for logging user activity and model events in Laravel. In Flare, Mailcoach, and Oh Dear we use it to build audit logs, so we can track what users are doing: who changed a setting, who deleted a project, who invited a team member. If you needβ¦
Rethinking our frontend future at Spatie
Nick wrote about how native browser features like the dialog element, the Popover API, and anchor positioning could eventually replace much of what we use shadcn and Radix for at Spatie today. A thoughtful look at where the web platform is heading and what it means for our frontend stack.
The Agentic Artisan
Christoph Rumpel reflects on how AI tools are changing the way developers work. The core message: take the shortcuts that cut out mechanical work, but don't outsource the parts that make your work yours.
A GitHub Issue Title Compromised 4,000 Developer Machines
A deep dive into "Clinejection", where an attacker injected a prompt into a GitHub issue title, which an AI triage bot interpreted as an instruction. The resulting chain led to cache poisoning, credential theft, and a compromised npm package that silently installed a second AI agent on 4,000 developer machines.
Introduction to Delegated Types
This post explores what Delegated Types are, highlights their benefits, compares them to alternatives like Single-Table Inheritance (STI), and examines practical use cases they enable.
Generating OG images at the edge on Cloudflare
Matt Rothenberg walks through how to generate dynamic Open Graph images on Cloudflare Workers. A practical guide covering the full setup from rendering to caching.
Speed up your Livewire tests
Michael Dyrynda found that switching from fill() to set() in Livewire tests reduced his test suite from 22 seconds to 4 seconds. The difference: fill triggers a Livewire round-trip per field, while set batches them into one.
Moving from PHPStorm to Zed for Laravel development
Chris Mellor wrote a practical guide on setting up Zed as a Laravel IDE, covering PHP extensions, Pint formatting, Blade support, and how it compares to PHPStorm.
Run seeders from migrations
A practical look at why you should populate essential data from migrations instead of seeders. Once your app is live, manually running seeders becomes a deployment risk. Migrations are deterministic, automatic, and roll back cleanly.
Chat with your documents: a practical guide to RAG using the Laravel AI SDK
A thorough walkthrough of building a RAG system in Laravel using the new AI SDK, Postgres for vector storage, and Livewire 4 for a streaming chat UI. Covers everything from what RAG is and how semantic search works to embedding documents and querying them.
Build an MCP server with Laravel
Daniel Coulbourne walks through building an MCP server with the official laravel/mcp package. He built one for his blog in about 20 minutes, then used it to write and publish the post you're reading.
Liminal - A full Laravel playground in your browser
A static, free, and open-source Laravel playground that runs entirely in the browser! Comes with a sqlite db, artisan commands, two-way file syncing, github imports, and more.
New and improved settings screens in Flare
We gave all the settings screens in Flare a fresh coat of paint. Consistent layouts, better forms, improved navigation and plenty of small details that make the experience calmer and more focused.
Community links
In this section you'll find links submitted by others. Let me know if you wrote or stumbled across a blog post, tutorial or video that might be interesting to appear in this section.
Why I Chose Atlas Over Laravel AI SDK (submitted by Sagar)
Meet Aion: A modular and customizable Laravel 13 starter kit (submitted by Mazen Touati)
How to Setup PIE for PHP Extensions on macOS (submitted by STEPHEN JUDE)
Old posts
Here are a couple of links from a while ago!
Naming things is suddenly easier
Real-Time Updates with Client-Side Visits in Inertia 2.0 - No Server Overload!
π Laravel CSP v3 has been released, now supports presets
10 Efficient (and Fun) Ways to Seed Your Database
Using PHP as a (Terrible) Video Player
Discovering PHP's yield Keyword After 10 Years
Bulletproofing Inertia: How I maximize Type Safety in Laravel Monoliths
Lessons From Eloqent Performance Patterns (Cheatsheet)
Enjoy this newsletter? Help it grow!
If you found this edition useful, here are two quick ways to support the newsletter:
π Write a short recommendation. Approved recommendations appear on the newsletter page for others to see.
π Forward this email to a colleague or friend who might be interested.
Alternatively, you could consider picking up one of the paid products my team and I have worked on:
If you have any questions, remarks or thoughts about this newsletter, simply hit reply!
Thank you so much for reading!
Freek
P.S. Know someone who'd enjoy this newsletter? Send them here to subscribe.
You are receiving this newsletter because you subscribed at freek.dev
Unsubscribe from this newsletter
This mail was sent using Mailcoach
|