Registry / web-framework / devextreme-react

devextreme-react

JSON →
library25.2.6jsnpmunverified

DevExtreme React is a comprehensive suite of UI and visualization components for React applications, providing high-performance, enterprise-grade widgets such as data grids, charts, editors, and navigation controls. These components act as React wrappers around the core DevExtreme JavaScript library. The current stable version is 25.2.6. DevExtreme typically follows a structured release cadence with two major updates per year (e.g., 25.1, 25.2) and frequent patch releases, often monthly or bi-monthly, ensuring continuous improvements and bug fixes. Key differentiators include an extensive feature set within components (like advanced data binding, filtering, and grouping in the DataGrid), a consistent API, and comprehensive documentation. It is particularly well-suited for complex business applications requiring a rich, responsive user interface. While the `devextreme-react` package itself is MIT licensed, the underlying DevExtreme components require a commercial license from DevExpress for production use.

npm install devextreme-react
INSTALL
IMPORT
SIG · DEVEXTREME-REACT
D
devextreme-react
web-frameworkjavascriptv25.2.6
Install
Import
Disk
Pass rate
0/ 6
Env Coverage0 / 6
glibc
1822
musl
1822
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
node 18226 runs
build_error
glibc
node 18226 runs
build_error
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

DataGrid
import DataGrid, { Column, Editing, Paging } from 'devextreme-react/data-grid';
import { DataGrid } from 'devextreme-react'; // Incorrect, specific component path needed
Most DevExtreme React components are exported as default from their specific path. Sub-components (like Column, Editing) are named exports from the same module.
Button
import Button from 'devextreme-react/button';
const Button = require('devextreme-react/button'); // CommonJS is not the primary usage pattern for modern React apps with this library.
For simpler components, the default export is often the component itself. Ensure your build system handles ESM imports correctly.
dx themes
import 'devextreme/dist/css/dx.light.css'; import 'devextreme/dist/css/dx.material.blue.light.css';
import 'devextreme-react/dist/css/dx.light.css'; // Themes are part of the core 'devextreme' package, not 'devextreme-react'.
The core DevExtreme CSS themes must be imported from the `devextreme` package. Choose one base theme (e.g., `dx.light.css`) and optionally a material or fluent theme.

Demonstrates a basic DevExtreme DataGrid in a React component with local data, paging, and in-grid CRUD operations using a popup form. It also includes necessary theme imports.

import React from 'react'; import DataGrid, { Column, Paging, Pager, Editing, Popup, Form, RequiredRule } from 'devextreme-react/data-grid'; import 'devextreme/dist/css/dx.material.blue.light.css'; // Or another theme const employees = [ { id: 1, firstName: 'John', lastName: 'Doe', city: 'New York', position: 'Developer' }, { id: 2, firstName: 'Jane', lastName: 'Smith', city: 'London', position: 'Designer' }, { id: 3, firstName: 'Peter', lastName: 'Jones', city: 'Paris', position: 'Manager' }, // More data... ]; function App() { const onRowInserting = (e) => { // Simulate API call for adding a new employee console.log('Inserting row:', e.data); employees.push({ ...e.data, id: employees.length + 1 }); e.component.refresh(true); }; const onRowUpdating = (e) => { // Simulate API call for updating an employee console.log('Updating row:', e.newData, 'for:', e.oldData); Object.assign(employees.find(emp => emp.id === e.key), e.newData); e.component.refresh(true); }; const onRowRemoving = (e) => { // Simulate API call for removing an employee console.log('Removing row with key:', e.key); const index = employees.findIndex(emp => emp.id === e.key); if (index > -1) { employees.splice(index, 1); } e.component.refresh(true); }; return ( <div className="app-container" style={{ margin: '20px' }}> <h2>DevExtreme DataGrid with Basic CRUD</h2> <DataGrid dataSource={employees} keyExpr="id" showBorders={true} onRowInserting={onRowInserting} onRowUpdating={onRowUpdating} onRowRemoving={onRowRemoving} > <Paging defaultPageSize={10} /> <Pager showPageSizeSelector={true} allowedPageSizes={[5, 10, 20]} showInfo={true} /> <Editing mode="popup" allowAdding={true} allowUpdating={true} allowDeleting={true} useIcons={true} > <Popup title="Employee Info" showTitle={true} width={700} height={340} /> <Form> <RequiredRule message="First Name is required" /> <RequiredRule message="Last Name is required" /> <RequiredRule message="Position is required" /> </Form> </Editing> <Column dataField="firstName" caption="First Name" /> <Column dataField="lastName" caption="Last Name" /> <Column dataField="city" caption="City" /> <Column dataField="position" caption="Position" /> </DataGrid> </div> ); } export default App;
Debug
Known issues
gotchaDevExtreme is a commercial product. While `devextreme-react` itself is MIT licensed, using the underlying DevExtreme components in production requires purchasing a commercial license from DevExpress. Without a valid license, trial messages or warnings may appear.
fix
Purchase a DevExtreme commercial license and apply the provided license key in your application. Instructions are available in the DevExpress Download Manager.
affects: >=18.1
breakingMajor version upgrades of DevExtreme (e.g., from v24.x to v25.x) often introduce breaking changes in component APIs, behavior, or underlying dependencies. `devextreme-react` versions typically align with the core `devextreme` package, meaning its minor/major versions reflect these breaking changes.
fix
Always consult the official 'What's New' and 'Breaking Changes' documentation for the specific DevExtreme version you are upgrading to. Update all DevExtreme and `devextreme-react` packages to the matching major version.
affects: >=25.1
gotchaDevExtreme themes must be explicitly imported from the `devextreme/dist/css` path. Failing to do so will result in unstyled components, impacting the visual appearance and user experience.
fix
Add appropriate CSS imports at the root of your application, for example: `import 'devextreme/dist/css/dx.light.css';` or `import 'devextreme/dist/css/dx.material.blue.light.css';`. You may also use the ThemeBuilder for custom themes.
affects: >=16.2
breakingThe `devextreme-react` package requires specific React and `devextreme` peer dependency versions. Using incompatible versions can lead to runtime errors or unexpected behavior. For instance, recent versions might require React 17+.
fix
Ensure your `react`, `react-dom`, and `devextreme` packages match the peer dependency requirements specified for your `devextreme-react` version. For instance, `devextreme-reactive` updated its minimum React version to v17.0.2 in v24.2.
affects: >=24.2
gotchaDevExtreme components can have performance implications with very large datasets or complex configurations if not optimized. Features like virtualization, lazy loading, and server-side data processing are crucial for maintaining responsiveness.
fix
Implement data virtualization (e.g., infinite scrolling, paging), server-side data processing, or utilize `CustomStore` with remote operations for large datasets. Profile your application to identify bottlenecks.
affects: >=16.2
Errors
Common errors & fixes
TypeError: Cannot read properties of undefined (reading 'setup') / Error: E0024 - 'dx.all.js' or 'dx.web.js' module is not referenced.
This typically means the core DevExtreme JavaScript logic or themes are not properly loaded or initialized before a DevExtreme component is rendered.
fix
Ensure you have correctly imported the DevExtreme CSS themes (e.g., `import 'devextreme/dist/css/dx.light.css';`) and that your `devextreme` package is installed and accessible. Check for any missing scripts if not using a module bundler.
ReferenceError: DataGrid is not defined
The specific DevExtreme React component (e.g., `DataGrid`) was not correctly imported into the component file.
fix
Add the correct import statement for the component, typically a default import from its specific path, e.g., `import DataGrid from 'devextreme-react/data-grid';`.
E2001 - Data of an unsupported type was provided to a UI component.
DevExtreme UI components, especially data-bound ones, expect specific data types (e.g., an array of objects for a DataGrid's dataSource). Providing an incompatible type will cause this error.
fix
Review the documentation for the specific component's `dataSource` or other data-bound properties and ensure the data you are providing matches the expected format and types.
Invariant Violation: Minified React error #130; visit https://reactjs.org/docs/error-decoder.html?invariant=130
This is a generic React error, but with DevExtreme, it can often indicate issues with React version compatibility or incorrect component usage within the React lifecycle.
fix
Verify that your `react` and `react-dom` versions satisfy the `devextreme-react` peer dependency requirements. Check your component's `render` method for common React pitfalls like returning multiple elements without a fragment, or incorrect state updates.
Upgrade
Version history
25.2.6latest on npm
Audit
Dependencies
reactrequiredPeer dependency required for rendering React components.
react-domrequiredPeer dependency required for rendering React components to the DOM.
devextremerequiredCore DevExtreme library providing the UI components' functionality. This package wraps it.
Agent activity
6 hits · last 30 days
node
4
Resources