Explore VeloIQ’s built-in UI features: side panels, Miller columns tree view, relations explorer, analysis charts, bulk actions, and more.
Every feature described on this page is available out of the box — no extra code, configuration, or schema changes required. The VeloIQ frontend reads the generated TypeScript schemas and activates the appropriate UI behaviour automatically.
Click any row in a list view to open a detail panel on the right side of the screen. The panel shows the same information as the full Show page without navigating away. Drag the vertical divider between the list and the panel to resize both sides. Use the panel toolbar to minimize it back to a sliver, maximize it to full width, or pop it out into a separate browser tab.
When a model has a self-referential foreign key (for example, parent_task_id on a Task that points back to task.id), the code generator automatically sets showViewType: "tree-details" in the TypeScript schema. The subtasks relation then renders as an interactive Miller columns browser instead of a flat table.To navigate the tree:
Click any row in a column to load its children in the next column to the right.
Follow the breadcrumb trail at the top of each column to navigate back up the hierarchy.
Drag the handle between two columns to resize them independently.
Click the ↗ button on any row to open that record’s Show page in a new browser tab.
On any Show page, click the ⬡ (explore) button in the page toolbar to open the relations explorer. The explorer renders an interactive graph with the current record at the centre and its related records as nodes around it. Click any node to navigate directly to that record’s Show page.
In the toolbar of any relation table (the tables that appear in the lower section of a Show page), click the 📊 bar-chart icon to toggle the analysis panel. The panel renders distribution charts for numeric fields (histograms) and categorical fields (bar charts of value counts). Your toggle preference is saved per user and per view, so the panel opens in the same state the next time you visit.
Click the ⚙ settings icon in any list or relation table toolbar to open the column configuration panel. Tick or untick columns to show or hide them. Drag rows in the panel to reorder the columns in the table. Preferences are saved per user and per view.
Click any column header to sort the table ascending by that column. Click again to sort descending. Click a third time to clear the sort and return to the default order.
Click the dark mode toggle in the top-right corner of the header to switch between light and dark themes. The preference is stored in the browser and persists across sessions.
Click the ℹ button in any list toolbar to open the metadata panel. The panel shows the technical details for that resource: field names, field types, relation targets, and the API path the frontend queries.
{"docsConfig":{"theme":"palm","$schema":"https://mintlify.com/docs.json","name":"Veloiq","colors":{"primary":"#7b7b7b","light":"#484848"},"favicon":"https://media.brand.dev/bfb51142-8981-4acd-b861-b53a3f75617f.png","navbar":{"primary":{"type":"github","href":"https://github.com/cesarlugos1s/VeloIQ"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"juicemantics","hasAudioNarration":false,"actualSubdomain":"juicemantics","customDomains":["docs.veloiq.dev"],"gitSource":{"type":"github","owner":"mintlify-community","repo":"docs-juicemantics-d52e6177","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae9581b90e885ae1a8ee795:success","clientVersion":"0.0.4117","searchFilterCounts":[{"language":"default","tag":"Documentation","count":11},{"language":"default","tag":"Reference","count":11},{"language":"default","tag":"CLI","count":5},{"language":"default","tag":"Guides","count":4},{"language":"default","tag":"Core Concepts","count":3},{"language":"default","tag":"Get Started","count":3},{"language":"default","tag":"Python API","count":3},{"language":"default","tag":"React UI Library","count":3},{"language":"default","tag":"Changelog","count":1},{"language":"default","tag":"2026","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"guides/ui-features","slug":"/guides/ui-features","pageMetadata":{"title":"Built-in UI Features: VeloIQ Frontend Guide","description":"Explore VeloIQ's built-in UI features: side panels, Miller columns tree view, relations explorer, analysis charts, bulk actions, and more.","sidebarTitle":"UI Features","href":"/guides/ui-features"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Explore VeloIQ’s built-in UI features: side panels, Miller columns tree view, relations explorer, analysis charts, bulk actions, and more.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Every feature described on this page is available out of the box — no extra code, configuration, or schema changes required. The VeloIQ frontend reads the generated TypeScript schemas and activates the appropriate UI behaviour automatically.`}),`\n`,_jsx(Heading,{level:`2`,id:`side-panels`,children:`Side panels`}),`\n`,_jsx(_components.p,{children:`Click any row in a list view to open a detail panel on the right side of the screen. The panel shows the same information as the full Show page without navigating away. Drag the vertical divider between the list and the panel to resize both sides. Use the panel toolbar to minimize it back to a sliver, maximize it to full width, or pop it out into a separate browser tab.`}),`\n`,_jsx(Heading,{level:`2`,id:`miller-columns-tree-view`,children:`Miller columns tree view`}),`\n`,_jsxs(_components.p,{children:[`When a model has a self-referential foreign key (for example, `,_jsx(_components.code,{children:`parent_task_id`}),` on a `,_jsx(_components.code,{children:`Task`}),` that points back to `,_jsx(_components.code,{children:`task.id`}),`), the code generator automatically sets `,_jsx(_components.code,{children:`showViewType: \"tree-details\"`}),` in the TypeScript schema. The subtasks relation then renders as an interactive `,_jsx(_components.strong,{children:`Miller columns`}),` browser instead of a flat table.`]}),`\n`,_jsx(_components.p,{children:`To navigate the tree:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Click any row in a column to load its children in the next column to the right.`}),`\n`,_jsx(_components.li,{children:`Follow the breadcrumb trail at the top of each column to navigate back up the hierarchy.`}),`\n`,_jsx(_components.li,{children:`Drag the handle between two columns to resize them independently.`}),`\n`,_jsxs(_components.li,{children:[`Click the `,_jsx(_components.strong,{children:`↗`}),` button on any row to open that record’s Show page in a new browser tab.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`relations-explorer`,children:`Relations explorer`}),`\n`,_jsxs(_components.p,{children:[`On any Show page, click the `,_jsx(_components.strong,{children:`⬡`}),` (explore) button in the page toolbar to open the relations explorer. The explorer renders an interactive graph with the current record at the centre and its related records as nodes around it. Click any node to navigate directly to that record’s Show page.`]}),`\n`,_jsx(Heading,{level:`2`,id:`analysis-charts`,children:`Analysis charts`}),`\n`,_jsxs(_components.p,{children:[`In the toolbar of any relation table (the tables that appear in the lower section of a Show page), click the `,_jsx(_components.strong,{children:`📊`}),` bar-chart icon to toggle the analysis panel. The panel renders distribution charts for numeric fields (histograms) and categorical fields (bar charts of value counts). Your toggle preference is saved per user and per view, so the panel opens in the same state the next time you visit.`]}),`\n`,_jsx(Heading,{level:`2`,id:`column-configuration`,children:`Column configuration`}),`\n`,_jsxs(_components.p,{children:[`Click the `,_jsx(_components.strong,{children:`⚙`}),` settings icon in any list or relation table toolbar to open the column configuration panel. Tick or untick columns to show or hide them. Drag rows in the panel to reorder the columns in the table. Preferences are saved per user and per view.`]}),`\n`,_jsx(Heading,{level:`2`,id:`sorting`,children:`Sorting`}),`\n`,_jsx(_components.p,{children:`Click any column header to sort the table ascending by that column. Click again to sort descending. Click a third time to clear the sort and return to the default order.`}),`\n`,_jsx(Heading,{level:`2`,id:`filtering`,children:`Filtering`}),`\n`,_jsxs(_components.p,{children:[`Hover over a column header to reveal the filter icon (`,_jsx(_components.strong,{children:`▼`}),`). Click it to open a filter input for that column:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`String columns`}),` — supports `,_jsx(_components.code,{children:`contains`}),` and `,_jsx(_components.code,{children:`starts with`}),` operators.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Number and date columns`}),` — supports range operators (greater than, less than, between).`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`You can stack multiple filters across different columns. All active filters are shown together and can be removed individually.`}),`\n`,_jsx(Heading,{level:`2`,id:`bulk-actions`,children:`Bulk actions`}),`\n`,_jsx(_components.p,{children:`Tick the checkbox on one or more rows in any list view. A bulk-action toolbar appears at the bottom of the screen with three options:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Bulk edit`}),` — apply a field value change to all selected records at once.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Bulk delete`}),` — delete all selected records in a single operation.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`CSV export`}),` — download the selected records as a CSV file.`]}),`\n`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Bulk delete is irreversible. Confirm your selection before proceeding.`})}),`\n`,_jsx(Heading,{level:`2`,id:`dark-mode`,children:`Dark mode`}),`\n`,_jsx(_components.p,{children:`Click the dark mode toggle in the top-right corner of the header to switch between light and dark themes. The preference is stored in the browser and persists across sessions.`}),`\n`,_jsx(Heading,{level:`2`,id:`metadata-panel`,children:`Metadata panel`}),`\n`,_jsxs(_components.p,{children:[`Click the `,_jsx(_components.strong,{children:`ℹ`}),` button in any list toolbar to open the metadata panel. The panel shows the technical details for that resource: field names, field types, relation targets, and the API path the frontend queries.`]}),`\n`,_jsx(Heading,{level:`2`,id:`global-search`,children:`Global search`}),`\n`,_jsxs(_components.p,{children:[`To wire up the header search bar to query your model data, see `,_jsx(_components.a,{href:`/guides/global-search`,children:`Configure Global Search`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Built-in UI Features: VeloIQ Frontend Guide","description":"Explore VeloIQ's built-in UI features: side panels, Miller columns tree view, relations explorer, analysis charts, bulk actions, and more.","sidebarTitle":"UI Features","href":"/guides/ui-features"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Side panels","slug":"side-panels","depth":2,"children":[]},{"title":"Miller columns tree view","slug":"miller-columns-tree-view","depth":2,"children":[]},{"title":"Relations explorer","slug":"relations-explorer","depth":2,"children":[]},{"title":"Analysis charts","slug":"analysis-charts","depth":2,"children":[]},{"title":"Column configuration","slug":"column-configuration","depth":2,"children":[]},{"title":"Sorting","slug":"sorting","depth":2,"children":[]},{"title":"Filtering","slug":"filtering","depth":2,"children":[]},{"title":"Bulk actions","slug":"bulk-actions","depth":2,"children":[]},{"title":"Dark mode","slug":"dark-mode","depth":2,"children":[]},{"title":"Metadata panel","slug":"metadata-panel","depth":2,"children":[]},{"title":"Global search","slug":"global-search","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"juicemantics","siteName":"Veloiq","title":"Built-in UI Features: VeloIQ Frontend Guide - Veloiq","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-20T02:36:13.545Z","originalFileLocation":"guides/ui-features.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Explore VeloIQ\u0026#x27;s built-in UI features: side panels, Miller columns tree view, relations explorer, analysis charts, bulk actions, and more.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Veloiq\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://media.brand.dev/bfb51142-8981-4acd-b861-b53a3f75617f.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://media.brand.dev/bfb51142-8981-4acd-b861-b53a3f75617f.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://media.brand.dev/bfb51142-8981-4acd-b861-b53a3f75617f.png\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/png\" href=\"https://media.brand.dev/bfb51142-8981-4acd-b861-b53a3f75617f.png\">\u003cmeta data-mint-head property=\"og:title\" content=\"Built-in UI Features: VeloIQ Frontend Guide - Veloiq\">\u003cmeta data-mint-head property=\"og:description\" content=\"Explore VeloIQ\u0026#x27;s built-in UI features: side panels, Miller columns tree view, relations explorer, analysis charts, bulk actions, and more.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Veloiq\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.veloiq.dev/guides/ui-features\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://juicemantics.mintlify.site/_mintlify/api/og/v2?division=Guides\u0026amp;title=Built-in+UI+Features%3A+VeloIQ+Frontend+Guide\u0026amp;description=Explore+VeloIQ%27s+built-in+UI+features%3A+side+panels%2C+Miller+columns+tree+view%2C+relations+explorer%2C+analysis+charts%2C+bulk+actions%2C+and+more.\u0026amp;theme=5c552ad5265e4a10484999bf\u0026amp;signature=044931dbd30b2c9b36c1e1dde19582bfdfb7351122e0c44dea20e03277ecb64a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Built-in UI Features: VeloIQ Frontend Guide - Veloiq\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Explore VeloIQ\u0026#x27;s built-in UI features: side panels, Miller columns tree view, relations explorer, analysis charts, bulk actions, and more.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://juicemantics.mintlify.site/_mintlify/api/og/v2?division=Guides\u0026amp;title=Built-in+UI+Features%3A+VeloIQ+Frontend+Guide\u0026amp;description=Explore+VeloIQ%27s+built-in+UI+features%3A+side+panels%2C+Miller+columns+tree+view%2C+relations+explorer%2C+analysis+charts%2C+bulk+actions%2C+and+more.\u0026amp;theme=5c552ad5265e4a10484999bf\u0026amp;signature=044931dbd30b2c9b36c1e1dde19582bfdfb7351122e0c44dea20e03277ecb64a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/juicemantics/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Veloiq\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7b7b7b\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.veloiq.dev/guides/ui-features\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/ui-features.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.veloiq.dev/#organization\",\"name\":\"Veloiq\",\"url\":\"https://docs.veloiq.dev\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.veloiq.dev#website\",\"name\":\"Veloiq\",\"url\":\"https://docs.veloiq.dev\",\"publisher\":{\"@id\":\"https://docs.veloiq.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.veloiq.dev/guides/ui-features#webpage\",\"url\":\"https://docs.veloiq.dev/guides/ui-features\",\"name\":\"Built-in UI Features: VeloIQ Frontend Guide\",\"description\":\"Explore VeloIQ's built-in UI features: side panels, Miller columns tree view, relations explorer, analysis charts, bulk actions, and more.\",\"dateModified\":\"2026-05-20T02:36:13.545Z\",\"isPartOf\":{\"@id\":\"https://docs.veloiq.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.veloiq.dev/guides/ui-features#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.veloiq.dev/guides/ui-features#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://docs.veloiq.dev/guides/custom-endpoints\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Built-in UI Features: VeloIQ Frontend Guide\",\"item\":\"https://docs.veloiq.dev/guides/ui-features\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.veloiq.dev/guides/ui-features#article\",\"headline\":\"Built-in UI Features: VeloIQ Frontend Guide\",\"name\":\"Built-in UI Features: VeloIQ Frontend Guide\",\"description\":\"Explore VeloIQ's built-in UI features: side panels, Miller columns tree view, relations explorer, analysis charts, bulk actions, and more.\",\"url\":\"https://docs.veloiq.dev/guides/ui-features\",\"mainEntityOfPage\":{\"@id\":\"https://docs.veloiq.dev/guides/ui-features#webpage\"},\"dateModified\":\"2026-05-20T02:36:13.545Z\",\"publisher\":{\"@id\":\"https://docs.veloiq.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.veloiq.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Veloiq\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Veloiq\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/guides/ui-features.md","siteName":"Veloiq","nav":{"global":null,"tabs":[{"tab":"Documentation","groups":[{"group":"Get Started","pages":[{"title":"VeloIQ Framework: Build Full-Stack Apps Faster","href":"/introduction"},{"title":"Get started with VeloIQ in under 15 minutes","href":"/quickstart"},{"title":"VeloIQ Tutorial: Build a Full Task Manager App","sidebarTitle":"Tutorial","href":"/tutorial"}]},{"group":"Core Concepts","pages":[{"title":"Defining Data Models in VeloIQ with SQLModel","sidebarTitle":"Models","href":"/concepts/models"},{"title":"VeloIQ Modules: Auto-Loaded Domain Packages","sidebarTitle":"Modules","href":"/concepts/modules"},{"title":"VeloIQ Access Control: RBAC and ReBAC Guide","sidebarTitle":"Access Control","href":"/concepts/access-control"}]},{"group":"Guides","pages":[{"title":"Extend VeloIQ Modules with Custom API Endpoints","sidebarTitle":"Custom Endpoints","href":"/guides/custom-endpoints"},{"title":"Configure Global Search in Your VeloIQ App","description":"Wire up VeloIQ's header search bar to query your application data by registering models and fields with the veloiq search commands.","sidebarTitle":"Global Search","href":"/guides/global-search"},{"title":"Built-in UI Features: VeloIQ Frontend Guide","sidebarTitle":"UI Features","href":"/guides/ui-features"},{"title":"Manage Database Migrations in VeloIQ with Alembic","description":"Manage schema changes safely in VeloIQ using Alembic migrations via the veloiq db command — create revisions, apply upgrades, and track history.","sidebarTitle":"Database Migrations","href":"/guides/database-migrations"}]},{"group":"Pricing","pages":[{"title":"VeloIQ Pricing: Free MIT Tier vs Pro Features","sidebarTitle":"Pricing","href":"/open-core"}]}]},{"tab":"Reference","pages":[{"title":"Reference","href":"/reference/cli-overview"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/2026-05-29"}]}]},"basePath":"","title":"Built-in UI Features: VeloIQ Frontend Guide - Veloiq","buildId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","deploymentId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","dynamics":[],"chunks":[]}