Bugatti Rimac
AutomotiveCalibration and diagnostics software used to build the world's fastest production electric cars. A Blazor web application working alongside desktop tools on the production line.
- Calibration
- Diagnostics
- Web + desktop
Blazor specialisation
ProCoding is a .NET studio in Split, Croatia (EU). Our Blazor code helps build the world's fastest electric cars, runs battery storage and solar plants, and manages holiday rentals across the Adriatic.

Vlado Pandžić · Founder · Senior .NET architect
14 years in .NET. Lead backend engineer at Bugatti Rimac from 2020 to 2024. You talk to him directly.
@page "/orders"@rendermode InteractiveServer@inject IOrderService Orders <QuickGrid Items="orders" Virtualize="true"> <PropertyColumn Property="o => o.Number" Title="Order" Sortable="true" /> <PropertyColumn Property="o => o.Customer" /> <PropertyColumn Property="o => o.Total" Format="N2" /></QuickGrid> @code { IQueryable<Order>? orders; protected override async Task OnInitializedAsync() => orders = (await Orders.GetOpenAsync()).AsQueryable();}Not demos. Systems that factories, power plants and travel companies run on every day.
Calibration and diagnostics software used to build the world's fastest production electric cars. A Blazor web application working alongside desktop tools on the production line.
Software that runs battery storage and solar plants: when to charge, when to discharge, and what it earns. Built on .NET 9 with a Blazor interface.
The back office that runs a holiday-rental platform on the Adriatic: properties, prices and bookings, managed in Blazor on top of an existing .NET system.
A customer portal with more than 1,300 Blazor components, through which manufacturers follow their product tests and certificates.
Each one has a defined result, so you know what you are paying for before we start.
ForTeams with a Blazor app that is slow, unstable or hard to change.
A prioritised list of fixes, security findings and a walkthrough call with your team.
ForCompanies running ASP.NET Web Forms that need a way forward without stopping the business.
A migration roadmap with an effort range, milestones and risks.
ForTeams building in Blazor who want a senior engineer on call.
A monthly block of hours, used for whatever matters most that month.
Slow Blazor apps are rarely Blazor's fault. It is almost always one of these five.
Oversized components, a missing @key in lists and StateHasChanged called too often. Fixed by splitting components and controlling ShouldRender.
Tens of thousands of rows rendered at once. Virtualize and server-side paging bring them back to instant.
Prerendering runs OnInitializedAsync twice. Persisted component state removes the second call.
Event handlers and timers that are never disposed keep circuits alive. IDisposable and proper service lifetimes stop the leak.
Dropped SignalR circuits on unreliable networks. Reconnection handling and the right render mode for each page.
The old application keeps earning while screens move one by one. No big-bang release, no frozen roadmap.
Every screen, control, report and dependency, with the risky parts marked.
A reverse proxy (YARP) routes each URL to the old or the new app. System.Web adapters share login and session between them.
Each screen is rebuilt in Blazor, usually as Interactive Server, and switched over when it is ready.
When the last screen has moved, the Web Forms application is retired.
Web Forms
<asp:GridView ID="OrdersGrid" runat="server" AutoGenerateColumns="false" OnRowCommand="OrdersGrid_RowCommand"> <Columns> <asp:BoundField DataField="Number" HeaderText="Order" /> <asp:BoundField DataField="Total" HeaderText="Total" DataFormatString="{0:N2}" /> <asp:ButtonField CommandName="Approve" Text="Approve" /> </Columns></asp:GridView>Blazor
<QuickGrid Items="orders"> <PropertyColumn Property="o => o.Number" Title="Order" /> <PropertyColumn Property="o => o.Total" Format="N2" /> <TemplateColumn> <button @onclick="() => Approve(context)">Approve</button> </TemplateColumn></QuickGrid>In .NET 10 every page can use a different render mode. This is our default for business applications.
| Render mode | Use it for | Avoid it when |
|---|---|---|
| Static server rendering | Read-mostly pages, reports, anything that should load instantly and be indexable. | The page needs rich interaction without full reloads. |
| Interactive ServerOur default | Internal business screens on a reliable network. Our default for line-of-business apps. | Users are on unreliable connections, or there are many thousands at once. |
| Interactive WebAssembly | Offline use, high-latency users, or heavy client-side work. | A fast first load matters, or the code must stay on the server. |
| Interactive Auto | Public apps that need a fast first load and later run in the browser. | You do not want to maintain code that runs in both places. |
That is why this website is not built in Blazor: it is a marketing site, so static HTML is the better tool. Your order system is a different story.
Tools
Yes. Blazor is part of ASP.NET Core and ships with every .NET release, and .NET 10 is a long-term support release, supported until November 2028. Microsoft keeps investing in it, with render modes in .NET 8 and further improvements since. The risks in real projects are architectural choices, not the framework disappearing.
For internal business applications, Interactive Server on most screens and static rendering for read-only pages. WebAssembly when users are offline or far away, Auto when a public app needs a fast first load. See the table above.
Yes. Web Forms only runs on .NET Framework 4.8, which gets security fixes but no new features. The migration goes screen by screen behind a reverse proxy, so the old app keeps working until the last screen moves.
For business applications built by .NET teams, often yes: one language, shared models and no separate frontend stack. For public, content-heavy or consumer apps, React has the larger ecosystem. We will tell you which fits.
WPF if the app must stay a Windows desktop application. Blazor if users should reach it from a browser. Blazor Hybrid can also run the same components inside a desktop app.
Usually one of five causes: unnecessary re-renders, grids without virtualization, data loaded twice during prerendering, server memory that keeps growing, or SignalR falling back from WebSockets. The health check finds which ones apply to you.
The health check and the migration assessment are fixed price, agreed after a 30-minute call. Development is billed hourly or as a monthly block of hours.
Yes. Often the most useful thing is joining an existing team for a few weeks, reviewing the architecture and helping set conventions.
A 30-minute call is enough to tell whether we can help and what the first step should be.
Book a 30-minute call →Useful to send with your message