Strongtie Design System
Getting StartedComponents

Command Palette

Search for a command to run...

Getting Started
  • Introduction
  • Setup Guide
  • Package Installation
  • Code Quality Setup
  • Migration Guide
  • Resources
Registry
  • Getting Started
  • Combobox
  • Datepicker
  • MultiSelect
  • Tree
Guides
  • Framework Recommendations
Foundations
  • States
  • Variables
Components
  • Accordion
  • Alert
  • Alert Dialog
  • Avatar
  • Badge
  • Breadcrumb
  • Button
  • Button Group
  • Calendar
  • Card
  • Carousel
  • Chart
  • Checkbox
  • Collapsible
  • Command
  • Combobox
  • Context Menu
  • Date Picker
  • Dialog
  • Drawer
  • Dropdown Menu
  • Empty
  • Field
  • Hover Card
  • Input
  • Input Group
  • Item
  • Kbd
  • Label
  • Menubar
  • Multi Select
  • Navigation Menu
  • Pagination
  • Popover
  • Progress
  • Radio Group
  • Scroll Area
  • Select
  • Separator
  • Sheet
  • Sidebar
  • Skeleton
  • Slider
  • Switch
  • Table
  • Tabs
  • Textarea
  • Toaster
  • Toggle
  • Toggle Group
  • Tooltip
  • Tree
2026 Simpson Strong-Tie
  1. Docs
  2. Moving Away from Telerik UI for Blazor

Moving Away from Telerik UI for Blazor

PreviousNext

Why we recommend React and modern alternatives for new projects and how to migrate existing Blazor applications using Telerik.

If you're considering Telerik UI for Blazor for a new project or maintaining an existing Blazor application with Telerik components, this guide will help you understand the limitations and explore better alternatives.

Creating a new application? We strongly recommend against using Telerik UI for Blazor for new projects. Instead, use the modern @strongtie/design-system React components for better performance, smaller bundle sizes, improved developer experience, and long-term maintainability.


Why We Recommend Against Telerik UI for Blazor

Telerik UI for Blazor was designed for .NET/Blazor applications, but this approach has significant drawbacks compared to modern React development. Here's why we recommend React with the Strongtie Design System instead:

1. Blazor vs. React Ecosystem

Using Blazor with Telerik ties you to a smaller, more limited ecosystem compared to React:

⚠️Smaller Community

Blazor has a fraction of React's community size. React has millions of developers worldwide, while Blazor's community is significantly smaller, meaning fewer resources, examples, and third-party solutions.

📦Monolithic Architecture

Telerik delivers components as large, pre-compiled bundles. Modern design systems like Strongtie use tree-shakeable modules, so you only ship the code you actually use.

🎨Limited Customization

Customizing Telerik styles often requires overriding specific CSS selectors with high specificity. Strongtie uses CSS custom properties and composition patterns for straightforward theming.

♿Accessibility Gaps

Modern design systems prioritize WCAG 2.1 AA compliance from the ground up. Achieving the same level of accessibility with Telerik requires additional work and testing.

2. Bundle Size and Performance

Modern design systems deliver better performance through smaller, optimized bundles:

Why This Matters:

  • Faster page loads – Smaller JavaScript bundles mean faster time-to-interactive
  • Better mobile experience – Reduced bundle size especially benefits users on slower connections
  • Improved Core Web Vitals – Better performance metrics affect SEO and user experience
  • Lower bandwidth costs – Smaller assets reduce data transfer costs at scale

Performance Best Practice: Modern web applications should prioritize small, tree-shakeable component libraries that only ship the code you use. CSS-in-JS or scoped CSS approaches prevent unused styles from bloating your bundles.

3. Developer Experience

Modern React development has evolved significantly, and developer experience matters:

4. Licensing and Total Cost of Ownership

Consider the full cost of your UI component choice:

Telerik Considerations:

  • Commercial license required for many components
  • Per-developer pricing model
  • Annual renewal costs
  • Support contract expenses

Strongtie Design System:

  • Free for all Strongtie projects
  • No per-developer fees
  • No annual renewals
  • Community support and internal UX team assistance

Hidden Costs to Consider:

  • Maintenance burden – Time spent working around limitations
  • Developer velocity – How quickly can your team ship features?
  • Hiring pool – How easy is it to find developers with relevant experience?
  • Technical debt – Will this choice require a future rewrite?

5. Maintenance and Ecosystem

Long-term sustainability matters for enterprise applications:

React Ecosystem Advantages:

  • Massive community (millions of developers worldwide)
  • Extensive third-party library support
  • Regular updates and security patches
  • Strong backing from Meta and the open-source community
  • Large hiring pool of experienced developers

Blazor Considerations:

  • Smaller community means fewer resources and examples
  • Dependency on Microsoft for .NET WebAssembly updates
  • Performance constraints inherent to WASM approach (large bundles, slow startup)
  • Smaller pool of developers with Blazor expertise
  • Slower iteration on features compared to JavaScript ecosystem

Long-term Thinking: When choosing technology, consider not just today's needs but the next 3-5 years. Can you easily hire developers? Will the technology be maintained? Are you building on a growing or declining platform?

6. Modern Standards and Best Practices

Web development best practices have evolved:

Modern Expectations:

  • ✅ Component-driven architecture – Small, reusable, composable pieces
  • ✅ TypeScript by default – Type safety and better developer experience
  • ✅ Accessibility-first – WCAG compliance built in, not bolted on
  • ✅ Performance budgets – Tree-shaking and code splitting
  • ✅ Design tokens – Systematic approach to design consistency
  • ✅ Responsive by default – Mobile-first, adaptive layouts

The Strongtie Design System embraces these standards. Older component libraries may require additional work to meet modern expectations.


What About Existing Blazor + Telerik Applications?

If you currently have a Blazor application using Telerik UI components, here's our guidance:

Maintenance Mode (Short Term)

For applications in maintenance mode with no major feature development:

Pin Your Version

Lock to a specific version to prevent breaking changes:

<!-- Pin to specific version, don't use "latest" -->
<link rel="stylesheet" href="https://cdn.strongtie.io/ui-kit/2.2.2/ui-kit.css" />

Document Customizations

Create documentation of all customizations and workarounds for future maintainers.

Plan for Eventual Migration

Begin planning a migration strategy for when major features or redesigns are needed.

Active Development (Consider Migration)

For applications under active development, consider migrating to modern alternatives:

Gradual approach recommended – You don't need to rewrite everything at once. Use a component-by-component migration strategy to modernize while continuing to deliver features.


Migration Strategy

Here's how to migrate from a Blazor + Telerik application to React with the Strongtie Design System:

Important: This migration involves changing both the UI framework (Blazor → React) and the component library (Telerik → Strongtie). This is a significant undertaking but offers substantial long-term benefits. See our Framework Recommendations guide for more details on migrating from Blazor to React.

Phase 1: Assessment (2-4 weeks)

Inventory Current Usage

Audit your Blazor application to identify: - Which Telerik UI for Blazor components are being used - Which C# backend code is shared with the frontend

  • How much business logic is in Blazor components vs. API layer - Current bundle sizes and performance metrics

    Identify Migration Priorities

    Prioritize based on: - High traffic pages – Maximum user impact - Frequently changed features – Reduce future maintenance burden - Simple components first – Build momentum with quick wins - Performance bottlenecks – Target slow-loading pages

    Set Success Metrics

    Define measurable goals: - Bundle size reduction targets - Page load time improvements - Developer velocity improvements - Accessibility compliance scores

Phase 2: Setup (2-3 weeks)

Create React Project

Set up a new React application alongside your Blazor app: bash # Using Vite (recommended) npm create vite@latest my-app -- --template react-ts cd my-app npm install @strongtie/design-system sonner Or use Next.js for server-side rendering capabilities: bash npx create-next-app@latest my-app --typescript --tailwind --app cd my-app npm install @strongtie/design-system sonner

Set Up API Layer

Create or refactor your backend to expose APIs that React can consume: - Convert Blazor component logic to REST or GraphQL APIs - Ensure authentication/authorization works for both apps during transition - Set up CORS if React app is on different domain - Document API endpoints for frontend team

Create Migration Guidelines

Document patterns for your team: - Telerik Blazor → Strongtie React component mapping - C# → TypeScript conversion patterns - API endpoint usage from React

  • Testing requirements for both apps - Deployment and rollout procedures

Phase 3: Gradual Migration (6-18 months)

Choose a migration approach that fits your application. Note: Migrating from Blazor to React takes longer than just changing component libraries, as you're also migrating the entire frontend framework.

Recommended Approach: Build New in React, Maintain Old in Blazor

Rather than converting Blazor components to React, we recommend:

  1. Continue maintaining existing Blazor app (freeze new features)
  2. Build new features in React
  3. Gradually move high-value pages/features to React
  4. Run both apps in parallel during transition
  5. Decommission Blazor app once React app reaches feature parity

Best for: Most Blazor to React migrations Approach: 1. Build React app alongside existing Blazor app 2. Share authentication/session between apps 3. Build new features in React only 4. Gradually rebuild high-value Blazor pages in React 5. Use routing to direct users to React or Blazor version 6. Decommission Blazor app once complete Example Timeline: 1. Month 1-2: Set up React app, API layer, auth 2. Month 3-4: Build first feature in React, test deployment 3. Month 5-8: New features in React, start migrating key pages 4. Month 9-12: Continue migrating important pages 5. Month 13-18: Migrate remaining pages, decommission Blazor Benefits: - Low risk - both apps run independently - Can pause migration if needed - Team learns React incrementally - Users don't notice transition Timeline: 12-18 months for most applications

Phase 4: Cleanup and Decommission (4-6 weeks)

Decommission Blazor Application

Once all features are migrated to React: - Remove Blazor project from solution

  • Archive Blazor code repository for reference - Update deployment pipelines to only deploy React app - Redirect all Blazor routes to React equivalents

    Clean Up Backend

    Remove Blazor-specific backend code: - Remove Blazor-specific endpoints if any
  • Clean up Blazor authentication middleware - Remove SignalR for Blazor if used - Simplify to REST/GraphQL APIs only

    Update Documentation

    - Remove Blazor/Telerik references from developer docs - Document new React patterns and conventions - Update onboarding docs for new developers - Archive C#/Blazor code examples for reference

    Measure Results

    Document improvements achieved: - Bundle size reduction (Blazor WebAssembly vs React) - Page load time improvements - Developer velocity improvements - Accessibility scores - Team satisfaction with React vs Blazor

Timeline Expectations

Realistic timelines for Blazor → React migration (longer than component-only migration):

Application SizeEstimated TimeNotes
Small (< 20 pages)6-9 monthsIncludes learning React, API setup
Medium (20-50 pages)9-12 monthsGradual migration strongly recommended
Large (50-100 pages)12-18 monthsRequires dedicated resources
Enterprise (100+ pages)18-24 monthsNeed dedicated migration team

Note: These timelines account for both framework migration (Blazor → React) AND component migration (Telerik → Strongtie). The framework change is the larger effort.

Pro tip: Ship incrementally. A working migration beats a perfect plan that never ships. Focus on delivering value at each step.


Component Migration Guide

Map your Telerik UI for Blazor components to Strongtie React equivalents:

Common Components

Telerik Blazor ComponentStrongtie React EquivalentNotes
TelerikButton<Button>Convert C# event handlers to TypeScript
TelerikTextBox<Input>Use controlled component pattern
TelerikDropDownList<Select>React state management for selection
TelerikWindow<Dialog>Convert Blazor @ref to React refs
TelerikTabStrip<Tabs>Simpler API, better keyboard nav
TelerikMenu<DropdownMenu>Flexible composition pattern
TelerikDatePicker<DatePicker> or native inputDate handling with date-fns
TelerikNotification<Toast> (via sonner)Better positioning and stacking
TelerikCard<Card>Composition-based component
TelerikGrid<Table> or TanStack TableSee below for data grid options

Complex Components

Some components may require third-party libraries:


Code Example Comparison

Before: Blazor with Telerik

@* Blazor component with Telerik UI *@
@page "/contact"
 
<EditForm Model="@formData" OnValidSubmit="HandleSubmit">
    <div class="form-group">
        <label for="name">Name:</label>
        <TelerikTextBox Id="name" @bind-Value="@formData.Name" />
    </div>
    <div class="form-group">
        <label for="email">Email:</label>
        <TelerikTextBox Id="email" @bind-Value="@formData.Email" InputMode="email" />
    </div>
    <TelerikButton ButtonType="ButtonType.Submit" ThemeColor="primary">
        Submit
    </TelerikButton>
</EditForm>
 
@code {
    private ContactFormModel formData = new();
 
    private async Task HandleSubmit()
    {
        // Handle form submission
        await ContactService.SubmitAsync(formData);
    }
 
    public class ContactFormModel
    {
        public string Name { get; set; }
        public string Email { get; set; }
    }
}

After: React with Strongtie

// React component with Strongtie Design System
import { useState } from "react"
import { Button } from "@strongtie/design-system/button"
import { Input } from "@strongtie/design-system/input"
import { Label } from "@strongtie/design-system/label"
 
interface ContactFormData {
  name: string
  email: string
}
 
export function ContactForm() {
  const [formData, setFormData] = useState<ContactFormData>({
    name: "",
    email: "",
  })
 
  const handleSubmit = async (e: React.FormEvent) => {
    e.preventDefault()
    // Handle form submission - call REST API
    await fetch("/api/contact", {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify(formData),
    })
  }
 
  return (
    <form onSubmit={handleSubmit} className="space-y-4">
      <div>
        <Label htmlFor="name">Name:</Label>
        <Input
          id="name"
          type="text"
          value={formData.name}
          onChange={(e) => setFormData({ ...formData, name: e.target.value })}
        />
      </div>
      <div>
        <Label htmlFor="email">Email:</Label>
        <Input
          id="email"
          type="email"
          value={formData.email}
          onChange={(e) => setFormData({ ...formData, email: e.target.value })}
        />
      </div>
      <Button type="submit">Submit</Button>
    </form>
  )
}

Key Differences:

  • ✅ TypeScript instead of C# (familiar syntax for C# developers)
  • ✅ Type-safe with interfaces
  • ✅ Controlled component pattern (explicit state management)
  • ✅ Direct API calls instead of service injection
  • ✅ Much smaller bundle size (no WebAssembly runtime)
  • ✅ Faster initial page load

Getting Help

Our team is here to support your migration:

🛠️Technical Consultation

Schedule a call with our engineering team to discuss your migration strategy and get architectural guidance.

Contact Engineering

🎨UX Design Support

Work with our UX team to ensure migrated components match design standards and improve user experience.

Contact UX Team

Resources

  • Strongtie Design System Components – Browse available components
  • Installation Guide – Get started quickly
  • Framework Recommendations – Choose the right framework
  • GitHub Issues – Report bugs or request features

Frequently Asked Questions


Conclusion

If you're building a Blazor application with Telerik UI components, consider the long-term implications. While Blazor and Telerik can work for specific use cases, React with the Strongtie Design System offers significant advantages in performance, developer experience, ecosystem size, and long-term maintainability.

For new projects: Choose React with Strongtie Design System from day one. See our Framework Recommendations guide for a detailed comparison of React vs. Blazor.

For existing Blazor + Telerik projects: Plan a gradual migration to React. While this is a significant undertaking (you're migrating both the framework and component library), the long-term benefits in developer velocity, performance, and maintainability make it worthwhile.

Ready to start? Our team is here to help you plan and execute your migration successfully.

Schedule Consultation

Get Started with Strongtie
AI Agent SkillsAccordion

On This Page

Why We Recommend Against Telerik UI for Blazor1. Blazor vs. React Ecosystem2. Bundle Size and Performance3. Developer Experience4. Licensing and Total Cost of Ownership5. Maintenance and Ecosystem6. Modern Standards and Best PracticesWhat About Existing Blazor + Telerik Applications?Maintenance Mode (Short Term)Active Development (Consider Migration)Migration StrategyPhase 1: Assessment (2-4 weeks)Phase 2: Setup (2-3 weeks)Phase 3: Gradual Migration (6-18 months)Phase 4: Cleanup and Decommission (4-6 weeks)Timeline ExpectationsComponent Migration GuideCommon ComponentsComplex ComponentsCode Example ComparisonBefore: Blazor with TelerikAfter: React with StrongtieGetting HelpResourcesFrequently Asked QuestionsConclusion

Contribute

  • Report an issue
  • Request a feature
  • Edit this page