Current filter:
                                You should refresh the page.
                                  • Description:
                                    This section contains additional technical information and answers to questions we anticipate most on the new XAF SPA UI for Web & Mobile available starting with v18.2 as CTP.  For general information, refer to the XAF - New SPA UI for Web & Mobile (v18.2) blog post first. To see FAQ for the Mobile UI (Maintenance Mode), scroll to the bottom.

                                    UPDATED on May 15th 2019
                                    We have finished the MVP V1 demo according to the plans we described in the private forum for Universal customers. If you own an active Universal or DXperience subscription, you can download the CTP build from the DevExpress Download Manager and test the features described in this post. Let us know how well the new features address your requirements. This will help us fine-tune our code before the launch.

                                    To play with the MVP V1 demo, do the following:
                                     - Install v19.1 from the Download Manager or;
                                     - Make sure that you have Visual Studio 2017+ and the latest Node JS installed;
                                     - Download the SPA MVP V1 Demo source (there are currently no online demos)and run the SpaDemo.Spa project. The first build will download all required Node JS modules. This may take a while depending on your network.
                                    If you launched SPA projects built with version 18.2 previously, you may need to clear the site's local storage in the browser's Developer Tools.

                                    To recreate a similar app yourself, use the Solution Wizard  and choose "SPA (CTP) " at the "Choose Target Platforms" step. If you have previously created SPA projects, you will need to recreate them using the Solution Wizard (due to the incompatible project template changes).


                                    Below is a list of supported features and known limitations. Features implemented in MVP V1 are marked as NEW.

                                    Main application shell & infrastructure

                                     - NEW:  Basic Security System functions are supported. The application displays the logon form to non-authenticated users. Permissions are applied at the Data Service level. Other Security System functions are unsupported and you cannot enable them via the Solution Wizard. For more information, refer to the How to enable the Security System in an SPA project article.

                                     - NEW:  End users can change the application's Theme and Color Scheme at runtime using the corresponding toolbar items.

                                     - Main application template supports the same desktop browsers as DevExtreme (except for Internet Explorer and Windows Phone). We have not finished layout and performance optimizations or tests for mobile/tablet browsers yet.
                                     - It is possible to work with Web app copies in multiple browser tabs and IFRAME.
                                     - You can specify custom application logo, version, company and other information using the familiar approach.

                                     - Splash window (see the SpaDemo.Spa\wwwroot\logo.svg and index.html files).

                                     - Favicon (see the SpaDemo.Spa/wwwroot/favicon.ico file).

                                     - SVG images from XAF WinForms apps are supported. Colors and orientation are patched based on context to make them sharp. For instance, the Delete Action's image colors are inverted in the floating menu bar for selected ListView records. It is also possible that we will remove images from navigation and layout in the future (you can take a quick poll to share your preferences).
                                     - Highly requested compact form layout suitable for large amounts of data. You can configure it under the Options node in the Model Editor invoked for the *.Spa projects.

                                    Known behavior:
                                     - No extra modules support at this stage. You can safely skip the "Choose Extra Modules" steps and press Finish in the Solution Wizard.
                                     - Application Designer does not open on a double-click in Visual Studio 2017 and older - use the View Designer context menu command instead (Shift+F7). Microsoft fixed this in Visual Studio 2019 (see this GitHub issue);
                                     - The Solution Wizard does not allow adding an SPA project to an existing solution - create separate projects for tests.
                                     - It is necessary to rebuild the project to apply new Application Model settings from the SolutonName.Spa\Model.xafml file.

                                    Navigation system
                                     - Navigation items within the Default navigation group and without hierarchies. Selected item appearance is supported.

                                     - The navigation panel can be collapsed and expanded on mobile, tablets and desktops to free up space on the screen.

                                     - End-users can hide, show, filter, sort, group all existing DevExtreme data grid columns. Their state is preserved in the browser's local storage (no database model stores yet). The following common IModelListView and IModelColumn Application Model options are supported: Sorting , AllowEdit = False, GroupSummaryIsGroupPanelVisibleIsFooterVisibleDataAccessMode = Server, EditorType = DevExpress.ExpressApp.Spa.Editors.SpaGridListEditor, MasterDetailMode = ListViewOnly, AllowDeleteAllowNew.
                                     - The Column Chooser allows hiding visible or showing invisible columns. It is not possible to add new columns yet.

                                     - You can move or reorder existing columns without invoking the column chooser.
                                     - ListView pager is activated if there are more than 20 visible records.
                                     - ListView supports single and multiple selection. Users can navigate rows inside the grid using up, down, left, right arrow, Tab and Shift+Tab keys like in Excel.
                                     - NEW:  Total and group summaries are supported.

                                     - We got rid of the ViewEditMode = View configuration completely, because it caused problems in the ASP.NET WebForms UI according to our own figures and customer survey
                                     - DetailView editors powered by DevExtreme have different appearances in the focused, unfocused, hovered and disabled states. You can copy text data from readonly editors.
                                     - Editors for the following property types are supported:
                                       NEW:  System.Boolean
                                       NEW:  Images
                                      NEW:  Collections

                                      NEW:  Enumerations

                                      NEW:  A simple dropdown for reference properties

                                     - DetailView supports layout groups (including tabs) and items.
                                     - DetailView displays the breadcrumb navigation and default property value on the top.

                                     - You can specify the DisplayFormat property for System.DateTime properties (check the DevExtreme documentation for supported display formats).

                                    Known behavior:
                                     - The Lookup editor requires a persistent Display Member specified.
                                     - The New action is not shown in nested collections.
                                     - The current object is automatically saved when the Link and Unlink actions are executed.
                                     - If there are more than 2 tabs, they are wider than the view port, certain Actions like Link/Unlink can be inaccessible due to a DevExtreme dxForm issue. This is most noticeable on mobile devices.

                                    Main menu & Actions
                                     - Actions support the following common properties: ShortcutToolTipPaintStyleImageNameConfirmationMessageCaption. The Enabled property does not disable the button and determines the Action's control visibility along with the Active property.
                                     - Action state synchronization in Detail Views. Server-side Action settings (EnabledActive, Caption, TargetObjectsCriteria, etc.) effect the UI immediately. For example, the Delete Action is disabled for new objects. This generic mechanism will be applied to other UI elements in future updates.
                                     - SimpleAction, ParametrizedAction (ValueType supports only string and integer) and SingleChoiceAction are partially supported.

                                     - You can reorder Actions inside Action Containers using the familiar approach.
                                     - Most important Actions are placed on the left side and may have captions by default. Such important Actions are mapped to the new "AccentActions" Action Container or Category. One or two very important commands can be additionally highlighted (for instance, New and Save). Refer to this forum post to discuss this further.
                                     - You can highlight an important Action or set another type for it using the DevExpress.ExpressApp.Spa.Actions.SetButtonType extension method for ActionBase. Check out the DevExpress.ExpressApp.Spa.SystemModule.SpaActionsButtonTypeController class code for an example. Predefined button types are set via the ButtonType enumeration:  Its values reflect a DevExtreme's feature (Normal, Default, Back, Danger, Success).

                                     - Less important Actions are placed on the right side and typically do not have captions by default. They may also be hidden under the ... group button in the future.

                                     - CRUD and other Actions support keyboard in desktop browsers to the level browsers allowing you to override their native shortcuts. Shortcuts must contain at least two keys and start with the command key like Control. DetailView shortcuts do not require that active editors lose focus.
                                    Bear in mind these default Action shortcuts set in the Application Model:
                                            New: Alt+N (Control+N is technically prohibited by Chrome);
                                            Save: Control+S;
                                            Save & Close: Control+Enter;
                                            Save & New: Control+Shift+S;
                                            Delete: Control+D;
                                            Open focused ListView record: Enter. We intentionally did not provide the Edit Action button as in the former Web UI to avoid confusion.
                                            Select/unselect focused ListView record: Spacebar;
                                            Focus FullTextSearchFilter Action: Control+/ (right slash).
                                     - Even though there are no special Actions for View history navigation, you can use  Alt+Left/Right arrows for that purpose.

                                    Known behavior:
                                     - Arrow keys change the popup dialog's position instead of switching between its buttons.
                                     - Changes made in a popup window should be committed immediately when the popup is closed.

                                    FAQ: SPA UI for Web & Mobile (CTP)
                                    Q:  What is ETA for this SPA UI and what do I test today?
                                    A:   We planned to offer this SPA UI for production use around the v19.1 timeframe (at least for simple scenarios without extra modules and customizations), but we will publish another CTP version in v19.1. Besides many pros, the new technology stack (a lot of JavaScript and React+ASP.NET Core), different and more complicated architectures, some legacy constraints and still emerging DevExtreme widgets for React did not allow our SPA UI squad to move forward as quickly as we planned originally. We will continue the new SPA UI development for other 6-8 months to see if we can show the first Beta by this time and decide on future steps.
                                    Right away, existing XAF Mobile UI users are welcome to migrate to our newest server features: How to connect an existing XAF Mobile application to the new ASP.NET Core Data Service (CTP). The new SPA UI will use this server and you can help us release this portion faster by providing feedback.
                                    Anyone is also welcome to try the first demo above and discuss future version specs in our forum with peers.

                                    Q:  How do I provide feedback and help you deliver the best possible final implementation?
                                    A:  To discuss and shape this vision, roadmap and technical requirements more effectively with the XAF community, we have setup a private discussionforum - exclusively for Universal customers. Feel free to leave comments to this post, email us at or submit tickets using the Support Center if this is of more convenience.

                                    Q:  I already have an XAF WinForms/ASP.NET/Mobile application or reusable modules. Would I be able to use them in the SPA UI?
                                    A:  One of our primary goals is to support existing business models, platform-independent controllers and settings as possible. Still, due to different SPA UI architecture, lifecycle and technologies, you may need to re-implement certain platform-agnostic features. Platform-dependent features will need to be rewritten from scratch.
                                    To give you a better understanding, check out implementation examples we want to derive from existing XAF UIs:
                                     - An XAF application may use XPO and non-persistent POCO classes for data access. Entity Framework (EF) and Domain Components (DC) interfaces are not supported and we have not yet planned their support due to much lower adoption and technical implementation constraints these technologies impose.
                                     - Conceptually, the same modular approach and extra modules like ConditionalAppearance, Validation, etc. Application Model, Model Editor and model differences at the module level should be preserved. At least, we will try to save them as much as we can.
                                     - Some former platform-independent model settings, such as the IModelListView.Columns node, may be replaced with SPA-specific alternatives. Due to the new design,  old Web/Mobile user differences will be incompatible and likely be lost (we can think of migration procedures, though).
                                     - Runtime end-user customizations are allowed and can be preserved in a browser's local storage or database as previously;
                                     - Existing platform-agnostic Controllers code (for instance, the ListView.CollectionSource.Criteria property customization or Actions) may be preserved in certain cases. Platform-dependent UI code must be rewritten completely.
                                     - Data and UI metadata service endpoints' customization. Customization of the request pipeline, e.g. involved XAF controllers, a security system and their behavior should be allowed as well.
                                     - Integration with 3rd party services. We have not yet thought of special integration that cannot be covered by non-persistent objects or custom control integrations. Things like integration of Microsoft, Google, Facebook authentication providers must be feasible in the same way as here.  Feel free to send us more use-case scenarios for consideration.
                                     - Customization capabilities should resemble those of the former XAF UIs. Examples of what should be allowed:
                                       - Easy customization of underlying UI controls, e.g. set properties (example);
                                       - Easy DevExpress or custom 3rd party React control integration (example);
                                       - Easy built-in Property Editor customization (example);
                                       - UI look & feel customization and a style using a theme builder (example);
                                       - Easy form template/shell customization, for instance, change Action Containers location (example);

                                    Q:  What do you I need to learn to use the SPA UI?
                                    A:  XAF users should be able to reuse a part of existing XAF skills for platform-agnostic development (for instance, business model design, Application Model customization, custom logic and View customization with Controllers). Further knowledge requirements are fully determined by tasks you want to implement with XAF. In general, all platform-dependent tasks require knowledge of client-server architecture. For common platform-dependent tasks, we are also going to provide C#/VB-based solutions to minimize the need for JavaScript and other associated complexities as much as possible (for instance, provide managed control wrappers like SPAListEditor or ready-to-use Application Model options).
                                    If you are happy with the XAF UI and do not plan to customize it much (other than using platform-agnostic means such as attributes, Model Editor and other designers), you do not need to dig into each platform specifics. If you require to customize the UI much or implement custom UI elements and intercept default framework behavior, knowledge of underlying technologies such as ASP.NET Core, Web API, React, HTML5/CSS/JavaScript is required. To get better results and troubleshoot problems faster, you may need to research the framework source code as well.
                                    The more you wish to customize, the more you will need to know. At the same time, we aim to reuse your existing knowledge of technologies as much as possible. Standard approaches for a certain technology would just require a standard XAF integration instruction and nothing else.

                                    Q:  How long will you support the ASP.NET-based Web UI?
                                    A:  It is important to understand that our Web UI has a large user base and there are many people who are satisfied with the current feature set. As long as this platform meets our customers and their clients' expectations, we will support it and ship new features. For instance, check out the latest enhancements: ASPxGridLookupPropertyEditor and ListViewAndDetailView mode support.

                                    Q:  What is the Mobile UI future?
                                    A:  The Mobile UI is now in maintenance mode. We do not recommend our users start new projects with it or use it in production.
                                    In the interim, we will continue including the Mobile UI with our installation and provide support. However, we will fix only critical bugs and will not make any new features.
                                    Right away, existing XAF Mobile UI users are welcome to migrate to our newest server features: How to connect an existing XAF Mobile application to the new ASP.NET Core Data Service (CTP). The new SPA UI will use this server and you can help us release this portion faster by providing feedback.

                                    Q:  Will it be possible to create native mobile applications for stores with SPA UI?
                                    A:  As with the former Mobile UI, supported technologies technically allow XAF developers to create hybrid mobile applications with Apache Cordova, Electron and other native containers. The former mobile simulator will be deprecated, though. We recommend that you use a web browser's developer tools to test SPA apps for various form factors. We will also describe alternative ways to build native packages later (using command line tools or Visual Studio).

                                    Q:  Does the new stateless architecture mean better scalability and thousands of users?
                                    A:  With the new architecture, an XafApplication instance with a cached state will not be stored in memory for each user as in the ASP.NET WebForms UI. Instead, a new instance will be created and released on each client request. As a result, memory requirements will be determined by the number of simultaneous requests and XAF application complexity rather than by the number of simultaneous users. This allows you to route client requests to different machines more easily  - easier horizontal scaling when compared to the older ASP.NET WebForms UI.
                                    However, processing each XafApplication instance may still take a good amount of memory in the case of complex XAF applications. As a result, thousands of simultaneous requests per second will unlikely be supported by the new SPA UI. High-load multi-tenant or SaaS Web apps that serve thousands of client requests imply different software architectures and budgets. A universal or general purpose framework  like XAF that costs a couple of thousand dollars would not be a good fit for such usage scenarios – you would have more success for enterprise tools optimized for such uses.
                                    Since most our Web and Mobile UI customers do not have more than 50 users according to their feedback (typically it is even less than 20-30 users), we also want to support a 'stateful' mode familiar to you by the existing ASP.NET WebForms UI. In this mode, it is possible that a database server will be hit less and overall performance may be better due to the in-memory cache. In stateful mode complex XAF apps can use vertical scaling to support more concurrent users.

                                    Q:  Will you support the offline mode?
                                    A:  We have not researched ways to support such scenarios yet. Feel free to share your business requirements and considerations here: Proposed solution for offline application.

                                    Q:  Will you support Xamarin?
                                    A:   Even though we are still tracking user interest in this regard, we do not have immediate plans to support it in XAF. Our current priority is to release the new SPA UI for desktop Web and Mobile development first.  It’s simple - we (and I’d argue many of our users) prefer a single, unified development system. The Web is a common denominator that covers multiple platforms well. A reliable and modern Web solution is something most want/need to deliver and if one does a good job in this regard, a mobile solution should follow automatically (at almost no cost).  Promising technologies like React Native, Electron and WebAssembly could also give us expanded opportunities in the future to address the needs of those who prefer the “native” option. Xamarin did not meet this basic requirement and would have forced us to create separate solutions for the Web and Mobile (you would need investments for both Android and iOS platforms as well).

                                    Q:  Can I use the new backend with non-XAF clients?
                                    A:  SPA UI frontend's requests are handled by SpaApplicationController. You can see the format of these requests in the browser's Network tab, or inspect the controller's source code. However, this API is not documented and can be changed in the future. So, in most cases, it would be better to add your own ASP.NET Core controller with a constructor that accepts the ISpaApplicationProvider parameter:

                                    public class MyController : Microsoft.AspNetCore.Mvc.ControllerBase { private DevExpress.ExpressApp.XafApplication application; public MyController(DevExpress.ExpressApp.Spa.AspNetCore.ISpaApplicationProvider applicationProvider) { this.application = applicationProvider.Application; } }

                                    In this case, you will be able to use the XafApplication.CreateObjectSpace method in the controller's action methods to get a secured Object Space for CRUD operations. See Build web APIs with ASP.NET Core for details.

                                    Q:  Why is React and not Angular, XXX,  or all at once?
                                    A:  Let me clarify this in detail:

                                    1. Our target audience is mostly C#/VB .NET developers. The majority of existing XAF users does not often make complex customizations of underlying controls and the rest infrastructure. Since the framework generates the UI transparently and you also have a high-level control over it using the Model Editor or attributes, whether React, Angular, Vue or Knockout is in use does not matter much, of course, unless they have existing knowledge investments.
                                    2. Unlike Angular, React is a lightweight and very flexible library, not a heavy framework. From our experience, Angular is also more difficult to get started with, troubleshoot and use for our specific requirements.
                                    3. Both React and Angular provide means for native rendering, but React Native has a greater popularity and community support.
                                    4. Use of React still leaves us opportunities to support other popular client-side frameworks in the future. APIs that we will provide to SPA UI developers for client-side customizations will be transparent and client-side framework agnostic anyway. Supporting Angular or another framework is costly and there must be good reasons for this. We will unlikely think about it until we move the new SPA UI out of CTP and have most our users happy with the platform-agnostic features in the first place.

                                    In advance, thank you very much for your help!

                                    Old content related to the XAF Mobile UI (Maintenance Mode)

                                    The Mobile UI is in maintenance mode. In the interim, we will continue including the Mobile UI with our installation and provide support. However, we will fix only critical bugs and will not make any new features. Once the new SPA UI is mature, it should cover all the Mobile UI scenarios and also provide new functionality.

                                    Q:  Do you provide videos and demo apps that I can use to test the new mobile UI?
                                    A:  A simplified mobile version of our MainDemo app is available here.
                                    See also a short overview Overview Video on our YouTube channel (2m 40s).
                                    The Getting Started Tutorial article provides step-by-step instructions on enabling the mobile UI for an existing XAF application starting with v16.2.

                                    Q: What device form factors are supported?
                                    A:  We intentionally disabled the Desktop emulator, because we decided to focus our team resources on improving mobile devices support in the first place - the primary reason for creating the Mobile UI in XAF. We have not finalized UI and UX optimizations for larger screens, which requires a lot of resources, and this is not something our team can afford until we provide the first class support for smaller screens. If you would like to target larger screens, creating an XAF ASP.NET WebForms application with the New Web UI will be a better option in many scenarios as it is stable and is optimized for both tablets and desktop browsers.

                                    Q: Can I add a Mobile project to the existing XAF solution?
                                    A:  Yes, in versions prior to v19.1, you can use the Solution Wizard as described at Add a Project to Existing XAF Solution.
                                    UPDATE: Note that the "Mobile Application Project" item is removed with v19.1. The option to create a brand new Mobile UI project is still available, but it will likely be removed from the wizard in the future - we do not recommend our users start new projects with it.

                                    SUPPORT & LIFE CYCLE
                                    Q: Can I use this feature in production or create new apps with it?
                                    A:  No, we do not recommend it as the feature was not out of preview. For more information, see the "1.5 PRE-RELEASE SOFTWARE" section of our EULA or

                                    Q:  What are alternative ways to build a mobile app if this is a matter of urgency?
                                    A:  If you cannot wait for when our mobile offering is ready for production use, you can consider building a mobile web site or store-ready native app from scratch using DevExtreme or other UI frameworks (learn more...). In certain scenarios, an XAF ASP.NET WebForms application with the New Web UI optimized for smartphones or tablets can be a simpler, but still acceptable solution for many scenarios in the interim period. For more information, see T756688.
                                    Q:  Do you have additional documentation on this feature other than this FAQ, video and tutorial?
                                    A:  Yes, we already added XAF mobile articles to our online documentation and updated cross-platform articles with the Mobile examples.

                                    Q:  How do I report issues?
                                    A:  We are eagerly looking forward to your input via the Support Center so that we can improve our product to better meet your business requirements. Please submit separate tickets  for each problem or question for better tracking. Thanks for your help in advance!

                                    Q:  Can I make suggestions on supporting new functionality and how to best report it?
                                    A:  Sure! To formalize this process a bit (and make it easier for us to prioritize too), provide your suggestions on the new functionality in the following mandatory format:
                                    1. Describe the use case. Include the initial context, the event that triggers the required functionality, and the desired outcomes. Please make sure to provide screenshots, videos, and examples if possible.
                                    2. How often does this use case present itself (once, every year, month, week, hour)?
                                    3. How do you currently solve this problem for your clients? If you already have a solution, briefly describe its main idea and limitations, as well as how costly it is in terms of time and maintenance resources.

                                    Q:  What is the time frame for resolving or implementing the reported issues and suggestions?
                                    A:  While we are open to consume any constructive feedback from any source (this feature preview is primarily supposed to demonstrate where we are heading and collect user input), we cannot guarantee that all the reported issues will be corrected in a timely manner or will ever be fixed in the suggested way. We will review each use case internally so please make sure to provide detailed descriptions to help ensure your particular use-case scenarios are covered and operate well in the final release.

                                    PURE TECHNICAL QUESTIONS
                                    Q: How is the mobile client app built?
                                    A: The mobile client is a single-page HTML5/JavaScript application (SPA) based on DevExtreme components that is ready to be compiled by Apache Cordova (PhoneGap) into a native package that can then be submitted to app stores. If you follow this route, PhoneGap also provides libraries to access a device's built-in functionality such as a camera, accelerometer and contact list.

                                    Q: How to integrate a custom PhoneGap plugin?
                                    A: We added the article to our online documentation containing examples of using some popular Cordova plugins: Custom Plugins in Mobile Applications.

                                    Q: What are the supported mobile and desktop web browsers?
                                    A: All modern desktop and the mobile web browsers on popular operating systems, which are currently supported by DevExtreme.
                                    Note: The simulator may not work correctly in the Internet Explorer browser. This is a known issue described in the documentation. For development, consider using another web browser.
                                    Q: How is the backend application service built?
                                    A: The new XAF mobile application project automatically created from the XAF Solution Wizard in Visual Studio contains three main classes:
                                    1.  YourSolutionNameMobileApplication (MobileApplication.cs) - this class derives from the new MobileApplication class similarly to WinApplication or WebApplication in appropriate platforms. An instance of YourSolutionNameMobileApplication is created for each request from the client application.
                                    2. DataService (DataService.svc) - this is the backend service for mobile applications used to serve requests, manage security and execute actions. Technically, it is a regular OData service (WCF Data Services 5.0) based on XPO OData V3 provider , XPO being the only currently supported ORM. Entity Framework (EF) and Domain Components (DC) support is not provided at the current stage of this product.
                                    3. MetadataService (MetadataService.svc) - this service supplies mobile application configuration data to a separate device simulator service.

                                    Q: What about hosting environment, scalability, load balancing?
                                    A: XAF mobile data service does NOT store any user-specific information between requests. So the resulting app is scalable, cloud-ready, and more lightweight than XAF ASP.NET WebForms apps with their Session restrictions. The backend services are RESTful and can be scaled to multiple identical instances and any instance can serve any request. Cloud hosting services like Windows Azure or AWS typically provide a built-in load balancer that is capable of automatically increasing or decreasing the data service instance count depending on the actual load. You can use multi-tenant database architecture behind the data service as well.

                                    Q: How can I deploy the mobile application to my production server?
                                    A: To deploy an XAF Mobile application to a public IIS server, you can use the same approach as those used to deploy XAF Web applications:
                                    Publish Web Deployment of an ASP.NET Application
                                    Xcopy Deployment of an ASP.NET Application

                                    Q: How can I build a native mobile package after I deployed the mobile application to my production server?
                                    A: Please refer to our online documentation describing how to accomplish this task: Install the Application to a Smartphone.

                                    Q: How to deploy mobile applications as regular web sites (disabled simulator and no PhoneGap)?
                                    A: This functionality is available by default - just open https://YourDomainName/Static/YourXAFVersion/player.html. For instance:
                                    To get this URL, scan the simulator's QR code or simply click it in your desktop web browser. If the index.html page (simulator) is opened from mobile devices, it will also redirect to player.html automatically.
                                    Note that our efforts have been focused on mobile devices so far. The application's UI is not adjusted for desktops and may have some visual artifacts that do not exist on devices.

                                    Q:  What are the currently supported XAF modules?
                                    A:  Full or partial support is available for the following XAF Modules.
                                        Security - end-user authentication takes place when the application starts and then every request checks user permissions before performing an operation. Known limitations are: no special editors for Criteria Properties, Protected Content and Navigation Permissions, custom values passed to these properties without any validation or formatting.
                                        Validation - if the module is included in the application as described here, then data is validated with every modification request to the backend server, prior to saving the changes. If possible, validation rules are moved to the client side so that they work without disturbing the backend service. For example, RuleRequiredField, RuleRange and RuleRegularExpression all work like that.
                                        ConditionalAppearance - you do not need to do anything besides what is described here  to activate this feature. Similarly to the Validation, the module functions on the client side if possible.
                                        FileAttachments  - downloading files only (see the instructions below for more details).
                                        ReportsV2  - downloading a report as PDF or other popular formats (see the instructions below for more details).
                                        Localization - automatically enables the appropriate UI language depending on the device settings.
                                        Maps - use instructions described here to activate this feature. It is required to specify the Google Maps API key to avoid runtime errors. Only raster maps are supported at the moment.
                                        Other platform-agnostic and platform-dependent modules - Chart, Dashboard, Pivot, AuditTrail, Scheduler, State Machine, Workflow, Notifications and other modules require further investigation. Key issues are screen size restrictions and native implementation of certain modules' functionality, Scheduler being a good example. It is likely that many of these extra modules will be unavailable for Mobile UI at all or to the extent it is available for other platforms. That is simply because copying the functionality for full-sized Windows desktop and Web browser apps "as is" does not make sense for small mobile and touch-enabled devices. Consult with the Extra Modules help topic for more details on the current state of support.

                                    Q: Can ALL the existing code base (such as ORM data model classes, Controllers and Application Model settings) be simply reused for the mobile UI with no changes?
                                    A: No, existing apps will require additional adjustments on your side to comply with the new UI concept and stateless service architecture.

                                    Q: Is UI customization done differently?
                                    A: Mobile UI is technically created once at design-time based on the ORM classes and consequently the Application Model settings. This process differs greatly from WinForms and Web UI where each View is created dynamically at runtime. Everything related to UI customization, UI interaction via Actions, conditional Appearance rules, and custom scripts should be created at design-time and packed into the mobile application. This way you can greatly reduce your web server load as well as dramatically minimize mobile traffic, which is essential for mobile devices.

                                    Q: Are standard and custom XAF Actions processed differently?
                                    A: Actions in mobile applications will work similarly to the Web by default. The app sends requests with all the information required to execute an action. At the same time, certain actions can be fully implemented on the client side. For example, actions which navigate between views don't require separate requests and thus can be fully processed on the client side. For example, you can navigate to the ProjectTask Detail View in the SimpleProjectManager-based mobile demo and then select 'Done!' from the menu. The status changes to Completed immediately on the client side. If you want to execute custom JavaScript code on the client side, use the RegisterClientScriptOnExecute extension method .

                                    Q: Are navigation items processed differently?
                                    A: Navigation items residing in custom navigation groups other than the "Default" one are not currently shown in the app. You will need to put all navigation items you would like to show into the Default group for now. In the future, it is possible that a different navigation control like Accordion will be introduced to cover complex navigation hierarchies.

                                    Q:  Can I use a calculated non-persistent property that depends on other business class values or runtime calculations?
                                    A: Non-persistent calculated properties declared using the DevExpress.Xpo.PersistentAlias, attribute or Custom Fields  operate as expected and do not require additional work on your side.
                                    Note that the DevExpress.Persistent.Base.ImmediatePostData attribute has a known limitation: in Mobile applications, non-persistent calculated reference properties are not updated.
                                    When the property is decorated with the ImmediatePostData attribute, the loading panel may be displayed when a user modifies a value.To improve UX in scenarios requiring calculated properties, we recommend that you move as much non-persistent properties calculation logic to the client-side as possible.

                                    Q:  Does this mobile application work offline? Or is it currently possible to store data locally on the mobile, if there is no internet connection?
                                    A: No, this feature is not currently available and is under consideration. We do not provide ready guidelines for accomplishing this task with our Mobile UI either. Our current thoughts on this scenario are given in the Proposed solution for offline application ticket. We would greatly appreciate it if you at least answer the two related questions:
                                    What is the minimum amount of features that should be supported in offline mode in your application?
                                    Is it sufficient to show cached data in read-only mode, or your users need a fully-functional application with the ability to create new objects and save changes?
                                    If you have more time, please comment on the additional considerations and possible implementation algorithm in our answer there. Thanks for your help in advance.

                                    Q:  Is there any internal backend API for accessing XAF data I can reuse with custom non-XAF clients?
                                    A:  Yes, and you can build a custom client application (hybrid or native, desktop or web, etc.) and connect it to the XAF OData service (DataService.svc). Technically, DevExpress.ExpressApp.DataService.dll provides the XafDataService<XafApplication>  class, which represents a standard WCF Data Service whose API conforms to OData V3. XafDataService currently supports only XPO and uses the XafApplication > ObjectSpaceProvider  property for connecting to your database, acquiring and modifying business objects. Additionally, the service reveals metadata information and supports the Basic authentication mechanism, which can be used by third-party application builders like Xamarin. For the security system to work, make sure your application uses SecuredObjectSpaceProvider.
                                    On the other hand, you can already reuse the existing XAF application data and certain logic without the XAF data service. See this support article  to estimate what is required to do this from scratch.
                                    NOTE: when using Basic authentication, you should consider encrypting communication between client and the data service by using the Secure Sockets Layer (SSL). Refer to the HTTPSWCF Data Services | Securing WCF Data Services and other public community resources for more details.

                                    Q:  How can I create and use the XAF secured OData Service supporting Basic Authentication with various clients?
                                    A:  Consider the following aspects:

                                    Service creation

                                    1. The simplest way is to reuse the DataService.svc file, which is automatically created by the XAF Solution Wizard when adding a mobile app into your existing XAF solution.
                                    2. You can also create such a service from scratch using the following steps:
                                    2.1. Invoke the Add | New Item... dialog to add a new "WCF Service"   item template called "TestDataService";
                                    2.2. Reference the DevExpress.ExpressApp.DataService.dll  along with an assembly with your XafApplication descendant  and then inherit the generated TestDataService class from the XafDataService one passing your XafApplication descendant type as a generic parameter:
                                    public class TestDataService : DevExpress.ExpressApp.DataService.XafDataService<AnyXafApplicationDescendant> { }

                                    2.3. Host the created service in a standalone ASP.NET application so that it is ready to serve requests from clients.

                                    Client-side usage
                                    Our mobile applications created via the XAF Solution Wizard can use such a data service automatically for getting and modifying data.
                                    The service uses the OData version 3 protocol:
                                     You can query this service using .NET, JavaScript and other clients according to the official OData v3 documentation ( and other public community resources.
                                    For instance, for .NET and JavaScript, use the approaches described at and respectively.

                                    Data service authenticates requests using the Basic Authentication protocol:
                                    In short, you need to add the Authorization field to the header of each request. For instance, if you are developing an HTML5/JavaScript client, you can use jQuery's beforeSend callback to add an HTTP header with the authentication information:

                                    beforeSend: function (xhr) { xhr.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password)); }

                                    Refer to the documentation for each client-side technology for more details. In addition, check out the "Secured OData Service with Basic Authentication" section in this blog post for more examples.

                                    Q: Can we use third-party mobile controls or register custom JavaScript functions?
                                    A: Yes, see How to: Add an XAF Mobile Custom ModuleUPDATE:  With v19.1.5, the "XAF Mobile UI Custom Module" Item Template is removed from the Add New Item dialog. If you need it, download and extract the attached XAF_Mobile_UI_Custom file's content into the YourSolutionName.Mobile project.

                                    Q:  How do I diagnose the "Cannot load the application configuration. Error: ..." error when I run my mobile app?
                                    A:  Usually, it's difficult to determine the cause of this behavior by only the information displayed in this message box. The steps below will help you see the internal cause of this behavior, and, very often, guide you on how to fix the issue on your side yourself.

                                    1. In your Visual Studio, enable the "Common Language Runtime Exceptions"  option in the Debug | Exceptions menu item and disable the "Enable Just My Code"  option in the Tools | Options | Debugging menu item as described in the How to: Break When an Exception is Thrown MSDN article.
                                    2. Start the debugging and collect all uncaught or unhandled exceptions, and their stack traces (see the Call Stack window) as you debug the app (the debug output is not helpful for this task). Note that you may need to press the F5 (Continue) button after an exception was shown to collect details about next exceptions that do not allow your app to load. Note that certain exceptions can be safely skipped; e.g., UnauthorizedAccessException or CultureNotFoundException can be correctly handled inside the .NET libraries.
                                    3. If the additional error information does not help you overcome this problem on your side, please send us the full exception call stack and your debuggable project so we can also research this behavior locally.

                                    Q: Why does the Server Mode option have no effect when rows grouping is enabled in a List View?
                                    A:  Currently, partial data loading is not supported for grouped data in mobile applications, and there is no easy way to overcome this limitation. You can either show grouped records or use partial data loading, but not both features together.

                                    Q: How to localize an XAF Mobile application?
                                    A: Localization approaches described in the How to: Localize an XAF Application article are applicable to XAF Mobile applications. To enable the appropriate UI language automatically depending on the browser settings, include the Localization Module into the Mobile project.

                                    Q: How to integrate custom controls into an XAF Mobile application?
                                    A: Refer to the example provided in our online documentation demonstrating how to accomplish this task: How to: Add a button to a Form using Custom View Item.

                                    Q:   Can I use business objects mapped to database views or tables, whose primary key is composed of several columns?
                                    A:   No. You may receive the "The entity type 'XXX' does not have any key properties. Please make sure that one or more key properties are defined for this entity type. " error with OData Service (XpoDataServiceV3) if you map your persistent class to a table or view with a multi-column key. This configuration is not supported. Since the XAF Mobile UI uses XPO OData Service, this will not work there as well. In general, we do not recommend using composite keys as they impose many limitations on the default functionality. Refer to the How to create a persistent object for a database table with a compound key article for more details.

                                Show all comments
                                • Carlos Santillán León 04.21.2016


                                  I have a problem. I have installed VS 2013, .net framework 6.2 (ES) , but when I want to install XAFDataServiceCS.vsix i can't , it show me a message because i need to install a version which it is not installed in my computer.

                                  My question is: What framework I need to have installed in my computer? Thanks for your help

                                • José Enrique 04.22.2016


                                  You say that you are "considering offline feature" but let me tell you that it has no sense having a native hybrid app without offline capabilities because there aren't significant differences vs online web apps. In my opinion the business mobile challenge is developing native offline secured apps, so yes, this point is a must.

                                • Martin Praxmarer - DevExpress MVP 04.22.2016

                                  Same here - offline is a must have Feature for an business app!

                                • Dennis (DevExpress Support) 04.22.2016

                                  @Carlos: I've created a separate ticket on your behalf (T370776: Requirements for installing XAFDataServiceCS.vsix). It has been placed in our processing queue and will be answered shortly.
                                  @Jose, Martin: Thanks for your feedback.

                                • Paul Kubb 04.22.2016

                                  It is error today. Seems like you are developing it. (see attachment)

                                • Dennis (DevExpress Support) 04.22.2016

                                  @Paul: Yes, you just caught a two-minute interval when we were uploading the new version. It should be working now.

                                • Uros Rovtar 04.23.2016

                                  Please, think about Xamarin for XAF Mobile in the future...

                                • Franco Bonacchi 04.24.2016

                                  +1 Xamarin for XAF

                                • Dennis (DevExpress Support) 04.24.2016

                                  Thanks for your feedback, guys.

                                • Dennis (DevExpress Support) 04.24.2016

                                  @Uros, Franco: Would you please describe the key points of using Xamarin for building mobile applications over the hybrid HTML5/JavaScript/PhoneGap approach we are demonstrating here? It is likely the appearance of native controls + C#, but I would still love to hear a full list from you, guys. Thanks in advance!

                                • Alex Miller 04.25.2016

                                  @Uros & @Franco,

                                  If you could +1 the availability of DevExpress Xamarin controls... here:

                                • Erin Gray 04.25.2016

                                  You guys do such amazing work. We have been entertaining how to get a XAF application rigged up in a mobile. this feature is going to be a god send.
                                  This is very exciting.
                                  Thank you for all the hard work you put into making this happen. 

                                • Dennis (DevExpress Support) 04.25.2016

                                  @Robert: Thanks for your feedback. Hopefully, you will have several minutes to complete the following survey so we can learn more about the types of application you’re looking to build with XAF mobile:

                                • Uros Rovtar 04.27.2016

                                  Of course It all depends how complex mobile app is and how much experience somebody has with technology. We are using .Net/Mono and C# for almost all the business apps and I
                                  cannot imagine using javascript as our (offline) code base. Currently Xaf Mobile is online oriented and I think you did great job regarding that. But sooner or later client wants offline mode with data synchronization... And here comes the local actions, background processing, async/await, linq, data signing with certificate, communication with POS printers , Bluetooth devices and overall access to all the native features....,with C# we could reuse our libraries....

                                  I think Xaf Mobile should next have offline mode ( local storage, local actions) , we should also decide on the server side , which BO ( base code tables like person,post,country etc.) should be synced, which non persistent objects should be available and posibility to call any custom server side defined controller method....  What about clever controller, which is shared by mobile and server, when running in local context, data is persisted to local storage and the synced with server....
                                  i think this kind of code reuse is possible only with the same language and libraries, so +1 for .Net Core / Mono / Xaf / Xamarin, and Xpo for Xamarin :)

                                • Dennis (DevExpress Support) 04.28.2016

                                  @Urus: Thanks a lot for your explanation and suggestions.

                                • LeventUysal 05.04.2016

                                  I've created a new XAF Project (ver.15.2.9) and added a XAFDataService project. But, Project.Module component do not seem in MobileApplication's toolbox. How can I do?

                                • Dennis (DevExpress Support) 05.04.2016
                                • HENRY HAGE 05.10.2016

                                  I am testing this application on my android mobile , I am facing an issue while connecting to my database :
                                  'listViewDataSource' data source error: Unspecified network error (if the remote host is located on another domain, make sure
                                  it properly supports cross-origin resource sharing ....or use JSONP approach instead)

                                  Note:I am connecting to a database located on Microsoft azure.
                                  Do you have a solution for this problem ?

                                • Dennis (DevExpress Support) 05.10.2016

                                  @HENRY: I've created a separate ticket on your behalf (T377080: 'listViewDataSource' data source error: Unspecified network error). It has been placed in our processing queue and will be answered shortly.
                                  Please submit separate tickets  for each problem or question for better tracking. Thanks in advance.

                                • Mario Blatarić 05.24.2016

                                  +1 for Xamarin and XAF.

                                  I will just re-quote Uros:
                                  "... local actions, background processing, async/await, linq, data signing with certificate, communication with POS printers , Bluetooth devices and overall access to all the native features... "

                                  HTML5/JS is nice for presentation stuff, but when you want to implement certain business processes you just cry for C# and .NET

                                  Personally, I will be more than fine with current mobile implementation for some time as I mostly need mobile version for presentation and some basic data entry and I think current version is amazing addition to XAF ecosystem - world is moving quickly on mobile devices and having proper support in tools is extremely important.
                                  I am grateful DevExpress is recognizing this and moving things in the right direction. Since XAF is mostly business oriented, I think merging XAF and Xamarin would be great in future versions of the product (especially now when MS purchased Xamarin and made it integral part of VS).

                                  Best regards,

                                • Dennis (DevExpress Support) 05.24.2016

                                  @Mario: Thanks for your comments too - we greatly appreciate this

                                • Miles 05.24.2016

                                  +1 for Xamarin and XAF 

                                • Amin Baig 05.24.2016

                                  I have to agree with Uros.

                                  Anyone working with enterprise application will need an offline mode for data, local actions etc. with this, it would be impossible to put out an application which is field friendly for the sales force or any such people.

                                  Also, I wanted to ask, in the last release of Xaf for mobile, we had to use phonegap to build our app. Is it still the same? If so, can we expect this dependency on building externally to be removed?

                                • Willem de Vries 05.24.2016

                                  I agree with Mario.

                                  And i have the same PhoneGap question as Amin.

                                  +1 for Xamarin and XAF

                                • Maxime MERIAUX 05.24.2016

                                  Totally agree with Mario aswell :)

                                  +1 for Xamarin and XAF

                                • Dennis (DevExpress Support) 05.25.2016

                                  >>Also, I wanted to ask, in the last release of Xaf for mobile, we had to use phonegap to build our app. Is it still the same? If so, can we expect this dependency on building externally to be removed?
                                  @Amin, Willem: Yes, you need to use the service for now. Our team will take your suggestions into account for the future. Thanks.

                                • MichailTemelkos 05.29.2016

                                  +1 for Xamarin and XAF 

                                • Elias Sparagis 06.02.2016

                                  Hello DX,

                                  I'm trying to evaluate the xaf mobile UI but I got an IIS Express error .

                                  What have I missed?

                                  Please see the attached image.

                                  Thank you,
                                  Elias Sp.

                                • Dennis (DevExpress Support) 06.02.2016

                                  @Elias: I've created a separate ticket on your behalf (Unable to launch the IIS Express Web server). It has been placed in our processing queue and will be answered shortly.
                                  For the future, please submit separate tickets  for each problem or question for better tracking. Thanks in advance.

                                • Elias Sparagis 06.02.2016

                                  Please accept my apologies.

                                  Thank you.

                                • Dennis (DevExpress Support) 06.02.2016

                                  @Elias: No worries

                                • 06.09.2016

                                  Hi I'm getting following error:
                                  Cannot load the application configuration. Error:

                                  <!DOCTYPE html>



                                          <title>The resource cannot be found.</title>

                                          <meta name="viewport" content="width=device-width" />


                                           body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;}

                                           p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}

                                           b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}

                                           H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }

                                           H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }

                                           pre {font-family:"Consolas","Lucida Console",Monospace;font-size:11pt;margin:0;padding:0.5em;line-height:14pt}

                                           .marker {font-weight: bold; color: black;text-decoration: none;}

                                           .version {color: gray;}

                                           .error {margin-bottom: 10px;}

                                           .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }

                                           @media screen and (max-width: 639px) {

                                            pre { width: 440px; overflow: auto; white-space: pre-wrap; word-wrap: break-word; }


                                           @media screen and (max-width: 479px) {

                                            pre { width: 280px; }




                                      <body bgcolor="white">

                                              <span><H1>Server Error in '/' Application.<hr width=100% size=1 color=silver></H1>

                                              <h2> <i>The resource cannot be found.</i> </h2></span>

                                              <font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">

                                              <b> Description: </b>HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable.  Please review the following URL and make sure that it is spelled correctly.


                                              <b> Requested URL: </b>/MainDemoMetadataService.svc/AppConfig<br><br>



                                • Dennis (DevExpress Support) 06.09.2016

                                  I've created a separate ticket on your behalf (Cannot load the application configuration. Error:). It has been placed in our processing queue and will be answered shortly.

                                  For the future, please submit separate tickets via the service  for each problem or question for better tracking instead of leaving comments in this KB article. Thanks in advance.

                                • DEEPAK CHAVAN 06.21.2016

                                  XAF on mobile will be excellent move. Please make UX enhancements something
                                  Give ability to set UI fields as per database size
                                  Give ability to do more client side validation like numbers range

                                  Offline is must have feature I have seen user use it less but its first demand.
                                  Then auto sync data between offline and online db

                                  Thanks and Regards
                                  Deepak Chavan, PMP

                                • Dennis (DevExpress Support) 06.21.2016

                                  @DEEPAK: Thanks for your suggestions. Our team will take them into account.

                                • Bjoern Isemann 06.22.2016

                                  Its a perfect solution for a  new project i just got. nevertheless, offline database is a must for us. We need to sync the data with our database server via OData while having WLAN and work offline when using the device offsite where no access to the intranet is possible and allowed. Finally, when WLAN is available again, the data needs to be uploaded via action to the server.

                                  It shouldnt be a big issue to build this functionallity if i can use local databases on the device, like microsoft sql compact etc. :-)

                                • Willem de Vries 06.22.2016

                                  Take a look at Microsoft's Synchronisation Framework:

                                • Dennis (DevExpress Support) 06.22.2016

                                  @Bjoern  and Willem: Thanks for your comments.

                                • Hans Rutstrom 06.28.2016

                                  This looks great and a much appreciated addition to the XAF eco system.

                                  Just a question though. Does things like automatic invokation of workflow instances work with the mobile/dataservice solution? Say you have a workflow set up to trigger when a particular business object is created, will this work when the object is created from a mobile device?

                                • Dennis (DevExpress Support) 06.28.2016

                                  @Hans: Thanks for your feedback. I've created a separate ticket on your behalf (T397363: Will a workflow definition with AutoStartWhenObjectIsCreated = True still be triggered when target data records are created by external code directly in the database?), and it has been placed in our processing queue.
                                  For the future, please submit separate tickets via the service  for each problem or question for better tracking instead of leaving comments in this KB article. Thanks in advance.

                                • James S K Makumbi 09.18.2016

                                  Hi, I notice you have removed the CTP from 15.2.12 (or earlier).
                                  The only way to get to use this is with 16? This was an unusual workflow (add a feature then remove it) but I understand.

                                • Dennis (DevExpress Support) 09.19.2016

                                  @James: The mobile UI (CTP) functionality prior to the v16.1 release was distributed as part of a demo application that could be installed by interested users manually in their Visual Studio via the VSIX template. It has never been a part of the main product before, so there is nothing to remove here. Our first public preview in v15.2.9 was primarily targeted to collect opinions from a large audience on the direction we are moving on with this feature, which was not yet supposed to be used in production. Previously (December 2015), we ran a private preview for just a hundred of users for the same exploration purposes.
                                  So, to answer your question directly: yes, it is now recommended to install the XAF v16.1+ (registered or trial) and follow the Getting Started > XAF Mobile (CTP) Tutorial tutorial to explore this CTP feature. As an exception, I can obtain the old VSIX demo we provided in the past for you, but we no longer provide a tutorial/support for that old version + the supported functionality has greatly changed in certain aspects.

                                • Farooq 01.03.2017

                                  Hi Dennis

                                  Last time when I tried the XAF mobile CTP release I found that server URI was hard coded in the package. I would like to check whether this issue is resolved or not. In One of the comments I noticed that URI of the production server is now being packaged with the app but my scenario is that I have several clients who are running my XAF and if I have to provide them with a mobile app then how can I package it without any URI and let the user selects/types the URI on his app and then the app connects to the corresponding server. 

                                • Uriah (DevExpress Support) 01.04.2017

                                  Hi Mohammed,

                                  I've created a separate ticket on your behalf (T468469: Can I connect an XAF Mobile application to an arbitrary service?). It has been placed in our processing queue and will be answered shortly.

                                • Roman Shelomanov 02.07.2017

                                  Looks like a good start to move ASP.NET client to HTML5 also,

                                • Norbert K. 04.04.2018

                                  +1 for Xamarin and XAF

                                • Dennis (DevExpress Support) 09.20.2018

                                  Hello everyone!

                                  I wanted to share our updated vision for XAF Web & Mobile development – one that’s based on an entirely new SPA driven UI. When this ASP.NET Core and React-based solution matures, it will supersede/replace existing WebForms and Mobile user interfaces.

                                  Right away, existing XAF Mobile UI users are welcome to migrate to our newest server features: How to connect an existing XAF Mobile application to the new ASP.NET Core Data Service (CTP). The new SPA UI will use this server and you can help us release this portion faster by providing feedback.
                                  We hope to publish new SPA UI demos online after our v18.2 release. In the meantime, anyone is welcome to check screenshots of our prototypes and discuss their specs in our forum with peers. No promises at this stage, but our hope is to offer this SPA UI for production use around the v19.1 timeframe (at least for simple scenarios).


                                • Scott Gross 09.26.2018

                                  ok, looks like it's time to start learning React!

                                • Dennis (DevExpress Support) 09.26.2018

                                  >> ok, looks like it's time to start learning React!
                                  @Scott: Our target audience is mostly C#/VB .NET developers. The majority of existing XAF users does not often make complex customizations of underlying controls and the rest infrastructure. Since the framework generates the UI transparently and you also have a high-level control over it using the Model Editor or attributes, we hope that React knowledge will not be needed much (at least for the majority of our users). APIs that we will provide to SPA UI developers for client-side customizations will be transparent and client-side framework agnostic anyway.

                                • Dennis (DevExpress Support) 03.15.2019


                                  We have published an early preview v19.1 build and updated this KB article so that you can learn more about the new SPA UI development. You can also discuss it with other XAFers on the private forum if you wish.
                                  For more information on features that you can expect in v19.1, check out these blog posts.


                                • Akin GUNES 03.15.2019

                                  Hi Dennis,
                                  I think it is time to split this SPA UI and old Mobile UI part into seperate articles. 

                                • Stanislaw.Tristan 05.22.2019

                                  What about Blazor? I understand that currently it is in a preview, but interest to know - if the Blazor development and support trends will grow - is it a possibility for implementation of future versions of SPA with it?

                                • Dennis (DevExpress Support) 05.22.2019

                                  @Stanislaw.Tristan: Blazor is a very interesting direction, and we are researching it. For instance, other DevExpress teams published control previews: You can also check out my non-XAF example for XPO with Blazor:
                                  At this stage, we are not ready to discuss XAF Blazor UI or any time frames, mainly because the new tech is still raw. Right now, we continue our SPA UI (CTP) development according to our initial plan.

                                  In that respect, how important is it for you to use Blazor, React or another tech under the hood as long as the Web app does what your clients want? If you already experimented with Blazor and can share your thoughts on how it compares to other Web tech, we will be more than happy to hear from you.
                                  From the developer prospective, C# may be a more preferred choice, but Blazor does not save your from JavaScript completely. And like with the former ASP.NET WebForms UI, with SPA UI our users may want to use JavaScript only for some advanced customizations.

                                • Stanislaw.Tristan 05.22.2019

                                  @Dennis. I'm not using Blazor (and even have not tested it). But I watching it in context of support by component vendors like Devexpress. I believe that your SPA implementation will be powerful and cover most business scenarios. But in the case when we need to implement some customization (currently this is often my use case in XAF WinForms) and my customers will decide to switch from WinForms to SPA - I will prefer to use as match of C# as possible to perform the migration of custom controls.

                                • Dennis (DevExpress Support) 05.22.2019

                                  @Stanislaw.Tristan: Thank you for sharing your thoughts.

                                • Dennis (DevExpress Support) 06.05.2019


                                  What would you prefer or how do you feel (and why?) if you face the following choice today:
                                  1.  Wait 1 year for a stateless XAF React and ASP.NET-based UI. Its client-server architecture would differ a lot from WinForms. Custom tasks and control customizations would often require good Web technology knowledge (modern JavaScript, HTML, CSS, ASP.NET Core, etc.).
                                  2.  Wait 2 years for a stateful XAF Blazor-based UI (server-side hosting model) with a potential for offline support with WebAssembly in the far future. Custom tasks and control customizations would likely require only C#/VB.NET or a minimal Web technology knowledge.

                                • Martin Brekhof 06.05.2019

                                  Option 2 with the timeline of option 1 :-)
                                  As I am currently doing all mobile development in Xamarin I am mainly interested in creating administrative backends and or BI tools (reporting/pivot tables etc.). Blazor seems to perform exceptionally well performance wise so that would have my preference.


                                • Paul Kubb 06.05.2019
                                  1. seems more scalable, but i believe it will be a mess and buggy due to the very different architecture. if i had choices i would rather not use it.
                                  2. seems to be easier in transformation for both of us. while scalability is still in question. but i believe it will be better than traditional also your already superb components such as gridcontrol or pivotgrid will be the same so no need to mess with project migration.

                                  i go for 2.

                                • José Enrique 06.05.2019

                                  Without doubting I would choode first approach. It is stateless which means scalability, probably a better UX and definetly a jump towards cloud. It Is just where LOB applications should be, and of course this deserves an efford if we want to develop quality web applications.

                                • Pawel Botwina 06.05.2019

                                  Option 2.
                                  Time will always pass ...

                                • Dave Hesketh (Llamachant Technology) 06.05.2019

                                  Option 2. I really like the idea of scalability in option 1 but I'd rather not endure the hassle of creating new editors and templates using a broken technology (JavaScript to Browser).

                                  Also, the idea of offline support down the road is HUGE.

                                • Marco Kummer 06.05.2019

                                  Option #1, preferrably with VueJs instead of React, as Vue is growing faster and follows a cleaner approach and is less JS focused.

                                  As for option 2, I‘d like to remind everyone here that Microsoft once promised Silverlight to be the next holy grail in web development. I think it‘s fair to assume that even DX made losses with all their silverlight components. So I think it‘s time we embrace the fact that web development uses different paradigms than the C# world. We should not fight against this fact, but instead make it our friend. If you really need the comfort of C#, I recommend It doesn‘t lock you in the way Blazor does.

                                • Pietro Allegretti 06.05.2019

                                  Option 2 for me, but you should make a convincing work in the cloud ready direction.

                                • Chris Royle (LOB) 06.05.2019

                                  Marco Kummer makes a good point.

                                  Being an optimist I'd say option 2 - as this would also allow for some early influence in the development of the DX Blazor component suite.

                                • Dennis (DevExpress Support) 06.05.2019

                                  My team and I appreciate your thoughts, Guys. As for scaling and clouds, you may find this information from Dan Roth interesting:
                                  "WebSockets are required when publishing a server-side Blazor app. Publishing a server-side Blazor app to Azure App Service should work fine today as long as you do a self-contained deployment. However, we also recommend using the Azure SignalR Service with server-side Blazor apps, which should remove the need to enable WebSockets and will dramatically improve the ability of your app to scale out.".

                                • Randy Jean 06.05.2019

                                  As of today, I would choose Option 2 only because we have no pressing need for mobile XAF apps today that we can't achieve with the New Web UI theme with mobile layouts (assuming requirements are simple and a mobile web app is acceptable)

                                • Bassam Abdelaal 06.06.2019

                                  Option 2 is more preferable because :
                                  Its more natural for .net developers (C# , .Net), XAF Blazor controls customization will be much easier and faster for developers and also – I guess -  even easier for DevExpress to produce examples , how tos , much less support tickets than a pure JS/HTML/CSS version of controls
                                  We have no immediate must have mobile version, can wait , since option 1 & 2 will need sometime anyway then better to wait for the more convenient output , meanwhile current XAF web is very good enough with many options and new editors produced
                                  Blazor is not like Silverlight , WebAssembly is a consensus standard this time , Microsoft , Google , Mozilla and others are strongly embracing it , its not a plugin and it runs in major browsers
                                  Clearly Blazor will have a huge impact , most are very interested about it, see what DX did in even a pre 1.0 version and other third party control vendors are doing , currently preparing for version 1.0 , progress in feature list will come so fast from DevExpress clearly satisfying the need for XAF Blazor
                                  Promising future implementations like offline with WebAssembly makes it even more interesting , So we very much hope it can be XAF Blazor instead of XAF JS

                                • Alexander Krakhotko (Xafari team) 06.06.2019

                                  'm for Option 1 - web application scalability is very important to us (1000+ users)
                                  option 2: two years is a very long time for us, but when it comes we migrate to simplify development projects

                                  Now we are creating our "xafari-html5-client" because of the need to have one client for XAFapps and not-XAF applications (delphi, c++ etc) (one client for different applications)

                                • Martin Praxmarer - DevExpress MVP 06.06.2019

                                  "xafari-html5-client - that sounds interessting - do you have further details on this? 

                                • Stanislaw.Tristan 06.06.2019

                                  Option # 2, as I have already mentioned in my comment above

                                • mgc 06.06.2019

                                  option #1
                                  For us, top priority for the web applications is performance and UI customisation. That is why we use XAF for Windows and ASPNETZero for Web apps.

                                • José Enrique 06.06.2019

                                  Hi mgc, have you managed ASPNETZero or ABP with XPO in order to reuse XAF BO model?

                                • Alex Miller 06.06.2019

                                  @Dennis Can you share the link to the repo of the test BlazorXAFSolution teased in the screenshot?

                                • Alexander Krakhotko (Xafari team) 06.06.2019

                                  Martin Praxmarer: we do not have a public version yet. plan by the end of the 2019 year

                                • Dennis (DevExpress Support) 06.09.2019

                                  @Alex Miller: Not in public at this stage (check your email).

                                • Eric Upton 1 06.13.2019

                                  #2 - Blazor
                                  In my limited understanding of WebAssembly and Blazor, it feels like this will be the future model for web dev. I'm certain the html, javascript, and css model will likely be around for a very long time, but I feel like the WebAssembly approach is the next major evolution. We're C#/.Net developers. It will be much better to program and customize in C#/.Net
                                  Javascript requires framework on top of framework to make it behave and function the way we need for modern apps. And it is still awful.
                                  A few concerns with Blazor/WASM:
                                  1. Will it go the way of Silverlight?
                                  Reasons I don't think Blazor will die off like SilverLight
                                  It is Open Source
                                  Doesn't require any special plugins to run on client/user side (WASM is currently supported in all modern browsers)

                                  2. In my opinion Blazor and WASM are not yet mature, and may not support all expected features of a modern web app
                                  it's only a matter of time. Especially now with Microsoft going full steam ahead with Blazor, I believe WASM will grow even more.
                                  3. Are we asking WASM to do something it wasn't intended to do?

                                  Time will tell, but I think we've done much worse by making javascript do what it was never intended to do. In my opinion this will be a much more robust solution.
                                            4. Stateful/Stateless architecture
                                  This is my biggest concern regarding Blazor and one of the things I like most about your current progress with the SPA UI. Scalability will be more of a challenge with Blazor using a Stateful arch, but it's something I can live with for my typical Line of Business App.

                                • Decoder4 06.30.2019

                                  I am very curious about the outcome of your research regarding # 1 and # 2. Our preference is # 1 based purely on speed and proven technology. xaf has been lagging behind the web environment for years and constantly changing technology offers us too much uncertainty.

                                • Scott Gross 06.30.2019

                                  Agreed, #1

                                • Casey Chester 07.16.2019

                                  #2 Blazor.
                                  Look at it from the perspective of many of your existing customers that are using XAF primarily for developing exactly what XAF was originally designed for - enterprise applications. To date, they have done this with WinForms and WebForms, both of which allow 99.999% XAF customization's to performed in a .NET language. DX should not underestimate the huge value proposition this poses to many small to medium sized businesses with limited budgets for custom enterprise application development.

                                  Now you are telling these same customers that the future of XAF on the web is focused on MANY non-.NET languages/technologies. It just seems to me that Blazor/WASM would allow DX to deliver the improvements some customers require while staying true to customers that selected XAF primarily for the value proposition described earlier.

                                  Besides, there is a good chance in two years time React will have completely fell out of favor for the next newest framework or technology, which may very well be Blazor.

                                  If I were XAF product manager, it seems like an easy decision to me.

                                  My $0.02 worth.

                                  Casey Chester 

                                0 Solutions

                                Creation Date Importance Sort by