Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Extra Tools
  3. List View Column Resize v 17.0
  4. Sales Conditions FAQ

List View Column Resize

by CML https://kaypi.pe
Odoo
v 17.0 Third Party 5
Download for v 17.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Lines of code 147
Technical Name cml_web_list_resize
LicenseLGPL-3
Websitehttps://kaypi.pe
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Lines of code 147
Technical Name cml_web_list_resize
LicenseLGPL-3
Websitehttps://kaypi.pe
List View Column Resize | Persistent Column Widths for Odoo 17
Resize columns once — widths are remembered per user across navigation

cml_web_list_resize solves a common frustration in Odoo 17: column widths that you carefully resize are lost every time you navigate away. This module persists each user's column widths in localStorage, scoped per model and view, and restores them automatically on every visit — with zero configuration.

  • ✅ Automatic persistence — widths are saved after every drag resize with no extra steps
  • ✅ Per user & per view — each user has their own widths, scoped by model and view ID
  • ✅ Instant restore — saved widths are applied on mount before the first render completes
  • ✅ Native drag handle — uses Odoo's existing resize handle, no new UI elements added
  • ✅ Embedded list safe — One2many and Many2many embedded lists are skipped to avoid conflicts
  • ✅ No backend model — purely client-side, no database tables, no server requests
✉ Book a Live Demo ▶ Watch on YouTube
  • ✔ Community
  • ✔
    Enterprise
    On-premises
  • ✔ Odoo.sh
  • ✘ Online
Odoo Version
17.0
Depends on
web
License
LGPL-3
Module
cml_web_list_resize
🎯 Why this module?

Native Odoo resets column widths every time you navigate away. cml_web_list_resize makes your resize choices permanent — saved instantly, restored automatically, with no setup required.

💾 Persistent by default

Every resize is automatically saved after a 600ms debounce. There is no button to click, no setting to enable — widths are stored the moment you release the handle.

👥 Per-user isolation

Each user's browser stores only their own widths. Resizing in one session does not affect other users — everyone keeps their personal layout.

🗂 Per-view scoping

Widths are saved per model and view ID. Contacts, Sales Orders and any other list each have their own independent set of widths — no cross-contamination.

⚡ Zero configuration

Install and forget. No settings to configure, no groups to assign, no backend records to create. The module works transparently on every list view from day one.

🛡 No backend footprint

Purely client-side. No new Python models, no database tables, no server requests. All storage and retrieval is done via localStorage — the server never knows.

🔗 Native handle, no new UI

The module hooks into Odoo's existing resize handle — the same thin bar that already appears on column header hover. No new buttons, no toolbar changes, no UI clutter.

▶ Live Demo

Watch the full flow — resize columns, navigate between pages and see widths preserved automatically.

📖 Documentation
  • 📖 User Guide
  • 📦 Installation
  • ❓ FAQ
  • 📧 Support
  • 📋 1. Overview
  • 2. How to Resize
  • 3. Persistence
  • 4. Scope & Isolation
  • 5. Reset Widths

1. Overview

Odoo 17 allows users to resize list columns by dragging the resize handle on each column header. However, those widths are lost the moment you navigate away — every return to the list resets all columns to their default sizes.

cml_web_list_resize patches the native ListRenderer to save column widths in localStorage after each resize and restore them automatically on the next visit. No configuration, no server calls, no extra UI — it just works.

How it works
  1. Drag any column resize handle to set your preferred width.
  2. Release the handle — widths are saved automatically (600ms debounce).
  3. Navigate away and come back — widths are restored instantly.
  4. Repeat for any list view — each one has its own saved widths.

2. How to Resize

Column resizing uses the native Odoo resize handle — the thin vertical bar that appears on the right edge of each column header on hover. No new UI is added by this module.

Steps
  1. Hover over a column header — the resize handle appears on its right edge as a thin highlighted bar.
  2. Click and drag the handle left or right to resize the column.
  3. Release to confirm — the module captures the final width and schedules a save.
  4. The width is stored in localStorage within 600ms after release.
Tip: resize multiple columns in one session — all widths are saved together when the debounce timer fires.

3. Persistence

Widths are stored in the browser's localStorage — a client-side key/value store that survives page reloads and browser restarts without sending anything to the server.

  • Storage key format: cml_resize.{model}.{viewId} — one entry per list view.
  • Value: a JSON object mapping each column's field name to its width in pixels.
  • Restore: on every mount and after each re-render where keepColumnWidths is not already set.
  • No server requests: the module adds zero RPC calls — all I/O is local.
Note: localStorage is per browser and per user session. If a user switches browsers or clears browser data, widths will revert to defaults on next visit.

4. Scope & Isolation

Each list view has its own isolated set of saved widths. Resizing columns in one view never affects another.

  • Per model: Contacts and Sales Orders have separate width sets.
  • Per view ID: if the same model has multiple list views (e.g. a kanban-embedded list vs. the main list), each gets its own entry.
  • Per user: localStorage is browser-level — each user's browser stores only their own widths.
  • Embedded lists skipped: One2many and Many2many lists inside form views are excluded — only top-level list views persist widths.

5. Reset Widths

To clear saved widths and return a list to its default column sizes, call the reset method from the browser console on the active list view component.

Reset from console

Open the browser DevTools console while on the list view and run:

// Find the ListRenderer component and call reset
owl.__apps__[0].env.services.ui.activeElement .querySelector('.o_list_renderer').__owl__ .component.cmlResizeReset()
Alternative: clear the specific localStorage key manually from DevTools → Application → Local Storage: cml_resize.{model}.{viewId} then reload the page.
Installation steps
  1. Place cml_web_list_resize in your custom addons path.
  2. Update Apps List from the Apps menu.
  3. Install List View Column Resize.
  4. To upgrade after an update:
./odoo-bin -c your_odoo.conf -d your_database -u cml_web_list_resize --stop-after-init
Validation tip: open any list view, resize a column, navigate to another menu and come back — the column width should be restored automatically.
❓ Are widths shared between users?

No. localStorage is per browser — each user's browser stores only their own widths. User A's resizing does not affect User B.

❓ What happens if I clear browser data?

Saved widths are lost and columns revert to Odoo's default sizes on next visit. Simply resize again to restore your preferred layout.

❓ Does it conflict with other list view modules?

The module patches onStartResize and freezeColumnWidths via Odoo's standard patch system. It is compatible with other CML list modules and should not conflict with well-written third-party patches.

❓ Does it work on mobile or tablet?

The module uses the native pointer events that Odoo already uses for resizing. Persistence works on any device that supports localStorage, but the resize interaction itself depends on Odoo's native behavior on that device.

❓ Does it send any data to the server?

No. All storage and retrieval is done via localStorage only. The module adds zero server requests, zero new models and zero database tables.

📧

Need Help?

Contact us for technical support, bug reports or feature requests related to column width persistence.

Contact Support

⏰ Response time: 24–48 business hours

⭐ If this module helps your team, please leave a review on Odoo Apps ⭐

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Please choose a rating from 1 to 5 for this module.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with