DevExtreme is an enterprise-ready JavaScript/TypeScript UI component suite offering a comprehensive collection of high-performance and responsive UI components for web development. It supports popular front-end frameworks including Angular, React, Vue, and jQuery. The current stable version is 25.2.6, released on April 7, 2026. DevExtreme maintains a consistent release cadence with two major versions annually (e.g., 25.1 and 25.2) and frequent patch updates for bug fixes and minor enhancements. Key differentiators include a vast array of widgets like DataGrid, TreeList, and various charts, alongside an integrated theming engine, client-side data management, and extensive globalization capabilities. It provides a unified API for a consistent developer experience across supported frameworks, abstracting underlying DOM complexities.
npm install devextremeVerified import paths — ran on the pinned version, not inferred.
This example demonstrates how to initialize a DevExtreme Button and a DataGrid component using vanilla TypeScript, populating the grid with local data and applying a common theme. It showcases direct DOM manipulation and widget instantiation without a framework wrapper.
Review the 'Breaking Changes' section in the official documentation for the specific version you are upgrading to. Update component configurations, property names, and event handlers as instructed. Leverage the deprecated API console warnings for guidance.
Obtain your license key from DevExpress and follow the instructions to register it in your application, typically via environment variables or a specific configuration file. Refer to the DevExtreme licensing documentation for details.
To mitigate Module Federation `instanceof` issues, ensure that DevExtreme modules are *not* shared between federated modules, or are shared strictly as singletons. This can lead to larger bundle sizes but prevents runtime errors. Consider using specific import paths or configuring Webpack's `shared` options carefully.
Ensure jQuery is loaded and available in the global scope before DevExtreme scripts if you are using DevExtreme in a vanilla JS or jQuery-centric application. For modern framework usage (React, Angular, Vue), rely on `devextreme-react`, `devextreme-angular`, or `devextreme-vue` packages which handle framework integration appropriately.
Migrate your NuGet package sources from `NuGet.DevExpress.com` to `NuGet.org` for DevExpress packages to ensure continued updates and compatibility with future releases. Update your local and CI/CD environments accordingly.
Verify that jQuery is included in your project and loaded before DevExtreme scripts. If using ES modules, ensure the specific widget is imported correctly, e.g., `import DataGrid from 'devextreme/ui/data_grid';`. If using framework wrappers, ensure the wrapper component is correctly imported and rendered.
Set the `keyExpr` property in the DataGrid/TreeList configuration to the name of the field that uniquely identifies data objects (e.g., `keyExpr: 'id'`). If using a `DataSource` with an `ArrayStore`, specify the `key` option in the `ArrayStore` configuration.
Configure your server to allow longer URL query strings. Alternatively, for large or complex filters, consider using the `POST` method for data requests, if supported by your data service, by configuring the `load` method of your `CustomStore` to send data in the request body instead of the URL.
Ensure that your `CustomStore`'s `load` method consistently returns an object with both `data` (the array of items) and `totalCount` (the total number of items, usually from the server response). If `totalCount` is not directly available from the server, you might need to fetch it separately or ensure the server-side logic provides it.