<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/no-xaml-required-native-windows-apps-in-pure-c--bpwff4h4q" -->

---
title: No XAML Required: Native Windows Apps in Pure C# | daily.dev
description: Microsoft's Windows team previewed Reactor, an experimental way to build native Windows apps entirely in C# with no XAML, code-behind or view models. It uses...
canonical: https://daily.dev/posts/no-xaml-required-native-windows-apps-in-pure-c--bpwff4h4q
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: No XAML Required: Native Windows Apps in Pure C# | daily.dev
og:description: Microsoft's Windows team previewed Reactor, an experimental way to build native Windows apps entirely in C# with no XAML, code-behind or view models. It uses...
og:url: https://daily.dev/posts/no-xaml-required-native-windows-apps-in-pure-c--bpwff4h4q
og:image: https://api.daily.dev/og/posts/bpWFf4h4Q.png
og:image:alt: No XAML Required: Native Windows Apps in Pure C#
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# No XAML Required: Native Windows Apps in Pure C#

**[.NET Blog](https://daily.dev/sources/dotnet)** · 29 min read · 16 upvotes · 1 comments

## Summary

Microsoft's Windows team previewed Reactor, an experimental way to build native Windows apps entirely in C# with no XAML, code-behind or view models. It uses an MVU (model-view-update) pattern instead of MVVM, rendering real WinUI controls rather than a new UI platform. The project is MIT-licensed and built in the open on GitHub, with over 60 Roslyn analyzers catching mistakes like conditional hooks or missing list keys. Open Claw already ships Reactor in production for its chat window, and the Uno Platform team ported the same code to run on macOS, Linux, WebAssembly, Android and iOS. A Rust version also exists. Getting started takes three commands: install the WinApp CLI, run 'winapp new', then 'winapp run'.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.youtube.com/watch?v=stj-kD2qu4E>

## Questions this post answers

### What is Microsoft Reactor and how does it differ from WinUI XAML/MVVM apps?

Reactor is an experimental Microsoft framework for building native Windows apps using plain C#, with no XAML files, code-behind, or view models. It follows the MVU (model-view-update) pattern instead of MVVM, where the UI is a function of state, similar to React, SwiftUI, or Jetpack Compose. It renders real WinUI controls, not a new UI platform, and is MIT-licensed and developed openly on GitHub.

_Developers evaluating XAML-free UI patterns can track Reactor's progress and examples on daily.dev._

### Why do I need to add keys when rendering lists in Reactor?

Keys give each list item a stable identity so Reactor can match items across renders by identity instead of by position. Without keys, inserting a row at the top forces every subsequent row to be rewritten and loses focus or state inside them. With keys, inserting one row into a thousand-row list creates exactly one new control and moves zero controls, since a reconciliation algorithm computes the minimal set of changes.

_Anyone optimizing list rendering performance can compare reconciliation approaches like this on daily.dev._

### Can I mix XAML and Reactor components in the same WinUI application?

Yes, Reactor preview.17 adds a new XAML tag that hosts a Reactor component directly inside a XAML page in the same process and visual tree, and a XamlPageReactorComponent that brings an existing XAML page into a Reactor component. A XamlHost control also wraps any third-party control, and a WinForms interop package exists too, so teams can modernize one screen at a time without a full migration.

_Teams weighing incremental migration strategies for WinUI apps can find practical interop patterns like this on daily.dev._

## Community discussion

Top comments from developers on daily.dev.

**@joriswouters** · 1 upvotes

> ![GIF](https://static.klipy.com/ii/d7aec6f6f171607374b2065c836f92f4/cc/c1/zNba5ZUH.gif)

## Similar posts on daily.dev

- [Microsoft.UI.Reactor: a C\#-first way to build WinUI apps](https://daily.dev/posts/microsoft-ui-reactor-a-c--first-way-to-build-winui-apps-lquagzmoy) · DevBlogs · 39 upvotes · 2 comments
- [XAML.io v0.7exports C\# projects as native to Windows, macOS and Linux](https://daily.dev/posts/xaml-io-v0-7exports-c-projects-as-native-to-windows-macos-and-linux-4t24xra58) · SD Times · 1 upvotes · 1 comments

---

Tags: [#.net](https://daily.dev/tags/.net), [#c#](https://daily.dev/tags/c#), [#winui](https://daily.dev/tags/winui)

[View this post on daily.dev](https://daily.dev/posts/no-xaml-required-native-windows-apps-in-pure-c--bpwff4h4q)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"No XAML Required: Native Windows Apps in Pure C#","url":"https://daily.dev/posts/no-xaml-required-native-windows-apps-in-pure-c--bpwff4h4q","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/no-xaml-required-native-windows-apps-in-pure-c--bpwff4h4q"},"datePublished":"2026-11-13T01:06:09.207Z","dateModified":"2026-11-13T01:08:23.684Z","description":"Microsoft's Windows team previewed Reactor, an experimental way to build native Windows apps entirely in C# with no XAML, code-behind or view models. It uses...","image":"https://i.ytimg.com/vi/stj-kD2qu4E/sddefault.jpg","thumbnailUrl":"https://i.ytimg.com/vi/stj-kD2qu4E/sddefault.jpg","isAccessibleForFree":true,"articleSection":".NET Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":".NET Blog","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/f23eb59371bd4f07aeef64c4eef73266","url":"https://daily.dev/sources/dotnet"},"commentCount":1,"discussionUrl":"https://daily.dev/posts/no-xaml-required-native-windows-apps-in-pure-c--bpwff4h4q","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":16},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"keywords":".net,c#,winui","timeRequired":"PT29M","video":{"@type":"VideoObject","name":"No XAML Required: Native Windows Apps in Pure C#","description":"Microsoft's Windows team previewed Reactor, an experimental way to build native Windows apps entirely in C# with no XAML, code-behind or view models. It uses...","thumbnailUrl":"https://i.ytimg.com/vi/stj-kD2qu4E/sddefault.jpg","uploadDate":"2026-11-13T01:06:09.207Z","duration":"PT29M","url":"https://api.daily.dev/r/bpWFf4h4Q","embedUrl":"https://www.youtube.com/embed/stj-kD2qu4E"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":".NET Blog","item":"https://daily.dev/sources/dotnet"},{"@type":"ListItem","position":3,"name":"No XAML Required: Native Windows Apps in Pure C#"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/no-xaml-required-native-windows-apps-in-pure-c--bpwff4h4q","comment":[{"@type":"Comment","text":"","datePublished":"2026-11-13T10:36:49.157Z","url":"https://daily.dev/posts/bpWFf4h4Q#c-j0DdviKCj","author":{"@type":"Person","name":"Joris Wouters","url":"https://daily.dev/joriswouters","image":"https://lh3.googleusercontent.com/a/ACg8ocKq1-3ATui91TME7lcwL-rWPvaKDHgsEhBQIXzeyd3-=s96-c"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/no-xaml-required-native-windows-apps-in-pure-c--bpwff4h4q#faq","mainEntity":[{"@type":"Question","name":"What is Microsoft Reactor and how does it differ from WinUI XAML/MVVM apps?","acceptedAnswer":{"@type":"Answer","text":"Reactor is an experimental Microsoft framework for building native Windows apps using plain C#, with no XAML files, code-behind, or view models. It follows the MVU (model-view-update) pattern instead of MVVM, where the UI is a function of state, similar to React, SwiftUI, or Jetpack Compose. It renders real WinUI controls, not a new UI platform, and is MIT-licensed and developed openly on GitHub. Developers evaluating XAML-free UI patterns can track Reactor's progress and examples on daily.dev."}},{"@type":"Question","name":"Why do I need to add keys when rendering lists in Reactor?","acceptedAnswer":{"@type":"Answer","text":"Keys give each list item a stable identity so Reactor can match items across renders by identity instead of by position. Without keys, inserting a row at the top forces every subsequent row to be rewritten and loses focus or state inside them. With keys, inserting one row into a thousand-row list creates exactly one new control and moves zero controls, since a reconciliation algorithm computes the minimal set of changes. Anyone optimizing list rendering performance can compare reconciliation approaches like this on daily.dev."}},{"@type":"Question","name":"Can I mix XAML and Reactor components in the same WinUI application?","acceptedAnswer":{"@type":"Answer","text":"Yes, Reactor preview.17 adds a new XAML tag that hosts a Reactor component directly inside a XAML page in the same process and visual tree, and a XamlPageReactorComponent that brings an existing XAML page into a Reactor component. A XamlHost control also wraps any third-party control, and a WinForms interop package exists too, so teams can modernize one screen at a time without a full migration. Teams weighing incremental migration strategies for WinUI apps can find practical interop patterns like this on daily.dev."}}]}
```

