• Makers Make by SaaSykit
  • Posts
  • Laravel 11.11-13 Released, Mastering Laravel Collections, Filament v4 Beta, Niches Are Larger Than You'd Think & more

Laravel 11.11-13 Released, Mastering Laravel Collections, Filament v4 Beta, Niches Are Larger Than You'd Think & more

Hey Makers 👋

Hope your summer’s off to a great start, whether you’re planning beach days or shipping new features for your SaaS!

Laravel has seen three major releases recently. While they’re mostly cosmetic, a few features stand out. We’ll cover the highlights below.

Let’s dive in 👇

  • Typed Getters for Arr Helpers
    Anthony Tibbs added typed getter methods to Laravel’s Arr support class: Arr::array(), Arr::bool(), Arr::float(), Arr::integer(), and Arr::string().

use Illuminate\Support\Arr;

$data = ['active' => true, 'score' => '95'];

$isActive = Arr::bool($data, 'active'); // true
$score = Arr::int($data, 'score'); // throws InvalidArgumentException (string, not int)
  • Job Payload Enhancements
    Taylor Otwell added createdAt and delay metadata to job payloads.

$job = new SomeJob();
$payload = $job->delay(10)->payload();

/*
Now includes:
[
    'delay' => 10,
    'createdAt' => 1745969999
]
*/
  • New Test Assertion: assertRedirectBack()
    Laravel now includes a handy assertRedirectBack() method in the test suite, thanks to Ryan Chandler. It asserts that a response redirects to the previous page, especially when using redirect()->back() in your controllers.

$response->assertRedirectBack();
  • Named Queued Closures
    Will Rowe added support for naming queued closures, making it easier to track and debug them in queue monitoring tools.

dispatch(fn() => doSomething())->name('send-welcome-email');
  • Closure Support in containsOneItem()
    Collections got a nice upgrade from Fernando Garcia. You can now pass a Closure to containsOneItem() to check if exactly one item meets a custom condition:

$items = collect([10, 20, 30]);

$items->containsOneItem(fn($value) => $value === 20); // true  
$items->containsOneItem(fn($value) => $value > 15);   // false, two items match

From SaaSykit

Laravel’s Collection class is one of the most powerful and expressive features of the framework. While it often flies under the radar for newcomers, mastering collections can significantly simplify your code, increase readability, and give you more control over your data transformations.

In this article, we’ll explore what collections are, when to use them, and how to truly master them with practical examples and tips.

From the Community

We've had a lot of exciting news come from the Filament project over the past few years, but none has been more avidly requested than news on the v4 release. Well, today, in this post, we're going to drop some exciting details about the v4 Beta that will be released in the near future. Get excited, because it's almost time!

Laravel Nightwatch is a new product from the Laravel team that will give you awesome insights into your application's performance. It delivers the intelligence only a system obsessively optimized for Laravel can deliver.

Recently, I was exploring a Rails application when I noticed that the developers had marked database columns as having sensitive data via a table's column definition. Various databases support comments for columns, but here's MySQL's explanation of a column comment:

Almost daily, I see someone making a crack at PHP, implying that apps written in PHP are somehow less secure than other languages.

Here’s the thing: they’re not.

Imagine having a table with ten rows. Imagine even more, having a “Bulk Action” button above this table. When the user selects all ten rows from the table and clicks on the button, all ten rows are sent to the server for bulk processing.

Each row is processed one after the other, until finally, all rows complete and the server responds back to the client. This setup means that even though a portion of the group might’ve already completed its processing, this portion will not be updated as “processed” in the UI just yet—not until all other remaining parts of the group complete as well.

Laravel enhances API testing workflows with the introduction of the ddBody() method. This convenient debugging tool allows developers to quickly inspect response content during test execution without disrupting their testing process.

When developing and testing APIs, examining response content is crucial for understanding test failures. Previously, developers relied on methods like dd() with json_decode or assertJson for verification.

A couple of years ago, Laravel introduced a great feature which allows to run PHPUnit / Pest tests in parallel. This results in a big boost in performance.

By default, it determines the concurrency level by taking a look at the number of CPU cores your machine has. So, if you're using a modern Mac that has 10 CPU cores, it will run 10 tests at the same time, greatly cutting down on the time your testsuite needs to run completely.

In this tutorial, let's talk about a function that every Laravel developer has used, dd(). I will show you various creative ways to use dd() in our applications.

All about SaaS

Tech startups in their pre-product-market fit (PMF) phase often experiment with pricing to find a sustainable business model. In the US and Europe, early-stage SaaS and data-driven companies have tried a range of pricing strategies from giving the product away for free to charging premium prices upfront.

As a metrics wonk, the first of the month is like Christmas morning: time to unwrap the prior period’s podcast numbers.

This ritual is a nice little dopamine drip, but this April’s numbers hit different.

Despite having one less day, the podcast downloads made a step function leap.

Tim (my cofounder and co-CEO) and I started with quite asymmetric experience.

I had previously been a VP of sales, responsible for sales, support, and account management. Tim was an insanely talented, 23-year-old engineer, and was much earlier in his career – I’m nearly 10 years older.

I diligently pushed myself hard at school, got straight As, and went to one of the top universities in my country. Tim quit school at 16 because he realized he was earning more than his teacher, and has worked ever since.

People tend to think luck is random. Something that happens to you, versus something you create for yourself. And I used to believe that too.

Until I started noticing patterns.

A friend who "got lucky" with a big book deal wrote a weekly newsletter for three years. 156 issues in a row. Meanwhile, the average newsletter-starter calls it quits between weeks 14 and 16, according to Substack.


Videos

Keep building, keep rocking! 🤘

Psst, are you building a SaaS?

SaaSykit is a multi-tenancy Laravel-based boilerplate with everything you need to build an awesome SaaS.