Skip to Content

How do we keep Odoo's UI consistent and how can you do the same as a developer?

Duration: 46:08


PART 1 — Analytical Summary 🚀

Context 💼

This talk—“How do we keep Odoo's UI consistent and how can you do the same as a developer?”—is delivered by Kant, a UI Designer at Odoo. Speaking to developers and partners, he explains how Odoo maintains UI/UX consistency across hundreds of modules and how developers can adopt the same approach in their customizations. The session ties into recent work for Odoo 19 (e.g., eCommerce redesign, VoIP improvements, UX refinements) and addresses the practical pains of inconsistency at scale.

Why it matters: Odoo’s R&D spans 350+ developers, 600+ community modules, 20+ dev teams across 3 offices. In that environment, UI inconsistency multiplies bugs, maintenance overhead, and user confusion. The talk reframes consistency as a prerequisite for speed, quality, and scalability—not a cosmetic detail.

Core ideas & innovations 🧠

Kant frames consistency as predictability, familiarity, and scalability. Users should not have to relearn patterns as they jump from Accounting to Project; developers should design reusable components once and apply them everywhere. He acknowledges the “move fast and break things” culture, but stresses that breaking implies fixing quickly—and standardizing early is what makes that feasible at Odoo’s scale.

Odoo’s consistency engine rests on three layers: - Variables and tokens (foundation): global CSS variables define colors, spacing, borders, and view backgrounds—including dark mode overrides. Change a token once (e.g., primary color) and the entire UI updates coherently. - Components and snippets (building blocks): shared UI elements (e.g., the Control Panel) use variables and expose slots/toggles for flexible composition without breaking standards. - Patterns and templates (application views): canonical views like Form, Kanban, List, and Graph reuse components to enforce cross-app coherence.

Examples make this concrete. A button that looks identical might be implemented two ways—one proper (standard tag and classes like btn, btn-primary), one risky (custom span plus local CSS). The latter silently breaks global styling, hurting reuse and maintainability. Conversely, using the standard classes with optional, scoped variables (e.g., a custom border-radius via a CSS variable) allows controlled flexibility without forking design.

He shows how a simple variable change (e.g., --o-view-bg) cascades to Kanban cards and the Control Panel, and how dark mode is achieved by redefining variables per theme. In eCommerce v19, product cards switch between grid and list layouts by toggling a layout variable—no rewrite needed. A systray hover issue was solved once at component level, instantly fixing all instances.

How it works at Odoo ⚙️

Odoo runs a design–build–feedback loop: 1) Designers build components/patterns using variables. 2) Developers compose features from these building blocks. 3) Real-world usage and dev feedback expose gaps or edge cases. 4) Design refines the component, improving the standard and removing local patches.

This loop drives continuous simplification. During the v17 redesign, a CSS cleanup removed ~700 lines and added ~200 better ones—evidence that standard classes and variables can replace brittle overrides. Odoo relies on Bootstrap 5.3 plus custom variables/tokens, balancing familiar utility with product-specific cohesion.

Impact & takeaways 💬

The impact is tangible: - Faster delivery and easier onboarding thanks to predictable patterns across apps. - Fewer bugs and regressions because a single source of truth governs styling and behavior. - Safer customizations and themeability via CSS variables (including per-theme overrides like dark mode). - Real scalability: refactoring at the component/variable layer updates the product globally.

Developer takeaways: - Build for reuse: create components for recurring patterns (confirmation modals, bottom bars, button boxes). - Standardize early: prefer Odoo’s variables, tokens, and components over ad-hoc CSS or module-scoped hacks. - Test, refine, repeat: iterate based on real usage; push fixes back into shared components.

Practical notes from Q&A: - A public back-end design system file (e.g., Figma) isn’t available yet; front-end (website) teams have a starter backbone. More may come. - Component lists: start with official docs and the codebase; not all components are bundled to the front end. - Bootstrap remains the base (5.3); no Tailwind plans for now, though ideas are monitored. - Portal and back-end share variables today; unwanted leakage is being addressed. Separate bundles exist; deeper separation may evolve with the framework. - For future-proof custom UIs, rely on variables and standard components; avoid arbitrary CSS/DOM structures. JS components are fine; just stay within Odoo’s patterns. - Some specific inconsistencies (e.g., login/sign-up vs. other forms, required-field cues) are on the team’s radar for improvement.

Consistency isn’t a sprint; it’s a marathon. But with variables, components, and patterns aligned, Odoo turns UI coherence into a force multiplier for product velocity and quality.

PART 2 — Viewpoint: Odoo Perspective

AI-generated creative perspective inspired by Odoo’s vision.

At Odoo, we’ve always believed that simplicity is the ultimate sophistication. Consistency is how we deliver it across hundreds of apps without slowing down. Variables, components, and patterns give us a common language—so when we move fast, we don’t leave users behind. If a designer or partner fixes a UX issue once at the component level, the entire ecosystem benefits.

The real win is community. When partners adopt the same building blocks and avoid local hacks, everyone ships faster and with fewer surprises at upgrade time. Integration is not just about data flowing across apps—it’s about a unified mental model for users and a predictable canvas for developers. That’s how we keep scaling without complicating the experience.

PART 3 — Viewpoint: Competitors (SAP / Microsoft / Others)

AI-generated fictional commentary. Not an official corporate statement.

Odoo’s emphasis on variables and shared components is a sensible way to keep UX predictable at scale. It’s especially compelling for mid-market customers that want rapid iteration and thematic customization, including dark mode. The design–feedback loop and Bootstrap-based foundation offer a pragmatic balance of flexibility and control.

The challenge, as Odoo grows, will be hardening consistency across highly regulated and complex enterprise scenarios—where compliance, auditability, accessibility, and extensibility requirements deepen. Tooling for large-scale design governance (public design systems, rigorous component catalogs, long-term migration guarantees) will be key to differentiate further, especially against suites that already emphasize formal UI standards and enterprise-grade lifecycle management. Still, Odoo’s speed and integrated UX remain strong advantages.

Disclaimer: This article contains AI-generated summaries and fictionalized commentaries for illustrative purposes. Viewpoints labeled as "Odoo Perspective" or "Competitors" are simulated and do not represent any real statements or positions. All product names and trademarks belong to their respective owners.

Share this post
Archive
Sign in to leave a comment
Mobile first: A responsive approach to Web design