Mastering Laravel 12.26: Pretty JSON and Heartbeat Collections

Laravel////3 min read

Overview

continues to refine the developer experience with the release of version 12.26. This update introduces two subtle but powerful tools designed to solve common headaches: unreadable debug logs and expiring locks during long-running tasks. The toPrettyJson method simplifies data visualization, while withHeartbeat brings a native way to manage background maintenance within .

Prerequisites

To get the most out of this tutorial, you should have a solid grasp of fundamentals and experience working with collections. Familiarity with encoding and the concept of —which allow you to handle massive datasets without exhausting memory—is essential.

Key Libraries & Tools

  • Laravel 12.26: The core framework providing these new methods.
  • Carbon: Used for defining the time intervals for the heartbeat feature.
  • LazyCollection: The specific collection class that supports the new periodic callback functionality.

Code Walkthrough

Readable JSON Outputs

The toPrettyJson method is a quality-of-life improvement. Instead of manually passing the JSON_PRETTY_PRINT flag to a native function, you can now chain this directly onto your data objects.

// Traditional way
return json_encode($user, JSON_PRETTY_PRINT);

// Laravel 12.26 way
return $user->toPrettyJson();

Implementing the Heartbeat

The withHeartbeat method allows a to execute a callback at specific time intervals while it iterates. This is perfect for extending a lock or logging progress.

use Illuminate\Support\CarbonInterval;
use Illuminate\Support\Facades\File;

File::lines('large_data.csv')
    ->withHeartbeat(CarbonInterval::seconds(5), function () {
        // This runs every 5 seconds of processing time
        dump('Heartbeat: Still processing...');
    })
    ->each(function ($line) {
        // Process each line
    });

Syntax Notes

The withHeartbeat method requires two arguments: a CarbonInterval or a duration in seconds, and a closure. Under the hood, tracks the elapsed time during iteration and triggers the anonymous function only when the interval threshold is crossed. This avoids the overhead of checking the clock on every single item in the collection.

Practical Examples

A primary use case involves processing large CSV imports that require a lock to prevent race conditions. If an import takes ten minutes, you might set a one-minute lock and use withHeartbeat to refresh that lock every 45 seconds. This ensures the lock remains active exactly as long as the process runs, then expires naturally if the script crashes.

Tips & Gotchas

Remember that the heartbeat only triggers during active iteration. If your collection logic includes a heavy sleep() or a blocking network call outside the iterator, the heartbeat will wait until the current item finishes processing to check the time. Always use for large files to keep memory usage low, and pair withHeartbeat with efficient logging to monitor background job health.

Topic DensityMention share of the most discussed topics · 13 mentions across 7 distinct topics
31%· software
23%· software
15%· software
8%· people
8%· software
Other topics
15%
End of Article
Source video
Mastering Laravel 12.26: Pretty JSON and Heartbeat Collections

New toPrettyJson & withHeartbeat Features in Laravel 12.26

Watch

Laravel // 3:33

The official YouTube channel of Laravel, the clean stack for Artisans and agents. We will update you on what's new in the world of Laravel, from the framework to our products Cloud, Forge, and Nightwatch.

Who and what they mention most
3 min read0%
3 min read