The Ray blog

Shining a light on internals and updates.

Mixing up our styling recipe for Ray v3

When it comes to styling, Tailwind is almost always our go-to choice, and Ray is no exception. Its utility-first approach provides a solid foundation. But while Tailwind provides a solid foundation, it doesn’t directly answer questions like: How do we handle component variants? How do we override styles cleanly? Or how do we compose styles in a way that remains scalable?

Sébastien

IPC in Electron

In Ray 3.0, we updated how the renderer and main processes communicate within our Electron app. While we’re still using the familiar React and Electron stack, we switched to a more dynamic, event-driven approach for IPC. This change simplifies communication, better integrates with React’s lifecycle, and adds security by whitelisting events. By drawing from existing community solutions, we’ve made our IPC system more efficient and easier to maintain.

Sébastien

Using Ray with your Pest tests

Learn how to use Ray and Pest together to streamline debugging in Laravel, including opening separate Ray windows for tests and automatically checking for stray Ray calls before production. Plus, explore Pest’s architecture tests and a handy Ray inspection method for quick value checks.

Tim

Our mysterious control components

In this post, we introduce the concept of control components in React, a pattern we often use at Spatie to handle data collection and event responses. We’ll discuss our opinionated approach and share practical examples to illustrate this method.

Sébastien

Ray's architecture: how we structure an Electron app

At Laracon US, Freek from Spatie unveiled updates on Ray 3.0, which will feature a complete visual redesign to enhance user experience. The new version aims to improve performance, scalability, and maintainability by revising the codebase and application architecture. The team is rethinking its folder structure for better organization. The goal is to create a more stable and scalable application, with ongoing adjustments as development progresses.

Sébastien

Using Ray inside your Blade views

Learn how to use Ray for debugging in Blade views.

Tim

Leveraging the Power of Macros in Ray

One of Ray's powerful features you might not have heard of is adding your own logic to it via macros. Macros in Ray allow you to define custom methods that can be reused throughout your application, making debugging more efficient and tailored to your needs.

Tim

Handling email testing in Laravel with Ray

Testing emails in Laravel has never been easier.

Zuzana

Pausing and disabling Ray execution

An easy way to pause or disable Ray execution.

Zuzana

Clearing Ray output

Frequent Ray calls can lead to a long and cluttered Ray log. However, you can take control of the log and clear it at various tages of the application and testing lifecycle.

Zuzana

Let's celebrate with Ray

Don't let debugging get to you, let's celebrate!

Zuzana

Looking deeper into code with Ray

Use Ray to look where your code is called and how many times.

Zuzana

Ray now supports Laravel 11's Context

Laravel 11 recently introduced a nice new feature called Context. We’ve updated Ray with a convenient method to display all set context.

Freek

The ingredients we used for our new Ray docs

We recently revamped our Ray documentation. The goal was to give the docs a new home on the myray.app domain and make them easier to navigate by totally overhauling their structure and content. This blog post will give an overview of some packages, technologies, and techniques we used.

Tim

Adding wire:navigate to Markdown links

We just released our new Ray docs, check 'em out if you haven't already! They're hosted right here on myray.app and are extra snappy because they use Livewire's navigate feature. Here's how we added wire:navigate to all the links in our docs.

Sebastian

Customizing Ray output

Customizing Ray's output window.

Zuzana

Automatically remove Ray calls from your code

This solves the problem of you forgetting to manually remove ray calls in your code base.

Tim

Pest comes with Ray integration out of the box

Pest is an excellent test runner for PHP, that’s been getting more popular. It offers a developer friendly way of writing tests. At Spatie, we use it for all our projects. Did you know that Pest comes with Ray support out of the box? Let’s take a look at this very simple test from one of our own packages.

Freek

Sniffing out stray ray() calls with Pest architecture testing

Whether you're building a shiny new feature or refactoring a bug deep in a legacy codebase, before you merge your work to production you want to get rid of all those ray() calls you littered the codebase with. You'll probably get rid of most of them on time, but every now and then a stray call gets forgotten during code review.

Sebastian

Automatically starting Ray on MacOS

Using a bit of AppleScript, you can automatically start the Ray desktop app from your PHP code.

Freek

Understand and fix bugs faster

Ray is a desktop application that serves as the dedicated home for debugging output. Send, format and filter debug information from both local projects and remote servers.