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

                                    UPDATED on December 28th 2018

                                    We have finished the MVP V0 demo announced earlier in the private forum for Universal customers. To play with this demo, do the following:
                                     - Install this build;
                                     - Make sure that you have Visual Studio 2017+ and the latest Node JS installed;
                                     - Download SPA demo source (there are currently no online demos) and run the SpaDemo.Spa project. The first build will download all required Node JS modules and may take a while depending on your network. 

                                    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).


                                    To see what is supported at this stage, consult with the change log below. 

                                    Even though MVP V0 demo scope is limited, please try to answer a simple "Did you like it?" question and leave comments for each category in this short survey. Your testing efforts and additional actionable information will help us deliver the best possible final implementation.

                                    Main application shell & infrastructure
                                     - Main application template supports desktop browsers except for Internet Explorer. We have not performed any layout optimizations or tests for mobile/tablet browsers yet. We will support the same modern browsers as DevExtreme.
                                     - 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 now fully 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 security system and other extra modules support at this stage. You can safely skip the "Choose Security" and "Choose Extra Modules" steps and press Finish in the Solution Wizard.
                                     - Application Designer does not open on a double-click - use the View Designer context menu command instead (Shift+F7). Microsoft may improve this in Visual Studio 2019 (track GitHub issue);
                                     - The Solution Wizard does not allow adding an SPA project to an existing solution - create separate projects for tests.

                                    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.


                                    Known behavior:
                                     - ChoiceActionItem.Active/Enabled or IModelNavigationItem.Visible do not hide the item completely (borders are still displayed).

                                    Note ListView
                                     - 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, GroupSummaryIsGroupPanelVisibleDataAccessMode = Client, EditorType = DevExpress.ExpressApp.Spa.Editors.SpaGridListEditor, MasterDetailMode = ListViewOnly, AllowDeleteAllowNew.

                                     - Column chooser allows hiding visible or showing invisible columns. The hidden column state is not preserved and 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.

                                    Known behavior:
                                     - Save & Close does not refresh the ListView and you can use the native browser's functionality to refresh data (for instance, F5). We may return the standard Refresh Action in the future or support auto-refresh in this scenario.

                                    Note DetailView 

                                     - 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
                                     - Only System.String and System.DateTime properties are supported according to plan. No collections, reference and other property editors at this stage (for instance, inheritance from Person or other classes with such properties will not work either).
                                     - DetailView editors powered by DevExtreme have different appearances in the focused, unfocused, hovered and disabled states. You can copy text data from readonly editors.

                                     - 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).

                                    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. PopupWindowShowAction  is unsupported.


                                    - 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:
                                     - The SetFilter Action may switch back to the default item (Created this year) when you select another filter item (All notes) explicitly or change selected ListView items.


                                    FAQ: SPA UI for Web & Mobile (CTP)
                                    What is ETA for this SPA UI and what do I test today?
                                    A:  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).
                                    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 discussion forum - 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.

                                     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

                                     What is the Mobile UI future?
                                    A: The Mobile UI is now 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. 

                                    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).

                                     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.

                                     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!

                                Show all comments
                                • 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:

                                • 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.
                                • 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 
                                • 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.

                                1 Solution

                                Creation Date Importance Sort by

                                Old content related to the XAF Mobile UI (Maintenance Mode)
                                We are working on the functionality that will help you build mobile applications for Android and iOS using XAF easily, similarly to how you already do it for Windows and the Web, and we are ready to share our first results. The new features will allow you to reuse your database, as well as certain aspects of your data model, application logic and UI settings of your existing XAF applications and thus avoid routine work usually associated with mobile app development (this support article provides a top-level overview of the steps needed to build a mobile app without using the newly introduced XAF feature).

                                The current v18.1 version represents the beta ( and this article gives answers to the questions asked most frequently.
                                Until it is officially released, we recommend you always install and test the latest product versions for evaluation and testing purposes. That is also because we do not make improvements or fixes in older preview versions and thus cannot effectively assist you in case of problems.


                                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.


                                SUPPORT & LIFE CYCLE
                                 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.

                                You are also welcome to complete the following survey so we can learn more about the types of application you’re looking to build:

                                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.


                                Q: Can I use this feature in production?
                                A: We do not recommend it as the feature is currently in beta.  Refer to the "1.5 PRE-RELEASE SOFTWARE" section of our EULA  for more details. For instance, the Mobile UI (beta) contains known issues and missing capabilities + requires thorough testing and further R&D.


                                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.

                                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 anywhere, e.g., behind your XAF or 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: What has been changed in the latest mobile preview as compared to the initial December's version?

                                A: Besides bug fixes and updating from CTP to Beta, the following features were added:

                                  * Support for ImmediatePostData, DataSourceCriteria, DataSourceProperty and DataSourceCriteriaProperty attributes.
                                  * PhoneGap Plugins integration through the MobileApplication.AdditionalPhoneGapPlugins property.
                                  * A new 'Localization Mobile' module that automatically enables use of the appropriate UI language and value formatting based on device settings.
                                  * With XAF Mobile Custom Modules, you can use third-party mobile controls or register custom JavaScript functions (which can be called in client event handlers).
                                Refer to our What's New section for additional details.

                                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.

                                • Mark Janecek 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:
                                • 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.

                                • 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. &nbsp;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,