Skip to main content
rule official · GitHub

blazor — GitHub Copilot rule: what it does, how to install

Guides GitHub Copilot on Razor component structure, C# 14 features, caching, and state management in Blazor applications.

Install into GitHub Copilot · Manually: put the files in place All methods and platforms ↓
.github/instructions/blazor.instructions.md
Open on GitHub

What blazor does

This rule guides GitHub Copilot when generating code for Blazor Server and Blazor WebAssembly projects. It enforces C# 14 syntax. Features include record types, pattern matching, and global usings. Inline functions stay in smaller .razor components, while complex business logic moves into code-behind files.

The instructions cover lifecycle methods like OnInitializedAsync. Component errors are captured via ErrorBoundary. Form validation relies on FluentValidation or DataAnnotations. For state management, the rule suggests options ranging from Cascading Parameters to Fluxor or scoped container services. All unit tests with xUnit or NUnit must run cross-IDE so contributors do not need paid IDE licenses.

The rule applies to **/*.razor, **/*.razor.cs, and **/*.razor.css files. Projects locked to older C# versions will fail to compile C# 14 constructs generated by Copilot.

What it helps with

  • Separate UI markup and complex business logic into code-behind classes
  • Catch component-level UI errors using ErrorBoundary
  • Prevent unnecessary component re-renders with ShouldRender and StateHasChanged
  • Configure data caching with IMemoryCache or browser localStorage

Example prompts for the agent

  • Move the user data loading logic from UserProfile.razor into a code-behind UserProfile.razor.cs file using OnInitializedAsync
  • Create an edit form with FluentValidation and save changes through an EventCallback
  • Optimize re-renders in DataGrid.razor by implementing ShouldRender

How to install blazor

Manually: put the files in place

.github/instructions/blazor.instructions.md

The applyTo field sets which files it applies to

Step by step, with commands for each platform: AGENTS.md vs CLAUDE.md: what they are and which one to use

Questions about blazor

How do I install blazor in GitHub Copilot?

Save the rule file to .github/instructions/blazor.instructions.md in your repository. GitHub Copilot will automatically apply these instructions to matching Blazor files.

What does the blazor rule do?

It provides instructions for writing idiomatic Blazor code, enforcing C# 14 standards, async lifecycle methods, form validation, and state management patterns.

Which files does this rule apply to?

It applies to files matching the glob patterns **/*.razor, **/*.razor.cs, and **/*.razor.css.

Source text

blazor.instructions.md · MIT
---
description: 'Blazor component and application patterns'
applyTo: '**/*.razor, **/*.razor.cs, **/*.razor.css'
---

## Blazor Code Style and Structure

- Write idiomatic and efficient Blazor and C# code.
- Follow .NET and Blazor conventions.
- Use Razor Components appropriately for component-based UI development.
- Prefer inline functions for smaller components but separate complex logic into code-behind or service classes.
- Async/await should be used where applicable to ensure non-blocking UI operations.

## Naming Conventions

- Follow PascalCase for component names, method names, and public members.
- Use camelCase for private fields and local variables.
- Prefix interface names with "I" (e.g., IUserService).

## Blazor and .NET Specific Guidelines

- Utilize Blazor's built-in features for component lifecycle (e.g., OnInitializedAsync, OnParametersSetAsync).
- Use data binding effectively with @bind.
- Leverage Dependency Injection for services in Blazor.
- Structure Blazor components and services following Separation of Concerns.
- Always use the latest version C#, currently C# 14 features like record types, pattern matching, and global usings.

## Error Handling and Validation

- Implement proper error handling for Blazor pages and API calls.
- Use logging for error tracking in the backend and consider capturing UI-level errors in Blazor with tools like ErrorBoundary.
- Implement validation using FluentValidation or DataAnnotations in forms.

## Blazor API and Performance Optimization

- Utilize Blazor server-side or WebAssembly optimally based on the project requirements.
- Use asynchronous methods (async/await) for API calls or UI actions that could block the main thread.
- Optimize Razor components by reducing unnecessary renders and using StateHasChanged() efficiently.
- Minimize the component render tree by avoiding re-renders unless necessary, using ShouldRender() where appropriate.
- Use EventCallbacks for handling user interactions efficiently, passing only minimal data when triggering events.

## Caching Strategies

- Implement in-memory caching for frequently used data, especially for Blazor Server apps. Use IMemoryCache for lightweight caching solutions.
- For Blazor WebAssembly, utilize localStorage or sessionStorage to cache application state between user sessions.
- Consider Distributed Cache strategies (like Redis or SQL Server Cache) for larger applications that need shared state across multiple users or clients.
- Cache API calls by storing responses to avoid redundant calls when data is unlikely to change, thus improving the user experience.

## State Management Libraries

- Use Blazor's built-in Cascading Parameters and EventCallbacks for basic state sharing across components.
- Implement advanced state management solutions using libraries like Fluxor or BlazorState when the application grows in complexity.
- For client-side state persistence in Blazor WebAssembly, consider using Blazored.LocalStorage or Blazored.SessionStorage to maintain state between page reloads.
- For server-side Blazor, use Scoped Services and the StateContainer pattern to manage state within user sessions while minimizing re-renders.

## API Design and Integration

- Use HttpClient or other appropriate services to communicate with external APIs or your own backend.
- Implement error handling for API calls using try-catch and provide proper user feedback in the UI.

## Testing and Debugging

- All unit testing and integration testing should run cross-IDE (Visual Studio, VS Code, JetBrains Rider) so contributors aren't gated on a paid SKU.
- Test Blazor components and services using xUnit, NUnit, or MSTest.
- Use Moq or NSubstitute for mocking dependencies during tests.
- Debug Blazor UI issues using browser developer tools, and use your IDE's debugger for backend and server-side issues.
- For performance profiling and optimization, use your IDE's diagnostics tools or `dotnet-trace` / `dotnet-counters` for cross-platform profiling.

## Security and Authentication

- Implement Authentication and Authorization in the Blazor app where necessary using ASP.NET Identity or JWT tokens for API authentication.
- Use HTTPS for all web communication and ensure proper CORS policies are implemented.

## API Documentation and Swagger

- Use Swagger/OpenAPI for API documentation for your backend API services.
- Ensure XML documentation for models and API methods for enhancing Swagger documentation.

© github · MIT · github/awesome-copilot

Similar IDE rules

All IDE rules for Frontend and UI →

From the same set732

The whole set →

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor