<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/grbjpuna0" -->

---
title: From dd() to Ray: A Debugging Workflow That Doesn't...
description: Laravel's dd() function is convenient for quick debugging but breaks request flow and shows only one snapshot at a time. The author evolved from dd() to...
canonical: https://daily.dev/posts/grbjpuna0
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: From dd() to Ray: A Debugging Workflow That Doesn't Break Your Flow | daily.dev
og:description: Laravel's dd() function is convenient for quick debugging but breaks request flow and shows only one snapshot at a time. The author evolved from dd() to...
og:url: https://daily.dev/posts/grbjpuna0
og:image: https://api.daily.dev/og/posts/grBJpuNa0.png
og:image:alt: Post cover image
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# From dd() to Ray: A Debugging Workflow That Doesn't Break Your Flow

**[Laravel Dev](https://daily.dev/sources/laraveldev)** · [@danielpetrica](https://daily.dev/danielpetrica) · 15 upvotes · 1 comments

## Summary

Laravel's dd() function is convenient for quick debugging but breaks request flow and shows only one snapshot at a time. The author evolved from dd() to Log::info() for full request visibility, then to Ray—a desktop debugging tool by Spatie. Ray displays debug output in a clean interface without killing requests, supports labeled entries, color coding, query tracking, performance measurement, and works seamlessly with queued jobs and Artisan commands. The workflow combines lifecycle understanding with strategic ray() calls to see the complete picture without interrupting execution.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://tnakov.dev/from-dd-to-ray-debugging-workflow-that-doesnt-break-your-flow>

## Similar posts on daily.dev

- [The New Debug Bar for Laravel](https://daily.dev/posts/the-new-debug-bar-for-laravel-ucjxhtzdb) · Benjamin Crozat · 17 upvotes · 2 comments
- [Laravel Brain: Visualize Your Application's Request Lifecycle](https://daily.dev/posts/laravel-brain-visualize-your-application-s-request-lifecycle-7nug7p59g) · Laravel News · 153 upvotes · 12 comments
- [Debugging in Real Life: How I Use Rails.logger and Docker Logs in My Daily Workflow](https://daily.dev/posts/debugging-in-real-life-how-i-use-rails-logger-and-docker-logs-in-my-daily-workflow-9ridf66sj) · Ruby Flow · 0 upvotes · 0 comments
- [Your Logs Are Lying to You — So I Built an Open-Source LogRocket Alternative That Runs on a $6 VPS](https://daily.dev/posts/your-logs-are-lying-to-you-so-i-built-an-open-source-logrocket-alternative-that-runs-on-a-6-vps-x5p4shdwz) · Medium · 0 upvotes · 0 comments

---

Tags: [#devtools](https://daily.dev/tags/devtools), [#laravel](https://daily.dev/tags/laravel), [#php](https://daily.dev/tags/php), [#webdev](https://daily.dev/tags/webdev)

[View this post on daily.dev](https://daily.dev/posts/grbjpuna0)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"DiscussionForumPosting","mainEntityOfPage":"https://daily.dev/posts/grbjpuna0","headline":"From dd() to Ray: A Debugging Workflow That Doesn't Break Your Flow","text":"Shared: From dd() to Ray: A Debugging Workflow That Doesn't Break Your Flow","url":"https://daily.dev/posts/grbjpuna0","datePublished":"2026-01-17T15:38:10.225Z","dateModified":"2026-03-15T07:40:01.511Z","author":{"@type":"Person","name":"Daniel, Petrica Andrei-Daniel","url":"https://daily.dev/danielpetrica","image":"https://avatars.githubusercontent.com/u/4850686?v=4","description":"Featured Laravel Artisan, DevOps & New Relic Consultant | Building Scalable Systems with Precision \n","interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":2030}},"image":"https://media.daily.dev/image/upload/s--2-1xRawN--/f_auto/v1722860399/public/Placeholder%2011","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":15},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"sharedContent":{"@type":"WebPage","url":"https://api.daily.dev/r/KAWOUEmYB"},"isPartOf":{"@type":"WebPage","url":"https://daily.dev/squads/laraveldev","name":"Laravel Dev"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Laravel Dev","item":"https://daily.dev/squads/laraveldev"},{"@type":"ListItem","position":3,"name":"From dd() to Ray: A Debugging Workflow That Doesn't Break Your Flow"}]}
```

