github radzenhq/radzen-blazor v12.0.0
12.0.0

latest release: v12.0.1
one hour ago

12.0.0 - 2026-09-30

Breaking changes

  • RadzenDatePicker - calendar navigation defaults to the new drill-down mode: the calendar title drills up to a month grid and a year grid instead of showing month and year drop-downs. Set NavigationMode="DatePickerNavigationMode.DropDown" to restore the previous behavior.
  • RadzenChart - column, bar, area and waterfall series and their stacked variants include zero in the value axis by default, and line, scatter and stacked line series with all-negative values fit their data instead of ending at zero. Set Range="ValueAxisRange.Data" or Range="ValueAxisRange.IncludeZero" on RadzenValueAxis to restore the previous behavior. RadzenSparkline keeps fitting its data unless its value axis sets Range="ValueAxisRange.IncludeZero".
  • RadzenChart - category labels fit by default: labels that do not fit are rotated, skipped at a regular stride and shortened with an ellipsis, and LabelRotation and LabelAutoRotation now set only the angle. Set LabelFit="CategoryAxisLabelFit.None" on RadzenCategoryAxis to restore the previous behavior. Axis labels are clipped at the chart edge instead of drawing over the page.
  • RadzenChart - value axes compute the tick step from the data range, so some axes get finer steps (set Step for a fixed step), and an axis that sets only Min or only Max keeps that bound exactly and rounds the other end to a tick (set both to restore the previous behavior).
  • RadzenDataGrid - enum filter values in saved settings are serialized as numbers instead of FullName casts. Settings saved by previous versions are still loaded.
  • Trimming - the dynamic LINQ API (QueryableExtension and related methods) is marked with [RequiresUnreferencedCode], so applications published with trimming enabled see analyzer warnings when calling it directly.

Improvements

  • RadzenMarkdownEditor - new Markdown editor with a WYSIWYG Design mode that edits the rendered document in place and writes it back to Markdown, a Source mode for the raw Markdown, a built-in mode switcher (ShowModeSwitch), tools for bold, italic, strikethrough, inline code, code blocks, headings and paragraphs (RadzenMarkdownEditorFormatBlock), block quotes, bullet, numbered and task lists, links, images and horizontal rules, table authoring with RadzenMarkdownEditorTable and RadzenMarkdownEditorTableTools (also as a context menu inside a table), undo and redo shared by both modes, Ctrl+B, Ctrl+I, Ctrl+K, Ctrl+Z and Ctrl+Y shortcuts, paste of HTML or plain text as Markdown, copy of the selection as Markdown, live emoji shortcodes and RadzenMarkdownEditorCustomTool for custom toolbar buttons. Thanks to @artnim!
  • RadzenDateRangePicker - new date range picker with a two-month calendar, min/max support and drill-down navigation.
  • RadzenVirtualKeyboard - new on-screen keyboard that attaches to inputs or renders inline, with custom layouts, numpad mode, locale support and keyboard accessibility.
  • RadzenScheduler - appointments can be grouped by resource in all views (day, week, month, multi-day, planner, timeline and year) by declaring RadzenSchedulerResource types and setting GroupByResource="true" on a view, with hierarchical grouping by multiple resource types, horizontal or vertical GroupOrientation and appointments that belong to several resources when the resource property is a collection. Fixes #1418.
  • RadzenScheduler - appointments can be resized by dragging their edges in the day, week and multi-day views; handle the new AppointmentResize event to apply the new duration.
  • RadzenScheduler - new AllDayProperty renders all-day appointments in a dedicated row of the week view, configured with the ShowAllDay and AllDayText properties of RadzenWeekView.
  • RadzenGantt - new resource view displays tasks in resource lanes with stacking, hierarchical resources via ResourceParentIdProperty, an unassigned tasks lane and a workload histogram, enabled with ResourceData, ResourceIdProperty, ResourceTextProperty and TaskResourceIdProperty. Fixes #2488.
  • RadzenGantt - new quarter-based Years view for multi-year projects and a rescaled Year view. Fixes #2524.
  • RadzenDataGrid - exports to Excel and CSV directly in the browser with ExportToExcelAsync and ExportToCsvAsync, without a server endpoint. Exports respect the current sort, filter, column order, visibility and format strings and can include the current page or all rows; all rows of a grid bound with LoadData are requested in chunks with progress through DataGridExportOptions.Progress and cancellation. Excel exports apply the current theme unless UseTheme="false", the new ExportValue column parameter exports template columns without Property, and ToWorkbookAsync returns the workbook for customization with the spreadsheet API.
  • RadzenDatePicker - new NavigationMode property with drill-down calendar navigation: the calendar title drills up to a month grid and a year grid.
  • RadzenTabs - new Overflow property controls tab titles that do not fit: TabsOverflow.Default shrinks them, TabsOverflow.Wrap wraps them to additional lines, TabsOverflow.Scroll scrolls the tab list and TabsOverflow.Collapse moves them into a dropdown menu at the end of the tab list while the selected tab stays visible. Fixes #2733.
  • RadzenChart - RadzenValueAxis.Range (Auto, Data, IncludeZero) controls whether a value axis includes zero, and RadzenCategoryAxis.LabelFit (Auto, None) controls whether crowded category labels are rotated, skipped and shortened. Labels shortened at a word boundary drop trailing separators before the ellipsis, horizontal bar labels get a third of the chart width, and value axes are measured again once their scales are fitted so the plot is laid out with the widths of the labels it actually draws.
  • RadzenChart and RadzenRangeNavigator - DateOnly, nullable DateOnly and DateTimeOffset categories are plotted on a date axis instead of one category per row, with ticks never closer than a day and DateOnly values in tick labels, tooltips and Formatter. Fixes #2735.
  • RadzenSparkline - area and column sparklines fit their data under ValueAxisRange.Auto and span their full height instead of a thin band above zero.
  • RadzenProfileMenuItem - new Action and Method parameters render the item as an HTML form that posts with the antiforgery token when available, for logout and similar endpoints. The submit button looks like the other items in every theme and is submitted by clicking or by Enter and Space.
  • RadzenMarkdown - GitHub Flavored Markdown strikethrough (~~text~~) and task list items (- [ ] and - [x]) are parsed and rendered, exposed as the Strikethrough inline node and ListItem.Checked. The new HtmlVisitor in Radzen.Documents.Markdown renders a parsed document or a Markdown string to HTML with HtmlVisitor.ToHtml and blanks javascript:, vbscript: and data: URLs. INodeVisitor.VisitStrikethrough has a default implementation so existing visitors keep compiling.
  • Themes - new premium Zen theme. Themes can set the default chart gradient opacity, the Inter variable font is bundled and enabled with the $inter SCSS flag, and the licenses of the bundled fonts ship next to the fonts.
  • Trimming - the library is compatible with .NET trimming (PublishTrimmed) and trimmed Blazor WebAssembly publish. Data-bound components preserve the members they access via reflection through DynamicallyAccessedMembers annotations, and the shipped LinkerConfig.xml is replaced with conditional DynamicDependency roots so only the types an application actually uses are preserved. See TRIMMING.md for consumer-facing guidance.

Fixes

  • RadzenFormField - the wrapped input no longer receives its previous value again on every re-render of the form field. The FormFieldContext is now cascaded as a fixed value; a non-fixed CascadingValue re-supplied the child's last parameter snapshot before the new render delivered the new one, so a single change arrived as old, new, old, new. Fixes #2741.
  • RadzenDialog - side dialogs refresh when the cascaded Dialog, its DialogOptions or the SideDialogOptions change, the same way DialogContainer does for regular dialogs, and the side dialog resizer is created once per open instead of once per render. Fixes #2740.
  • RadzenMenu, RadzenPanelMenu and RadzenProfileMenu - activating the li[role=menuitem] element directly, as assistive technologies and tools such as Vimium do, expands or collapses the submenu and follows Path exactly like clicking the visible label. Fixes #2737. Fixes #2738.
  • RadzenAreaSeries, RadzenStackedAreaSeries, RadzenFullStackedAreaSeries and RadzenRangeAreaSeries - the solid line ends flat at its first and last points, as before 11.0.0, instead of with round caps that stuck out past the filled area by half the stroke width. Regression from 11.0.0.
  • RadzenSpreadsheet - XLSX worksheet and shared strings parts are written without indentation, because Apple Numbers reads the indentation whitespace inside inline strings as part of the cell text. Thanks to @pianomanjh!
  • RadzenQRCode - RadzenQREncoder.EncodeBytes applied the data mask twice, so the second pass cancelled the first while the format bits still declared the mask and the matrix was undecodable.
  • RadzenGravatar - the MD5 hash of emails whose length is 56 to 63 bytes modulo 64 was computed with the wrong padding, so those avatars never resolved.

Don't miss a new radzen-blazor release

NewReleases is sending notifications on new releases.