Sending logs from actions and loaders to the browser console


Hey y'all,

David here. You signed up for my newsletter at programmingarehard.com. I'm super jazzed about what I have for you today!

One of the inherent benefits of Single Page Apps(SPAs) I took for granted was the logging that comes out of the box via the Network tab in the console. Every api request happens in the browser and you can easily inspect those which is super handy.

Once you move to something like Remix/React Router 7, you become painfully aware that you've lost access to that since most of your api requests are now happening on the server in actions and loaders. This is a Major Bummer 🫡 when coming from the SPA world. Instead, you have to manually log those in your loaders and actions and inspect those where your logs go during development: commonly your terminal or a file.

This kinda stinks for a couple of reasons:

  • Even though I can console.log in my backend code and UI code in the same file, I have to see in them in two different places.
  • The backend logs are strings and can be really hard to inspect any data being logged.

Let's come up with a way to ship our server logs directly to the browser console so we can see those in real time as we're interacting with our apps.

Let me show you exactly how I'm doing this in my app. Or you can read the blog post here.

Hope you find it useful. Have an awesome Thursday ✌️

David

ProgrammingAreHard

For developers looking to learn useful tips and tricks.

Read more from ProgrammingAreHard

React Router Tip Debounce Requests in React Router v7 Have you ever implemented a search input filter for table or grid of data in your app that needs to initiate fetching new, filtered, data? If you want to initiate the requests as the user changes the filter value without having to manually click a submit button you likely want to debounce those requests. Do you use a debounce hook and resort to useEffect to kick of requests?? No! There's a much easier way that doesn't involve adding a...

Hey y'all, David here. You signed up for my newsletter at programmingarehard.com. Sometimes I have ideas I want to test out in my Remix / React Router apps. But.... I don't want the overhead of doing it in my actual apps or, on the opposite end of the spectrum, want to start from a blank slate. I found the address book tutorial and thought that surely the end result was published somewhere. Not the case. So I went ahead and bit the bullet by going through it and pushing the end result to a...

Hey y'all, David here. You signed up for my newsletter at programmingarehard.com. I'm writing to let you know I've just published a new post about simple trick that seems magical if you don't know how it's working behind the scenes: pasting into multiple form fields at once. Pasting into multiple fields at once. Hope it gives you some idea. Have a stellar Wednesday. ✌️ David