The JavaScript framework for data-intensive apps.
Ext JS is a comprehensive JavaScript framework for cross-platform web and mobile apps. Start with 140+ high-performance UI components, from grids and pivot grids to charts and calendars.
| ID | Company | Last | Change |
|---|---|---|---|
| 1 | Contoso Ltd | 29.01 | +0.42 |
| 2 | Fabrikam Inc | 83.81 | -0.28 |
| 3 | Tailspin Toys | 52.55 | +0.01 |
| 4 | Northwind | 71.72 | +0.02 |
| 5 | Adventure Works | 64.13 | -0.31 |
| Country | 2024 | 2025 |
|---|---|---|
| Total | 1,940 | 2,315 |
| US | 820 | 965 |
| Japan | 410 | 495 |
The 30-day trial installs straight from public npm.
Customers install from Sencha’s private npm registry.
Download the trial zip from the free trial page. It includes the Sencha Cmd installer.
Get the SDK zip from the support portal and install Sencha Cmd.
Trusted by the world’s leading companies
Sencha tools to design, build and test Ext JS apps.
Ext JS comes with tools for every stage of development, from low-code app building and visual theming to debugging, testing and production builds.
Sencha Cmd & ExtGen
Scaffold apps, minify code and create production builds from the command line, with npm-based ExtGen or Sencha Cmd.
Rapid Ext JS
A low-code editor inside VS Code. Build Ext JS apps with drag-and-drop, real-time preview and 140+ UI components.
Sencha Architect
Build HTML5 apps with drag-and-drop features, so your team spends less time on manual coding.
Sencha Themer
Create custom themes with graphical tools, without writing code, and preview them on real components.
Sencha Test
The most comprehensive unit and end-to-end testing solution for Ext JS, including end-to-end tests for React apps.
Sencha Inspector
Debug Ext JS apps with direct access to components, classes, objects and stores.
IDE plugins
Code completion and code generation for framework classes, views, models, controllers and stores in VS Code and JetBrains IDEs.
Sencha Fiddle
Try Ext JS code in your browser with nothing to install, then share it with a link.
Sencha Stencils
A complete UI asset kit for Adobe Illustrator, Adobe XD, Sketch and Balsamiq, also available as SVG and PNG.
Upgrade Adviser
Scan your codebase to find the changes you need before moving to a newer Ext JS version.
Ask Sencha AI
Ask Ext JS questions in plain language and get answers grounded in the Sencha documentation.
Security & Compliance



Real companies, real results with Ext JS.
Teams at Morgan Stanley, Hitachi Energy, Blue Yonder, Citigroup, Motorola Solutions and BMW Group already build with Ext JS 8.0.

Virtimo
Virtimo is a leading software manufacturer and IT consulting company headquartered in Berlin.

Scheuring AG
A Switzerland-based consulting practice service and solutions software developer.

Xero
Xero used Ext JS to develop an online, cloud-based accounting system for small and medium businesses.

Kaseware
A cloud-based investigative management and intelligence analytics solution built with Ext JS.
Build UIs in plain JavaScript. Ext JS does the heavy lifting.
You configure Ext JS components with plain JavaScript objects, and the framework handles rendering, layout, data, events and accessibility. These snippets come from the Ext JS 8.0 docs. Pick a component to see how it’s built.
A JavaScript data grid built for big data
Sort, group, filter, edit and export large datasets. The grid renders only what’s on screen, and in 8.0 that includes columns as well as rows.
- Row and column virtualization with buffered rendering
- Locked columns, grouping, summaries and row editing
- Export to Excel and other formats with the exporter
Summarize big datasets in a pivot grid
Turn thousands of records into a cross-tab report. Choose the fields for rows, columns and values, and the pivot grid calculates the totals for you.
- Sum, average, count, min, max and more aggregators
- Local or remote matrix calculation
- Configurator plugin so users can drag fields between axes
Visualize data from the same store
Charts read from the same stores as your grids. When the data changes, the chart redraws, with animation, tooltips and legends built in.
- Bar, line, area, pie, radar, scatter, gauge and more
- Interactions such as zoom, pan, crosshair and item highlight
- D3 adapters for heat maps, trees, sunbursts and more
Two-way data binding with ViewModels
Bind any component config to data in a ViewModel. When the data changes, every bound component updates, with no manual DOM code.
- Formulas that compute values from other bound data
- MVVM architecture with ViewModels and ViewControllers
- A router for deep linking and browser history
Collect signatures in any form
Drop a signature pad into a grid, form or panel. It works with touch, pen and mouse, and fires events at the start and end of each stroke.
- Undo, redo, clear, pen width and color picker
- Save as JPG, PNG or SVG
- Works in both Classic and Modern toolkits
Generate and read QR codes
Create QR codes for payments, sign-ins, contact cards and more, or scan them with the reader component. Data is sanitized before encoding.
- URL, text, vCard, MeCard, event, location, phone, SMS, email, Wi-Fi and payment types
- Custom colors and sizes, rendered as SVG, Canvas or PNG
- Download as PNG or SVG, or copy to the clipboard
Is open-source costing your dev team more than you think?

140+ JavaScript UI components. Designed to work together.
Grids, pivot grids, exporters, layouts, charts and D3 adapters are built, tested and released together, so you don’t have to stitch together dozens of open-source libraries.
Data Grids Built for Enterprise-Scale Data
Load, sort, and filter millions of rows without lag – Ext JS data grid is built to handle enterprise-scale datasets in milliseconds.
Effortless Navigation with Nested Tree Views
Organize complex hierarchies – folders, categories, org charts into clean, expandable tree structures your users can navigate intuitively.
Forms Engineered for Complex Business Workflows
Create secure, responsive forms with built-in validation, error handling, and flexible layouts – ready for login flows, sign-ups, and beyond.
Accordion Layouts for Focused Information Access
Organize events into structured, expandable sections, making dense calendar information easy to navigate without overwhelming users.
Enterprise web apps built with Ext JS, running live.
Start from a working reference app instead of a blank page. Dashboards, admin templates, calendars and complete business apps, all built with Ext JS 8.0 and running live in your browser.
Try the Ext JS 8.0 examples
Grids, charts, forms, calendars and full reference apps, ready to open in your browser. Click around and see how real Ext JS screens behave before you write a line of code.
Financial services
Trading screens, risk dashboards and back-office tools with very large grids.
Operations & logistics
Supply chain, scheduling and asset tracking apps that run all day.
Analytics & reporting
Pivot tables, charts and exports for teams that live in their data.
Internal business apps
CRUD-heavy admin tools, portals and line-of-business software.
An enterprise JavaScript framework, everything built in.
Ext JS is more than a component library. Architecture, data, layout, accessibility and localization all come with the framework and work the same way across every component.
Modern & Classic
Use the Modern toolkit for responsive apps on desktop, tablet and phone, or the Classic toolkit for feature-rich desktop apps. Both share the same data package and architecture.
Application architecture
Organize large apps with MVC and MVVM. ViewModels handle data binding, ViewControllers handle logic, and the router handles deep links and browser history.
Data package
Models, stores and proxies decouple your UI components from the data layer. Load from REST, JSON or XML, and sort, filter and group locally or on the server.
Accessibility
Ext JS aligns with ADA standards. Keyboard navigation, focus management and ARIA support help you meet Section 508 compliance.
Localization & RTL
Ship your app in many languages with built-in locale packages, and support right-to-left languages without a separate codebase.
Adaptive layouts
The layout manager sizes and positions every component for you, so your app looks right on any screen without fighting CSS.
Theme your Ext JS app with one line.
Every Ext JS component is themed. Pick a packaged theme in app.json, fine-tune it with variables, or design your own visually with Sencha Themer.
| Company | Symbol | Last | Change |
|---|---|---|---|
| Northwind Traders | NWT | 71.72 | +0.02 |
| Contoso Ltd | CTSO | 29.01 | +0.42 |
| Fabrikam Inc | FBKM | 83.81 | -0.28 |
| Tailspin Toys | TSPN | 52.55 | +0.01 |
| Adventure Works | ADVW | 64.13 | -0.31 |
Modern toolkit themes: Material, Triton, Neptune and iOS. Classic toolkit themes: Material, Triton, Neptune, Graphite, Crisp, Classic, Gray and ARIA.
Material colors, changed at runtime
The Material theme uses CSS variables, so you can switch base and accent colors, or turn on dark mode, while the app is running. For a fully custom brand, Sencha Themer lets you design a theme visually, without writing code.
Twenty years of Ext JS, still shipping.
Sencha has delivered feature updates, support and bug fixes for Ext JS for more than 20 years. Here’s what the latest releases added.
Ext JS 7.8
- Froala editor for the Classic toolkit
- Closure Compiler support up to ES2023
- Node 20 and Java 17 / 21 support
Ext JS 7.9
- Grid, combo box, calendar and tab fixes
- Japanese localization updates
- Released with Rapid Ext JS 1.1
Ext JS 8.0
- Signature Pad and QR Code components
- Horizontal buffering and lockable Modern grid
- Font Awesome 7 and ES2025 tooling
A quality, stability and performance release. Most improvements come from customer support tickets.
Ext JS 8.1
- A quality, stability and performance release
- Most improvements come from customer support tickets
Upgrading from an older version?
Ext JS 8.0 is fully backward compatible. Run the free Upgrade Adviser to find the changes your code needs, or let Sencha Professional Services plan and run the upgrade with you.
Ext JS pricing: start free, scale to the enterprise.
Every paid edition includes the full framework, regular updates and support through your subscription. Prices are per developer, per year.
For individuals, students, startups and nonprofits under $10K a year in revenue.
- Modern toolkit with 100+ components
- Material and iOS themes
- npm tooling with ExtGen
- Free 1-year license after approval
For professional developers building data-rich applications.
- 140+ UI components
- Modern and Classic toolkits, all themes
- Charts, Signature Pad and QR Code
- ReExt, Architect, Themer and Sencha Cmd
- IDE plugins and Upgrade Adviser
For enterprise teams that need every component and tool, plus the highest support priority.
- Everything in Pro: all 140+ UI components
- Pivot Grid, Exporter, Calendar and D3
- Froala editor
- Rapid Ext JS, Sencha Test and Inspector
See the full feature comparison for OEM licensing and Platinum Support.
Everything you need to ship with Ext JS.
Documentation
Guides, tutorials and the full API reference for Ext JS 8.0 and earlier versions.
Examples
The Kitchen Sink, full sample apps and dozens of focused examples, running live.
Sencha Fiddle
Write and run Ext JS code in your browser, then share it with a link.
Ask Sencha AI
Ask Ext JS questions in plain language and get answers grounded in the docs.
Community
Join over 200,000 Sencha developers on Discord, the forum and Stack Overflow.
Framework comparison
Compare popular web frameworks head to head before you choose.
Ext JS frequently asked questions
What is Sencha Ext JS?
Ext JS is a comprehensive JavaScript framework for building data-intensive, cross-platform web and mobile apps for any modern device. It includes 140+ pre-built, high-performance UI components, such as grids, pivot grids, charts, calendars and forms, along with a data package, MVVM architecture and tools for building, theming and testing your app.
What is Ext JS used for?
Teams use Ext JS to build data-intensive enterprise web apps, such as financial trading screens, analytics dashboards, operations and logistics tools, and internal business software. Its grid, pivot grid, charts and calendar handle large datasets, and the data package connects them to any back end.
How is Ext JS different from React or Angular?
React and Angular give you the foundation, and you add third-party libraries for grids, charts, forms and theming. Ext JS is a complete framework: 140+ UI components, a data package, application architecture and tooling are built and tested together. You can also use Ext JS components inside React with ReExt. Compare Ext JS, React and Angular.
What’s new in Ext JS 8.0?
Ext JS 8.0 adds a Digital Signature Pad and a QR Code reader and generator for both toolkits, horizontal buffering for very wide grids, a lockable grid plugin for the Modern toolkit, Font Awesome 7, dialog boundary control, ARIA support for form fields, tri-state tree checkboxes and tooling support up to ES2025. Read the full announcement.
How do I install Ext JS?
Install ExtGen from npm with npm install -g @sencha/ext-gen, then create an app with ext-gen app -a -t moderndesktop -n ModernApp and run npm start in the new folder. Trial packages install from public npm. Customers first log in to Sencha’s private registry with npm login --registry=https://npm.sencha.com/ --scope=@sencha. You can also download the SDK and use Sencha Cmd.
Should I use the Modern or Classic toolkit?
Use the Modern toolkit for responsive apps that run on desktop, tablet and phone. Use the Classic toolkit for feature-rich desktop apps, especially if you need to support older browsers. Both toolkits share the same data package and application architecture.
Is Ext JS still actively developed?
Yes. Sencha has maintained Ext JS for more than 20 years. Ext JS 8.0 was released in April 2026, and Ext JS 8.1, a quality and performance release, is next on the roadmap.
Can I try Ext JS before buying?
Yes. The fully featured Ext JS is available as a free 30-day trial. Start your trial.
Is there a free version of Ext JS?
Yes. Ext JS Community Edition is free for individual developers, students, startups and nonprofits with up to 5 developers and under $10K a year in revenue. Approved applicants get a free 1-year license. Learn about Community Edition.
Can I use Ext JS components in React?
Yes. ReExt lets you use Ext JS components, including the grid, inside React apps. ReExt 1.2 supports Ext JS 8.0. Learn about ReExt.
Which browsers does Ext JS support?
Ext JS 8.0 supports the latest versions of all modern browsers, including Chrome, Edge, Firefox and Safari on desktop, and Chrome, Edge, Firefox and Safari on Android and iOS. See the full browser list.
Where can I get help?
Use the documentation, Ask Sencha AI, the Sencha community on Discord, or Sencha support with your subscription.
Considering Ext JS for your business?
Book a demo with a Sencha Ext JS expert to see how our performance, Sencha tooling and dedicated support services can help your organization build modern web apps faster.
# Install ExtGen (trial packages are on public npm) npm install -g @sencha/ext-gen # Create a Modern toolkit app for desktop browsers ext-gen app -a -t moderndesktop -n ModernApp # Build it and start a local dev server cd modern-app npm start
# Log in to Sencha's private registry. Username: your support # portal email with "@" replaced by "..", e.g. name..example.com npm login --registry=https://npm.sencha.com/ --scope=@sencha # Install ExtGen, then create and run your app npm install -g @sencha/ext-gen ext-gen app -a -t moderndesktop -n ModernApp cd modern-app npm start
# 1. Download the trial zip: https://www.sencha.com/products/extjs/evaluate/ # Unzip it and run the Sencha Cmd installer inside # 2. Generate an app (--ext downloads the trial SDK from Sencha's CDN) sencha generate app --ext MyApp ./MyApp # 3. Build it, watch for changes and serve it at http://localhost:1841/ cd MyApp sencha app watch
# 1. Install Sencha Cmd: https://www.sencha.com/products/sencha-cmd/ # Download the Ext JS SDK zip from https://support.sencha.com/ # and unzip it # 2. Generate a Modern toolkit app from the SDK sencha -sdk /path/to/sdk generate app modern MyApp ./MyApp # 3. Build it, watch for changes and serve it at http://localhost:1841/ cd MyApp sencha app watch
Ext.application({
name: 'MyApp',
launch: function () {
Ext.Viewport.add({
xtype: 'grid',
title: 'Simpsons',
store: {
fields: ['name', 'email', 'phone'],
data: [
{ name: 'Lisa', email: '[email protected]', phone: '555-111-1224' },
{ name: 'Bart', email: '[email protected]', phone: '555-222-1234' }
]
},
columns: [
{ text: 'Name', dataIndex: 'name', width: 200 },
{ text: 'Email', dataIndex: 'email', width: 250 },
{ text: 'Phone', dataIndex: 'phone', width: 120 }
]
});
}
});
Ext.create('Ext.grid.Grid', {
title: 'Simpsons',
fullscreen: true,
bufferedColumns: true, // 8.0: render only the visible columns
plugins: [{ type: 'lockable' }], // 8.0: lock columns in the Modern grid
store: {
fields: ['id', 'name', 'email', 'phone'],
data: [
{ id: 1, name: 'Lisa', email: '[email protected]', phone: '555-111-1224' },
{ id: 2, name: 'Bart', email: '[email protected]', phone: '555-222-1234' },
{ id: 3, name: 'Homer', email: '[email protected]', phone: '555-222-1244' },
{ id: 4, name: 'Marge', email: '[email protected]', phone: '555-222-1254' }
]
},
columns: [
{ text: 'ID', dataIndex: 'id', width: 60, locked: true },
{ text: 'Name', dataIndex: 'name', width: 200 },
{ text: 'Email', dataIndex: 'email', width: 250 },
{ text: 'Phone', dataIndex: 'phone', width: 120 }
]
});
Ext.create({
xtype: 'pivotgrid',
title: 'Sales by country',
fullscreen: true,
matrix: {
type: 'local',
store: 'sales',
rowGrandTotalsPosition: 'first',
leftAxis: [{
dataIndex: 'country',
direction: 'DESC',
header: 'Countries',
width: 150
}],
topAxis: [{
dataIndex: 'year',
direction: 'ASC'
}],
aggregate: [{
dataIndex: 'value',
header: 'Total',
aggregator: 'sum',
width: 120
}]
}
});
Ext.create({
xtype: 'cartesian',
renderTo: document.body,
width: 400,
height: 400,
store: {
fields: ['name', 'value'],
data: [
{ name: 'one', value: 10 },
{ name: 'two', value: 16 },
{ name: 'three', value: 13 },
{ name: 'four', value: 19 },
{ name: 'five', value: 7 }
]
},
axes: [{
type: 'numeric',
position: 'left',
fields: 'value'
}, {
type: 'category',
position: 'bottom',
fields: 'name'
}],
series: {
type: 'bar',
xField: 'name',
yField: 'value'
}
});
Ext.define('MyApp.view.TestViewModel', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.test',
data: {
firstName: 'John',
lastName: 'Doe'
},
formulas: {
// Recalculates whenever firstName or lastName changes
name: function (get) {
var fn = get('firstName'), ln = get('lastName');
return (fn && ln) ? (fn + ' ' + ln) : (fn || ln || '');
}
}
});
Ext.create({
xtype: 'formpanel',
fullscreen: true,
viewModel: { type: 'test' },
bind: { title: 'Hello {name}' },
items: [
{ xtype: 'textfield', label: 'First Name', bind: '{firstName}' },
{ xtype: 'textfield', label: 'Last Name', bind: '{lastName}' }
]
});
Ext.create('Ext.Panel', {
renderTo: Ext.getBody(),
title: 'Sign here',
width: '100%',
height: '100%',
layout: 'fit',
items: [{
xtype: 'signature',
penColor: '#000',
penStrokeWidth: 2,
minStrokeRatio: 0.7,
listeners: {
beginStroke: function (cmp) {
console.log('Signature beginStroke:', cmp);
},
endStroke: function (cmp) {
console.log('Signature endStroke:', cmp);
}
}
}]
});
Ext.create({
xtype: 'qrcode',
renderTo: Ext.getBody(),
width: 300,
height: 300,
padding: 20,
// Plain text or a URL. Set "type" for email, vCard, MeCard,
// calendar events, locations, phone, SMS, Wi-Fi and payments.
data: 'https://www.sencha.com/products/extjs/',
listeners: {
qrgenerated: function (qrcode, data) {
console.log('QR Code Generated');
}
}
});
Ext.define('MyApp.Application', {
extend: 'Ext.app.Application',
launch: function () {
// Needs "material": { "toolbar": { "dynamic": true } } in app.json
Ext.theme.Material.setColors({
base: 'indigo',
accent: 'pink',
darkMode: true
});
}
});



