Skip to main content

UI & Customization

For end users this is a visual and navigational refresh. For anyone who forks the UI, writes a UI plugin, or maintains end-to-end test suites, it’s a large refactor — the design system consolidates, routing gains a new App Mode concept, and a code-splitting pass changes where things live.

Design system consolidation removes the transitional MUI* components

Breaking for forks and plugins. Cosmetic for end users. In 1.13, the UI module carried a transitional set of MUI* wrapper components. Collate 2.0 removes them and standardizes on the shared @openmetadata/ui-core-components package — MUISelect, MUITextField, MUIUserTeamSelect, MUIDomainSelect, MUIAsyncTreeSelect and several others are deleted, along with the SELECT_MUI field type in the form builder. Other removed modules with core-components replacements: CondensedBreadcrumb, DescriptionV1, the legacy delete modals (DeleteModal, EntityDeleteModal, DeleteWidgetModal), activity-feed card components, and KnowledgeGraph (replaced by OntologyExplorer — see Lineage).
Search your fork for MUI imports, SELECT_MUI, usePaginationControls, NotistackUtils, CommonUtils and DescriptionV1. Expect a mechanical but wide migration — PaginationCardDefault replaces usePaginationControls, and Input from core-ui replaces the useSearch hook.

App Mode introduces a three-level resolution order

New concept. Affects the login experience and persona configuration. Collate 2.0 introduces two application experiences — Classic and AI (assistant-driven, requires the AI plugin) — resolved in this order, highest priority first:
  1. User preference: the appMode entry in the user’s preferences bag.
  2. Persona appMode: classic or AI (default classic), forced on login.
  3. Tenant defaultAppMode: the appConfiguration setting (ai, classic, or null).
The active mode is held in a single source of truth backed by session storage, so sibling tabs no longer lose the active mode. The switcher only appears when the AI application is installed. A new per-user preferences API backs this (GET/PUT/DELETE /v1/users/{userId}/preferences), stored in a new user_preferences table. It’s deliberately not a full entity — no versioning, audit or soft-delete — and is cascade-deleted with the user.
Do not store per-user UI state in the User entity’s extension. Use the preferences API instead.

AI Mode drops the /askCollate URL prefix, and no longer auto-engages

Breaking. Affects bookmarks, deep links, Slack workflows, and browser extensions built on the old AI Mode paths. Legacy /askCollate/* links redirect, but anything that parses or constructs those paths should be updated. AI Mode also no longer auto-engages from a URL: in 1.13, visiting certain paths silently switched you into the AI experience; in 2.0 the mode is explicit, driven only by the resolution order above, and navigating to an AI-only route while in Classic Mode no longer changes it.
Nobody is moved to AI Mode automatically by the 2.0 upgrade itself. Every user stays in Classic Mode until they switch, are assigned a persona that pins AI, or an admin sets the tenant default.

Personas gain AI context

Additive. Personas gain a contextDefinition field — “rules and settings used to materialize the shared AI context for this persona” — plus endpoints to read and author it: GET /v1/personas/search, GET /v1/personas/{id}/context and .../me/context, GET/PUT /v1/personas/{id}/aiContext, and POST /v1/personas/{id}/aiContext/rules[/preview].

Context Center adds new routes that proxies must allow

Additive, but affects navigation and reverse proxies. New routes: /knowledge-center, /context-center and its sub-pages (dashboard, articles, documents, filter, memories, integrations, archive). New REST namespaces: /v1/contextCenter/pages, /v1/contextCenter/memories, /v1/contextCenter/drive/** and /v1/attachments.
If you front Collate with a proxy that allowlists paths, add /knowledge-center, /context-center, /api/v1/contextCenter and /api/v1/attachments. Uploads require object storage to be enabled — see Platform & Security.

A large lazy-loading refactor changes fork-visible import paths

Behavioural. Affects forks with deep imports. Collate 2.0 does a large code-splitting pass: pure utility functions are extracted into *PureUtils modules, utils/CommonUtils.tsx and utils/EntityUtils.tsx are deleted with facade imports migrated to direct sources, and settings/entity/entity-import routers plus heavy components are lazy-loaded.
Deep imports from utils/CommonUtils or utils/EntityUtils will not resolve. Import from the specific domain module instead.

Visual and navigation changes ripple through screenshots and end-to-end tests

Behavioural. Affects end users, screenshots in your internal documentation, and end-to-end tests.
Expect widespread data-testid and DOM-structure churn. Budget for an end-to-end test refresh.

New extension points are the supported way to customize in 2.0

Additive. ObservabilityRouterClassBase and ConnectionsRouterClassBase make navigation and connection routing overridable by downstream distributions, EntityUtilClassBase.getEntityTypes() overrides the entity-type list, and brandName replaces hard-coded product strings for white-labelling. The component library itself gains Breadcrumbs, EmptyPlaceholder, ProgressSteps and Toast — with one rename to know about if you consume the package: the Select-family placeholderIcon prop is renamed to icon.

Full detail

For the full narrative walkthrough of UI & Customization in Collate 2.0 — including screenshots and step-by-step context — see Release 2.0: UI & Customization.