- Makers Make by SaaSykit
- Posts
- SaaSykit Black Friday DEAL, Laravel 12.38-39, PHP 8.5 is released, Scaling PHP Applications, What's really going on in software, 31 Ways to Grow your SaaS in 2025 & more
SaaSykit Black Friday DEAL, Laravel 12.38-39, PHP 8.5 is released, Scaling PHP Applications, What's really going on in software, 31 Ways to Grow your SaaS in 2025 & more
Hey Makers 👋
Black Friday is officially here — and so is SaaSykit’s biggest sale of the year. For a limited time, you can grab 25% off SaaSykit Complete using the coupon BLACKFRIDAY2025. If you’ve been waiting for the perfect moment to kick off your next SaaS idea, this is your sign. 🚀
Meanwhile, the Laravel release train doesn’t slow down — Laravel 12.38 and 12.39 just landed, bringing a handful of practical, developer-friendly improvements that make shipping faster and smoother.
Let’s dive into this week’s Laravel updates 👇
Laravel 12.38-39 updates
WithCachedRoutes Testing Trait
New testing trait that compiles all routes once and reuses them across your entire test suite → faster runs, no repeated bootstrapping.
Works in both Pest and PHPUnit.
// Pest
pest()->use(\Illuminate\Foundation\Testing\WithCachedRoutes::class);
test('users endpoint responds', function () {
$this->get('/users')->assertOk();
});// PHPUnit
class UsersTest extends TestCase
{
use \Illuminate\Foundation\Testing\WithCachedRoutes;
public function test_index_page_is_accessible()
{
$this->get('/users')->assertSuccessful();
}
}WithCachedConfig Testing Trait
Caches your app’s configuration once at the start of your test suite → no config rebuild on every test.
Great for speeding up large suites or apps with heavy configs.
// Pest
pest()->use(\Illuminate\Foundation\Testing\WithCachedConfig::class);
test('can override config temporarily', function () {
config(['mail.default' => 'log']);
expect(config('mail.default'))->toBe('log');
});
test('config resets for next test', function () {
expect(config('mail.default'))->not->toBe('log');
});// PHPUnit
class ConfigExampleTest extends TestCase
{
use \Illuminate\Foundation\Testing\WithCachedConfig;
public function test_default_config_is_loaded()
{
$this->assertSame('smtp', config('mail.default'));
}
}New
@hasStackBlade DirectiveAdds a conditional wrapper around
@stackso you only render markup if the stack actually contains content.
@push('sidebar-items')
<span>Dashboard</span>
@endpush
@hasstack('sidebar-items')
<aside>
@stack('sidebar-items')
</aside>
@endhasstackRoute List Middleware Filter
php artisan route:listnow supports a--middlewareflag to filter routes by middleware or middleware group.Supports partial matches.
php artisan route:list --middleware=auth
php artisan route:list --middleware=Throttle
From the Community
In the PHP world, a traditional setup for running PHP applications in production usually involves a web server (such as NGINX or Caddy) and a process manager (such as PHP-FPM) that integrates with the web server over FastCGI to process incoming requests.
The PHP team has released PHP v8.5 with the Pipe operator, a URI extension, array_first() and array_last() functions, an INI diff flag, and more
Vantage is a Laravel package that tracks and monitors your queue jobs. This package automatically records job execution history, failures, and job retries and provides a simple web interface to view everything.
I'm on a quest to improve the load times for laravelshift.com. I reached over 90% caching by focusing on my highest traffic content pages. Now I have a few relatively high traffic forms I want to cache. These are the Can I Upgrade Laravel and Convert curl to Http.
Laravel has many undocumented features, and unfortunately, unless you're dedicating large chunks of time to digging through the source code, and tracking what's going on, these features are likely to pass you by. Fortunately, I have done, and continue to do, exactly that. So in this article, I'll be going over middleware priority, which is something that is only briefly mentioned in the documentation.
Today, I'm going to talk a little about how we test that permissions are being enforced properly.
One approach might be to create a user with no permissions, and then try to access a route that requires a specific permission. We could then assert that the user is rejected.
I'm tired of reading the same message all time: "PHP sucks."
But most of these critics haven't looked at PHP since 2012, and a lot has changed since then.
Let's take a look at the language changes that have happened since PHP 5.4 was released.
Programmers hate deleting things; we’ve all felt that feeling in the pit our stomach when we realise that thing we deleted was really deleted, and on the other hand the security of deleting some unused code, safe in the knowledge that it’s still really there in version control.
With the release of PHP 8, the powerful Attributes feature was introduced. However, not many people still realize its power in modern projects. Attributes provide a structured and type-safe way to add metadata to your code. In this article, we will take a look at PHP attributes, their syntax, usage, and practical applications, especially in the context of the Laravel framework.
All about SaaS
Over the past nine (!) years I’ve now surveyed 5,000 private B2B software companies to figure out what’s going on in the industry. The SaaS Benchmarks report has become an annual pulse check into what’s happening with growth rates, headcount, pricing, and efficiency.
If you’re a software founder, the fastest way to grow isn’t doing everything. It’s picking the right growth levers for your current stage.
At Founderpath, we’ve worked with more than 550 SaaS founders and studied how each scaled from $0 to $10M ARR. The takeaway: what works at $300K ARR won’t work at $3M.
In the book Supercommunicators by Charles Duhigg, I came across a story about Winston Churchill’s mother, Lady Randolph Churchill. She once dined with two of England’s most famous men: William Gladstone and Benjamin Disraeli, both Prime Ministers. After meeting Gladstone, she said, “I thought he was the cleverest man in England.” After meeting Disraeli, she said, “I thought I was the cleverest woman in England.”
One of the more fun ways to spend time on X is to get into an argument with someone who thinks we’re in a bubble. Or get into an argument with someone who is convinced we are not. I don’t mean fun in the sense of “oh boy this is enjoyable, let’s have a playdate” but in the “this definitely isn’t work and actually is enjoyable if you get to play an extremely certain character in this meaningless debate.”
In 2014, I had just sold my first company. It wasn’t a lot of money, but at the time it felt like all the money I would need for a long time. Afterwards, I felt myself being pulled in a few different directions. I’ve written before about one path and the self-discovery that led me to venture capital. But there was another pull I felt to build something else.
Ideas open doors, lead to connections and make things better.
But not all good ideas are good businesses.
Crop rotation is a good idea. So is sous vide cooking and the sport of juggling. But these aren’t good businesses.
A business thrives when it can charge a premium–selling something for more than it costs. That means that there has to be a competitive advantage, an asset that produces value. Easy substitutions are a challenge for businesses, but useful ideas are often based on how easy they are to share.
Videos
Keep building, keep rocking! 🤘
