blazor-expert

Comprehensive Blazor development expertise covering Blazor Server, WebAssembly, and Hybrid apps. Use when building Blazor components, implementing state management, handling routing, JavaScript interop, forms and validation, authentication, or optimizing Blazor applications. Includes best practices,

By markpitt · 667 installs

npx skills add markpitt/claude-skills --skill blazor-expert

Source repository · Upstream listing

Blazor Expert Orchestration Hub Expert level guidance for developing applications with Blazor, Microsoft's framework for building interactive web UIs using C instead of JavaScript. Quick Reference: When to Load Which Resource Task Load Resource Key Topics Build components, handle lifecycle events [components lifecycle.md](resources/components lifecycle.md) Component structure, lifecycle methods, parameters, cascading values, RenderFragment composition Manage component state, handle events [state management events.md](resources/state management events.md) Local state, EventCallback, data binding, cascading state, service based state Configure routes, navigate between pages [routing navigation.md](resources/routing navigation.md) Route parameters, constraints, navigation, NavLink, query strings, layouts Build forms, validate user input [forms validation.md](resources/forms validation.md) EditForm, input components, DataAnnotations validation, custom validators Setup authentication & authorization [authentication authorization.md](resources/authentication authorization.md) Auth setup, AuthorizeView, Authorize attribute, policies, claims Optimize performance, use JavaScript interop [performance advanced.md](resources/performance advanced.md) Rendering optimization, virtualization, JS interop, lazy loading, WASM best practices Orchestration Protocol Phase 1: Task Analysis Identify your primary objective: UI Building → Load components lifecycle.md State Handling → Load state management events.md Navigation → Load routing navigation.md Data Input → Load forms validation.md User Access → Load authentication authorization.md Speed/Efficiency → Load performance advanced.md Phase 2: Resource Loading Open the recommended resource file(s) and search for your specific need using Ctrl+F. Each resource is organized by topic with working code examples. Phase 3: Implementation & Validation Follow code patterns from the resource Adapt to your specific requirements Test in appropriate hosting model (Server/WASM/Hybrid) Review troubleshooting section if issues arise Blazor Hosting Models Overview Blazor Server How : Runs on server via SignalR Best For : Line of business apps, need full .NET runtime, small download size Trade offs : High latency, requires connection, server resource intensive Blazor WebAssembly How : Runs in browser via WebAssembly Best For : PWAs, offline apps, no server dependency, client heavy applications Trade offs : Large initial download, limited .NET APIs, slower cold start Blazor Hybrid How : Runs in MAUI/WPF/WinForms with Blazor UI Best For : Cross platform desktop/mobile apps Trade offs : Platform specific considerations, additional dependencies Decision : Choose based on deployment environment, offline requirements, and server constraints. Common Implementation Workflows Scenario 1: Build a Data Entry Component 1. Read [components lifecycle.md](resources/components lifecycle.md) Component structure section 2. Read [state management events.md](resources/state management events.md) EventCallback pattern 3. Read [forms validation.md](resources/forms validation.md) EditForm component 4. Combine: Create component with parameters → capture user input → validate → notify parent Scenario 2: Implement User Authentication & Protected Pages 1. Read [authentication authorization.md](resources/authentication authorization.md) Setup section 2. Read [routing navigation.md](resources/routing navigation.md) Layouts section 3. Read [authentication authorization.md](resources/authentication authorization.md) AuthorizeView section 4. Combine: Configure auth → create login page → protect routes → check auth in components Scenario 3: Build Interactive List with Search/Filter 1. Read [routing navigation.md](resources/routing navigation.md) Query strings section 2. Read [state management events.md](resources/state management events.md) Data binding section 3. Read [performance advanced.md](resources/performance advanced.md) Virtualization section 4. Combine: Capture search input → update URL query → fetch filtered data → virtualize if large Scenario 4: Optimize Performance of Existing App 1. Read [performance advanced.md](resources/performance advanced.md) All sections 2. Identify bottlenecks: Unnecessary renders? → ShouldRender override, @key directive Large lists? → Virtualization JS latency? → Module isolation pattern 3. Apply targeted optimizations from resource Key Blazor Concepts Component Architecture Components : Self contained UI units with optional logic Parameters : Inputs to components, enable reusability Cascading Values : Share state with descendants without explicit parameters Events : Child to parent communication via EventCallback Layouts : Parent wrapper for consistent page structure State Management Local State : Component specific fields and properties Cascading Values : Share state to descendants Services : Application wide state via dependency injection Event Binding : React to user interactions Data Binding : Two way synchronization with UI Routing & Navigation @page Directive : Make component routable Route Parameters : Pass data via URL ( {id:int} ) Navigation : Programmatic navigation via NavigationManager NavLink : UI component that highlights active route Layouts : Wrap pages with common structure Forms & Validation EditForm : Form component with validation support Input Components : Typed controls (InputText, InputNumber, etc.) Validators : DataAnnotations attributes or custom logic EventCallback : Notify parent of form changes Messages : Display validation errors to user Authentication & Authorization Claims & Roles : Identify users and define access levels Policies : Fine grained authorization rules Authorize Attribute : Protect pages from unauthorized access AuthorizeView : Conditional rendering based on permissions AuthenticationStateProvider : Get current user information Performance Optimization ShouldRender() : Prevent unnecessary re renders @key Directive : Help diffing algorithm match list items Virtualization : Render only visible items in large lists JS Interop : Call JavaScript from C and vice versa AOT/Trimming : Reduce WASM download size (production) Best Practices Highlights Component Design ✅ Single Responsibility Each component has one clear purpose ✅ Composition Use RenderFragments for flexible layouts ✅ Parameter Clarity Use descriptive names, mark required with [EditorRequired] ✅ Proper Disposal Implement IDisposable to clean up resources ✅ Event Based Communication Use EventCallback for child to parent updates State Management ✅ EventCallback Over Action Proper async handling ✅ Immutable Updates Create new objects/collections, don't mutate ✅ Service Based State Use scoped services for shared state ✅ Unsubscribe from Events Prevent memory leaks in Dispose ✅ InvokeAsync for Background Threads Thread safe state updates Routing & Navigation ✅ Route Constraints Use :int , :guid , etc. to validate formats ✅ NavLink Component Automatic active state highlighting ✅ forceLoad After Logout Clear client side state ✅ ReturnUrl Pattern Redirect back after login ✅ Query Strings Preserve filters/pagination across navigation Forms & Validation ✅ EditForm + DataAnnotationsValidator Built in validation ✅ ValidationMessage Show field level errors ✅ Custom Validators Extend for complex rules ✅ Async Validation Check server availability before submit ✅ Loading State Disable submit button while processing Authentication & Authorization ✅ Server Validation Never trust client side checks alone ✅ Policies Over Roles More flexible authorization rules ✅ Claims for Details Store user attributes in claims ✅ Cascading AuthenticationState Available in all components ✅ Error Boundaries Graceful error handling Performance ✅ @key on Lists Optimize item matching ✅ ShouldRender Override Prevent unnecessary renders ✅ Virtualization for Large Lists Only render visible items ✅ JS Module Isolation Load and cache JS modules efficiently ✅ AOT for WASM Production deployments Common Troubleshooting Component Not Re rendering Cause : Mutation instead of reassignment Fix : Create new object/collection: items = items.Append(item).ToList() Or : Call StateHasChanged() manually Parameter Not Updating Cause : Parent not re rendering or same object reference Fix : Parent must re render, ensure new reference for objects Debug : Check OnParametersSet is firing JS Interop Errors Cause : Called before script loaded or wrong function name Fix : Use firstRender check, verify JS file path Pattern : Use module isolation: await JS.InvokeAsync("import", "./script.js") Authentication State Not Available Cause : Cascading parameter not provided or timing issue Fix : Ensure AuthenticationStateProvider configured Pattern : Always null check and use await AuthStateTask! in code block Large List Performance Issues Cause : Rendering all items in DOM Fix : Use Virtualize component for 1000+ items Alternative : Paginate with buttons/infinite scroll Blazor Server Connection Issues Cause : SignalR connection dropped or configuration issue Fix : Implement reconnection UI, increase timeout Config : Adjust CircuitOptions.DisconnectedCircuitRetentionPeriod Resource Files Summary components lifecycle.md Complete guide to component structure, lifecycle methods, parameters, cascading values, and composition patterns. Essential for understanding Blazor component fundamentals. state management events.md Comprehensive coverage of local and service based state, event handling with EventCallback, data binding patterns, and component communication. Core for interactive UI building. routing navigation.md Complete routing reference including route parameters, constraints, programmatic navigation, query strings, and layout management. Essential for multi page apps. forms validation.md Full forms API with EditForm component, input controls, DataAnnotations validation, custom validators, and form patterns. Required for data entry scenarios. authentication authorization.md Complete auth setup for Server and WASM, AuthorizeView, policies, claims based access control, and login/logout patterns. Necessary for secured applications. performance advanced.md Performance optimization techniques including ShouldRender, virtualization, JavaScript interop patterns, lazy loading, and WASM best practices. Vital for production apps. Implementation Approach When implementing Blazor features: 1. Identify Your Task Match against the decision table above 2. Load Relevant Resource Read the appropriate .md file 3. Find Code Example Search resource for similar implementation 4. Adapt to Your Context Modify for your specific requirements 5. Test Thoroughly Verify in your hosting model 6. Reference Troubleshooting Consult resource if issues arise Next Steps New to Blazor? Start with [components lifecycle.md](resources/components lifecycle.md) Building Data App? Move through: components → state → forms → validation Scaling Existing App? Focus on [performance advanced.md](resources/performance advanced.md) Adding Security? Follow [authentication authorization.md](resources/authentication authorization.md) Version : 2.0 Modular Orchestration Pattern Last Updated : December 4, 2025 Status : Production Ready ✅