Version 26 Now Available

The One-Stop Shop for
Portals and Dashboards

Born from a decade of development in finance, telecom, and legal, CxJS bakes in the UI patterns teams keep rebuilding. Open source, battle-tested, and now TypeScript-first.

A Complete UI Framework in One Package

Built as one cohesive system for data-driven web applications, with consistent patterns and a great developer experience.

Extensive Widget Library

  • Forms with validation and lookups
  • Tables with grouping, selection, and editing
  • SVG charts for dashboards and reporting

Navigation and App Shell

  • Client-side routing with URLs and history
  • Layouts and overlays: menus, windows, tooltips
  • Keyboard shortcuts and localization

Ecosystem-Friendly

  • Extends easily with React components
  • Tailwind CSS support and theming
  • Plays well with modern AI tooling

Domain-Friendly

  • Typed models as the source of truth
  • Functional components for your domain
  • Predictable data binding and formatting

Predictable Developer Experience

Typed models, consistent binding, and layout primitives keep screens easy to build, easy to refactor, and easy to autocomplete.

  • JSX that stays clean as screens grow
  • Typed models for safe refactoring
  • Autocomplete for props, bindings, and values
import { TextField, LookupField } from 'cx/widgets';
import { createModel, LabelsTopLayout } from 'cx/ui';

interface UserModel {
  firstName: string;
  lastName: string;
  email: string;
  countryId: number;
}

const m = createModel<UserModel>();

export default (
  <LabelsTopLayout columns={2}>
    <TextField value={m.firstName} label="First Name" />
    <TextField value={m.lastName} label="Last Name" />
    <TextField value={m.email} label="Email" />
    <LookupField value={m.countryId} label="Country" options={countries} />
  </LabelsTopLayout>
);

Your Next Portal Starts Here

Explore the docs, try the examples, and start building today.

Get Started