DevExtreme UI Component Suite

25.2.6 · active · verified Sun Apr 19

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.

Common errors

Warnings

Install

Imports

Quickstart

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.

import Button from 'devextreme/ui/button';
import DataGrid from 'devextreme/ui/data_grid';
import ArrayStore from 'devextreme/data/array_store';
import 'devextreme/dist/css/dx.light.css';
import 'devextreme/dist/css/dx.common.css';

document.addEventListener('DOMContentLoaded', () => {
  const data = [
    { id: 1, firstName: 'John', lastName: 'Doe', city: 'New York' },
    { id: 2, firstName: 'Jane', lastName: 'Smith', city: 'London' },
    { id: 3, firstName: 'Peter', lastName: 'Jones', city: 'Paris' },
  ];

  const buttonElement = document.createElement('div');
  document.body.appendChild(buttonElement);

  new Button(buttonElement, {
    text: 'Click Me',
    onClick: () => {
      alert('Button clicked!');
    },
  });

  const gridElement = document.createElement('div');
  gridElement.style.marginTop = '20px';
  document.body.appendChild(gridElement);

  new DataGrid(gridElement, {
    dataSource: new ArrayStore({
      key: 'id',
      data: data,
    }),
    columns: [
      { dataField: 'firstName', caption: 'First Name' },
      { dataField: 'lastName', caption: 'Last Name' },
      { dataField: 'city', caption: 'City' },
    ],
    showBorders: true,
    paging: {
      pageSize: 5,
    },
    filterRow: {
      visible: true,
      applyFilter: 'auto',
    },
    headerFilter: {
      visible: true,
    },
  });
});

view raw JSON →