 Hey, so it's day 23, but I'm not gonna lie to you. I, it's actually the 24th today. I don't know if you can hear in my voice, but I was so sick yesterday, I could not record. So this is coming to you a day late and I apologize for that, but it's the 20, day 23. Oh man, I don't know why, but I just, I get sick every year around this time, right around Christmas time. It's like my thing. So what I wanna show you today is how to extract an effect, okay? How to make a custom effect. So we have pulled, and I apologize, my brain is kind of foggy still, so everything might not be great. But we have pulled, we have this width state that we're using, and then also we're using use effect to kind of observe window resizing. And so if we watch this window width is 800, well, that changes as we resize the window. Now, this is such a useful thing that it would be awesome if we could extract it out into its own custom hook and just be able to use that instead of having to reconstruct this every time, right? Now I wanna show you this because it's a really simple thing. We can just take that, delete it, or cut it, I guess, and we can put it in its own function. So that function would look like this, function, use. Now use, that use prefix is just kind of the standard for hooks, and it's just a convention, but all hooks should start with use. So we'll do that. And we'll call it use window width, okay, great. And then we'll close that up. Now what we need to do, there's only one thing that we need to change about this once we've created this, and that is to return the width, okay? And now we can return anything that we want, but this particular one, it makes sense to just return the width. Now we can use that, use our custom hook here. So we'll say let width equal use window width. And there we go, everything still works like it did before. Now, for your exploration, try adding some arguments. So if you wanted to, we could, if we wanted to not have the window width directly, but we wanted to have the initial be settable, so initial width, now we can pass that in as an argument, and we could set that using something else. So obviously that still works. If nothing is passed in, we could pass in a default window width, and now you could use it either way. You could pass in a different width, or you could just use rely on the default, which we're using here, and everything still works. I'm not feeling well, so I'm gonna call that a day. Explore making your own custom hooks, and that's day 23.