C#/XAML for HTML5 logo

Who said you can't go cross-platform with C#/XAML?

Create HTML5 apps using only C# and XAML with the new free "C#/XAML for HTML5" extension for Visual Studio

Already trusted by over 10,000 registered users, and counting!

Want to migrate a Silverlight application to the web? Read our guide!

Learn More / View Features

Download the free beta now!

At last you can reach all platforms with the skills, tools, and code base you already have

Zero Learning Time.

If you know C#/XAML, you already know everything you need to make apps for HTML5, Android, iOS, Mac, Chromebooks, Linux, Windows, web browsers, and more.

The power of C# and XAML.

Developing robust large-scale HTML5 projects has never been easier with C#/XAML features such as type safety (you can fix errors before the code runs), data binding, user controls, classes, interfaces, inheritance, generics, namespaces, event handlers, data templates, and much more.

The power of Visual Studio.

Step-by-step debugging, code refactoring, intellisense, unit tests, source control, and all the other cool features of Visual Studio work like a charm.

Reuse your code base.

Migrating Silverlight, WPF, Windows Phone, Windows Store, .NET, and other C# projects to HTML5 has never been easier. While only a subset of XAML is currently supported (see current progress below), most of your C# code will work as is.

TIP: Use the "Add as link" feature of VS to share code between projects of different types. Use the "#if" directive to specialize portions of your code based on the project type.

See how easy it is to get started

Check out the sample Controls Showcase:

View in web browser (HTML5)

Tested on: Chrome, IE 10+, Edge, Firefox, Android 4+, Opera, Safari Mobile (iOS 8+), Safari 8+

Also available as stand-alone apps for: iOS, Android

Check out the sample Calculator app:

(taken from the MSDN, originally written in C#/XAML, compiled to HTML5 with almost no modifications)

View in web browser (HTML5)

Tested on: Chrome, IE 10+, Edge, Firefox, Android 4+, Opera, Safari Mobile (iOS 7+), Safari 8+

99 % of C# features are already supported (75% of XAML, 45% of .NET Core). Adding more every day.

Supported Not Yet Supported

C# Language Features

(99% supported!)

- Classes, interfaces, enums, inheritance, generics, event handlers, try/catch, "ref" and "out" keywords, properties, accessors, modifiers, lambda expressions, anonymous methods, extension methods, virtual methods, "var", "dynamic", nullables, automatic properties, partial types, nested types, pragma directives, collection initializers, yield return, sealed...

- New in beta4: Async/await, Linq (Any, AsEnumerable, Cast, Contains, Count, ElementAt, ElementAtOrDefault, Empty, First, FirstOrDefault, OfType, OrderBy, OrderByDescending, Range, Select, SelectMany, Sum, ToArray, ToList, and Where)

- Class libraries, visual studio project references, namespaces...

- New in beta6: C# 6.0

- New in beta8: ResX Resource Files

- the "dynamic" keyword is not supported under VS 2015

.NET Types and Framework Classes

(45% supported)

- Object, string, char, int, single, double, bool, DateTime, TimeSpan, List<>, Dictionary<>, Stack<>, Array, Size, Rect, Point, Exception, StringBuilder, Int64, CultureInfo, Encoding, StreamReader, TextReader, MemoryStream, BinaryWriter, BinaryReader, Buffer...

- System.Reflection

- New in beta2: DispatcherTimer

- New in beta3: Http calls (WCF, SOAP, REST, Add Service Reference, Web API support) (read WCF Limitations and Tutorials), WebClient, XmlSerializer (read XmlSerializer limitations and tutorials), Guid, Dispatcher.BeginInvoke

- New in beta5: Regular Expressions, IsolatedStorage, FileInfo

- New in beta6: ICommand

- New in beta8: Custom Attributes, Tuple2, HashSet2, Extensions (WebSockets, Print, File Open/Save, ZIP Compression...)

Coming soon:

- Tuple (use "Tuple2" instead)

- HashSet (use "HashSet2" instead)

- Queue, Queue<T>

- Non-generic Stack

- More .NET types...

XAML Concepts

(75% supported)

- General XAML syntax, XAML layout, Dependency properties

- User Controls

- Code behind

- Events registration (Click, PointerPressed, PointerReleased, PointerMoved, GotFocus, TextChanged, KeyDown...)

- XAML namespaces

- Alignments and margins

- New in beta2: Binding, DataContext, DataTemplate, StaticResource, Styles

- New in beta4: IsEnabled

- New in beta5: IsHitTestVisible, TransformToVisual, Opacity

- New in beta6: CapturePointer, Cursor, Pointer coordinates, Styles BasedOn, DropShadowEffect

- New in beta7: ResourceDictionary, MergedDictionaries, Transforms (CompositeTransform, RotateTransform, ScaleTransform...), OverrideMetadata

- New in beta8: ControlTemplates, Storyboards, Animations, VisualStateManager, OnApplyTemplate, TemplateBinding

- New in beta10: SizeChanged event, ClipToBounds, FindElementsInHostCoordinates, VisualTreeHelper

- New in beta11: MatrixTransform, TextBox validation, RegisterAttached, FontStyle, MaxLength, and much more

- Implicit styles (coming soon!)

- Implicit data templates (coming soon!)

- Coming soon: support for Generic.xaml, ZIndex, TabIndex, IsTabStop, RadiuxX, RadiusY

- XAMLReader.Load

XAML Types and Controls

(75% supported)

- Button, TextBox, TextBlock, Canvas, StackPanel, Border, Image, Grid, ScrollViewer, Rectangle, WrapPanel, UserControl, Control, Window, Page, Panel

- SolidColorBrush, Named colors, HorizontalAlignment, VerticalAlignment, Orientation, Thickness, CornerRadius...

- New in beta2: ItemsControl, ContentControl

- New in beta3: PasswordBox

- New in beta4: DataGrid, ComboBox, CheckBox, HyperlinkButton

- New in beta5: ListBox

- New in beta6: MediaElement, RadioButton

- New in beta7: Path, Ellipse, Line

- New in beta8: ToggleButton, TabControl, Expander

- New in beta9: LinearGradientBrush

- New in beta10: ChildWindow, ToolTip, Popup, ContextMenu, MenuItem, ScrollBar control, Thumb

- Coming soon: Frame, Slider, ProgressBar, TreeView, DatePicker, Label, RepeatButton, RTF

- GridSplitter, ViewBox

List of compatible browsers: Google Chrome 35+, Microsoft Internet Explorer 11+, Microsoft Edge, Android Browser (Android 4+), Safari Mobile (iOS 8+), Safari 8+ (Mac OS Yosemite+), Mozilla Firefox 27+, Opera 24+

Check out these great open-source extensions:
    - Chart controls
    - jQuery.ajax
    - JSON Serialization / Deserialization
    - WebSockets
    - PrintHelper
    - FileSaver
    - ZipFile
    - FileOpenDialog
    - Unofficial ArcGIS Mapping control (in progress)
    - Compose Email

Vote for your most wanted features (UserVoice)

View the full list of supported types and methods

View the list of Limitations and Workarounds

Want to migrate a Silverlight application? Read our Silverlight Migration Guide

Other technical topics of interest:

A clear and transparent roadmap

(Subject to change based on users' feedback and other factors)

  • Q2 2014: (Preview) The Preview release focuses on gathering users' feedback. It introduces Visual Studio integration and fine-tunes compatibility with all the main browsers and mobile devices.
  • Q3 2014: (Beta 1) The first beta provides all the main tools to build cross-platform stand-alone HTML5 apps in standard C# and XAML. A subset of C# and XAML is supported that is large enough to build simple useful apps.
  • Q4 2014: (Beta 2) Data Binding, Styles, StaticResource, DataContext, DataTemplate, ItemsControl, ContentControl, design-time XAML preview window, DispatcherTimer, and more.
  • Q1 2015: (Beta 3) WCF, SOAP, REST, "Add Service Reference", Web API support, WebClient, XmlSerializer, Guid, PasswordBox, BeginInvoke, FontFamily, FontWeight, Thickness, BorderBrush, and more.
  • Q2 2015: (Beta 4) Full support of C# 5.0: Linq, Async/Await, DataGrid, ComboBox, CheckBox, HyperlinkButton, IsEnabled, and much more.
  • Q3 2015: (Beta 5) IsolatedStorage, Documentation, sample app available on the Apple AppStore and on GooglePlay, web server to easily Test on Mobile Devices, Regular Expressions support, ListBox, DataGrid item selection, and much more.
  • Q4 2015: (Beta 6) VS 2015 support, ICommand, MediaElement, RadioButton, Pointer/Cursor, drag-and-drop, DropShadowEffect, and much more.
  • Q1 2016: (Beta 7) ResourceDictionary, Path, Ellipse, Line, CompositeTransform, and much more.
  • Q2 2016: (Beta 8) Extensibility, WebSockets, ControlTemplates/Storyboards, ResX, Call JS from C#, Print, File Open/Save, ZIP, Mapping, TabControl, Expander, Custom attributes, "Run from localhost", and much more.
  • MID-2016: (Beta 9) Brand New Simulator, XAML Live Inspector, Up to 20x Faster Compilation, JSON Serializer/Deserializer, DoubleAnimation, ColorAnimation, LinearGradientBrush, StopWatch, StrokeDashArray, Chrome for Android support, resizable Simulator window, remember Simulator settings, and much more.
  • Q3-2016: (Beta 10) Bug Fixing, ChildWindow, ContextMenu, MenuItem, Popup, Thumb control, ToolTip, Improved DateTime support, Right-click event, Min/max width/height, support for non-native ComboBox, FindElementsInHostCoordinates, ScrollBar control, ClipToBounds, and much more.
  • Q1 2017:
    (Beta 11) Charts (Pro), Silverlight Migration Edition, Improved Performance, HtmlPresenter control (Pro), improved C#/XAML support (learn more), experimental support for importing TypeScript Definition Files (Pro), high-performance HtmlCanvas control, jQuery.ajax support (Pro), MatrixTransform, TextBox Binding Validation, BitmapImage.SetSource, MaxLength, and much more (over 30 other new features!)
  • 2017: VS 2017 Support, More bug fixing and Performance improvement, ArcSegment, Partial support for Kendo UI Core (pro), Support for more 3rd party component providers (pro), Frame, DatePicker, Implicit Styles, Slider, ProgressBar, localizable resx (resources), {x:Type } syntax (currently supported without curly braces), {x:Null}, Templatable listbox (ItemContainerStyle, etc.), Templatable ComboBox/ComboBoxItem, Label, ZIndex, TabIndex, IsTabStop, Queue<T>, HttpWebRequest (pro), Improved WCF (pro), Authentication (Pro), TransformGroup, {x:Static} syntax, StateTriggers, Implicit DataTemplates, RadiuxX/RadiusY, AncestorType={x:Type ...}, RepeatButton, Slider, TreeView, RTF, StrokeDashCap, RadialGradientBrush, easier C#-based access to device features via PhoneGap/Cordova (currently possible only via calls to the "Interop.ExecuteJavaScript" method), more...
  • Mid 2017: The product is now very solid and can be used in production to build robust large-scale cross-platform HTML5 apps, as well as hybrid iOS and Android apps. Most of the features required to easily port Silverlight apps and other C#/XAML-based apps to HTML5 are available. New features will be developed based on users' feedback.
  • 2017-2018: Great Performance and code optimization, VB.NET support, PCL support, Full support for all the classes and methods of the .NET Core framework (mscorlib), support for most of the Silverlight 5 features, large gallery of 3rd-party controls and free community extensions. New features will be developed based on users' feedback. Features under consideration include and are not limited to: a visual XAML Designer, the WPF syntax for Storyboards (triggers, etc), Data Triggers, Interaction.Behaviors and Interaction.Triggers, more advanced DataGrid (validation, filters, etc.), DataContractSerializer (in addition to XmlSerializer which is already supported), WritableBitmap, XDocument, client-side EntityFramework support...
  • Please contact us if you would like to be among the several companies that fund the development of specific features to have them implemented earlier: we will quickly send you a quote and a timescale.
  • As far as 3rd party components are concerned (such as Telerik, DevExpress, ComponentOne, Infragistics, SyncFusion, etc.):
    • While waiting for those companies to port their controls to CSHTML5, we have already started to create open-source projects that mimic the method signatures and behavior of the original controls, so that you can use them without changing your legacy code. Please stay updated for links to those open-source projects.
    • The internal implementation will be either in pure C#/XAML, or it will use a JavaScript-based library that provides a similar result. That JavaScript library will be wrapped into a C#/XAML-based container for easy consumption in your CSHTML5 project (see How to create extensions for CSHTML5 and How to call JS from C#). In some cases, it is possible to automate the creation of such a wrapper by importing TypeScript Definitions
    • You can see an example of such "wrapping" mechanism by looking at the open-source Charts library based on Plotly.js, as well as the ArcGIS Mapping control for CSHTML5.
For a long time I have been looking for a Xaml to HTML5 solution. I couldn't understand why nobody was doing it. Finally somebody has. :-) Andrew Tierney, CastleSoft
This IS the future. [...] This is the absolute best tool to hit Visual Studio and IS and WILL change the future of .NET and XAML. I am a huge fan, love the work, keep it up. Michael Puckett, II

Download the free beta now!


twitter facebook forums