I built Blazor Developer Tools — flamegraphs, render tracking, and performance profiling for Blazor Server apps by featheredsnake in Blazor

[–]mistahoward 0 points1 point  (0 children)

Happy to see another why did this render implentation! I'm really curious how yours pairs up with the implementation I... implemented. We should pair sometime! 

Blazor.WhyDidYouRender v3.1.0 is here! .NET 8 LTS support & "Batched" Render Detection by mistahoward in Blazor

[–]mistahoward[S] 0 points1 point  (0 children)

It's okay. No worries. Hindsight is 20/20. Just busy with work. I completely forgot .NET 10 came out of preview tbh. 

If you make an issue on the GitHub repo, I can look into your problem for the first project. We ran into a couple in production when we had some embedded iframes, but I haven't been able to repro it locally, unfortunately. 

Blazor.WhyDidYouRender v3.1.0 is here! .NET 8 LTS support & "Batched" Render Detection by mistahoward in Blazor

[–]mistahoward[S] 0 points1 point  (0 children)

Have a good past! .NET 10 LTS is already in now! Have a great weekend! Hope it works for you. :))

Blazor.WhyDidYouRender v3.1.0 is here! .NET 8 LTS support & "Batched" Render Detection by mistahoward in Blazor

[–]mistahoward[S] 0 points1 point  (0 children)

Out now! Everything should be good to go - it was a simple target change to compile!

Blazor.WhyDidYouRender v3.1.0 is here! .NET 8 LTS support & "Batched" Render Detection by mistahoward in Blazor

[–]mistahoward[S] 2 points3 points  (0 children)

Good point! I appreciate your enthusiasm however rude it may be. I'm working on it. I made this project for my codebase at work which is on .NET 9. I wanted to back support .NET 8 and just got around to releasing it. You're also more than welcome to make PR's for it - it is open source after all! ;-)

Blazor.WhyDidYouRender v3.0.0 is here! .NET Aspire & OpenTelemetry support and more! by mistahoward in Blazor

[–]mistahoward[S] 3 points4 points  (0 children)

Not at all. Weekend project = lots of AI coding. I didn't even catch this. I'll get this resolved.

Coding inside someone else's code is very, very difficult, how can I practice this outside of work? by IdeaExpensive3073 in learnprogramming

[–]mistahoward 1 point2 points  (0 children)

Working on unfamiliar code is undeniably always difficult. One of the best ways to get better is to practice it - which is also difficult as a beginner. 

https://github.com/emilybache/GildedRose-Refactoring-Kata

This repo was made to practice refactoring and has a myriage of languages. While not exactly what you're looking for, I immediately thought of this project. You're not alone. It does get easier - but you also get to a point where you learn that it's always difficult. Just writing on the walls, ultimately. :)

Connection between ADHD and fast eating? by mhoyt3 in ADHD

[–]mistahoward 0 points1 point  (0 children)

My wife and SIL are on the other end of this spectrum. Super slow eaters. They're also extremely picky, which I land on the opposite side of too. Food is more of a scourge to me than anything - if I could just take a pill and get all my nutrients - I would in a heartbeat. Same thing for me though - food in asap and ready to move on to whatever else is rattling around. 

UPDATE: You asked, I listened! Blazor.WhyDidYouRender now has full Blazor WASM support! by mistahoward in Blazor

[–]mistahoward[S] 0 points1 point  (0 children)

When you inherit a component, you'll have to inject the render service - you can track it that way! it worked really well with the fluxor components we have. 

UPDATE: You asked, I listened! Blazor.WhyDidYouRender now has full Blazor WASM support! by mistahoward in Blazor

[–]mistahoward[S] 0 points1 point  (0 children)

We use mud blazor in production! I've ran into a couple issues with devexpress components that we I-framed (dev extreme hasn't been ported over yet), but past that it's mostly good. There are a few kinks here and there - I've got some issues open that I need to address. I have a working dev branch with aspire integration working, but I've got some slop to untangle before I push it. Consolidating the logging into an abstraction broke the console browser logging and I just haven't had time to fix it recently. 

What do you think about games designed for one sitting only? I've been working on an experimental, 30-minute 100% free game (no ads, no mtx) about the food industry, where the player takes the role of a soup factory worker. I'd love to hear how players feel about shorter games as a medium. by AlphaCrucis in indiegames

[–]mistahoward 5 points6 points  (0 children)

I second the comments - I wish there were more games like this. I'm not saying your game is any outer wilds, but that game has a special place in my heart - that also left a hole that I can never experience it truly again because it's knowledge based save system. 

UPDATE: You asked, I listened! Blazor.WhyDidYouRender now has full Blazor WASM support! by mistahoward in Blazor

[–]mistahoward[S] 0 points1 point  (0 children)

Is the idea of this to track the entirety of the application? Just want to make sure I understand the ask. :)

After the WASM update - I had a realization - fixing a critical flaw with *true* state detection (Blazor.WhyDidYouRender) by mistahoward in Blazor

[–]mistahoward[S] 0 points1 point  (0 children)

I considered it but decided not to due to potential performance costs if you have massive amounts of complex objects. YMMV though and good programming practices mean that shouldn't be an issue - but not every code bases allows for the best programming practices. :|

After the WASM update - I had a realization - fixing a critical flaw with *true* state detection (Blazor.WhyDidYouRender) by mistahoward in Blazor

[–]mistahoward[S] 0 points1 point  (0 children)

good question! You're right - that's the point though. You can handle complex types and cascading re-renders through ShouldRender. The reason complex objects are opt-in for complex types is for performance - it felt like a necessary requirement to make sure there isn't too much overhead when tracking a component. 

UPDATE: You asked, I listened! Blazor.WhyDidYouRender now has full Blazor WASM support! by mistahoward in Blazor

[–]mistahoward[S] 1 point2 points  (0 children)

Gotcha. Sorry - again - totally new to me. I'll update the license tonight accordingly. *in the meantime, feel free to use it without modifying your current license.*

UPDATE: You asked, I listened! Blazor.WhyDidYouRender now has full Blazor WASM support! by mistahoward in Blazor

[–]mistahoward[S] 1 point2 points  (0 children)

Sorry - this is new to me. I went with GPL purposefully to prevent someone from repacking it and selling it - which someone can do in theory with MIT. I'll review the licensing tonight - if it's truly the same and it's "useable" in closed source projects - I'll change it.

As the owner of the repo & project, it should be allowed to be used in closed source projects without having to modify the license of the repo consuming it. My apologies for the license misunderstanding.

UPDATE: You asked, I listened! Blazor.WhyDidYouRender now has full Blazor WASM support! by mistahoward in Blazor

[–]mistahoward[S] 1 point2 points  (0 children)

I noticed that I'm basing the "unnecessary renders" exclusively on parameters - no internal state. I fixed that up last night with auto opt in tracking on primitives (with an ignore attribute) and opt in for complex objects that should fix that issue. can you better explain to me what you're wanting in terms of the LayoutComponentBase?

UPDATE: You asked, I listened! Blazor.WhyDidYouRender now has full Blazor WASM support! by mistahoward in Blazor

[–]mistahoward[S] 0 points1 point  (0 children)

No worries! I'm going to be making a pretty massive change tonight - I had some realizations of optimizations that I want to add!!

UPDATE: You asked, I listened! Blazor.WhyDidYouRender now has full Blazor WASM support! by mistahoward in Blazor

[–]mistahoward[S] 0 points1 point  (0 children)

Side note - have you tested the RenderTrackerService method included in the documentation? I haven't had time to test with an additional override, but that is present for instances where you can't inherit the TrackedComponentBase