v 15.0 Third Party 20514
Download for v 15.0 Deploy on Odoo.sh
Lines of code 1519
Technical Name web_responsive
Also available in version v 13.0 v 12.0 v 9.0 v 11.0 v 14.0
You bought this module and need support? Click here!

Web Responsive

Production/Stable License: LGPL-3 OCA/web Translate me on Weblate Try me on Runbot

This module adds responsiveness to web backend.

Features for all devices:

  • New navigation with the fullscreen app menu

  • Quick menu search inside the app menu

  • Sticky header & footer in list view

  • Sticky statusbar in form view

  • Bigger checkboxes in list view

  • Increase the size of the labels in extra large screens

    https://raw.githubusercontent.com/OCA/web/15.0/web_responsive/static/img/label_size_small.png https://raw.githubusercontent.com/OCA/web/15.0/web_responsive/static/img/label_size_large.png

Features for mobile:

  • App-specific submenus are shown on full screen when toggling them from the “hamburger” menu

  • User-specific submenus are shown on full screen when toggling them from the “avatar” menu

  • View type picker dropdown displays comfortably

  • Top app bar is always visible, but the control panel is hidden when scrolling down, to save some valuable vertical space

  • Form status bar action and status buttons are collapsed in dropdowns. Other control panel buttons use icons to save space.

  • Breadcrumbs navigation is collapsed with a “back arrow” button.

  • Search panel is collapsed to mobile version on small screens.

  • Followers and send button is displayed on mobile. Avatar is hidden.

  • Scrollable dropdowns

  • Kanban interface adopted to mobile

  • Calendar interface adopted to mobile

  • Interface is adapted dynamically on device rotation

  • Big inputs on form in edit mode

Features for desktop computers:

  • Keyboard shortcuts for easier navigation, using `Alt + Shift + [NUM]` combination instead of just Alt + [NUM] to avoid conflict with Firefox Tab switching. Standard Odoo keyboard hotkeys changed to be more intuitive or accessible by fingers of one hand. F.x. Alt + S for Save

  • Autofocus on search menu box when opening the app menu

  • Full width form sheets

  • Set chatter on the side of the screen, optional per user

  • Sticky chatter topbar

  • When the chatter is configured on the side part, the document viewer fills that part for side-by-side reading instead of full screen. You can still put it on full width preview clicking on the new maximize button.


Table of contents


The following keyboard shortcuts are implemented:

  • Navigate app search results - Arrow keys
  • Choose app result - Enter
  • Esc to close app drawer

Known issues / Roadmap

  • App navigation with keyboard.
  • Handle long titles on forms in a better way

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed feedback.

Do not contact contributors directly about support or help with technical issues.



  • LasLabs
  • Tecnativa
  • ITerra



This module is maintained by the OCA.

Odoo Community Association

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

Current maintainers:

Yajo Tardo SplashS

This module is part of the OCA/web project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

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.
Sandra Barrera
on 2/5/22, 12:31 PM

Para la Community en versión 15 funcionó ¡perfecto!.

Muchas gracias a los desarrolladores.

Muhammad Saafan
on 3/15/22, 9:27 AM

back button is not working 

Muhammad Saafan
on 2/28/22, 12:33 PM

    return method(self, *args, **kwargs)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/addons/base/models/ir_module.py", line 483, in button_immediate_install

    return self._button_immediate_function(type(self).button_install)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/addons/base/models/ir_module.py", line 600, in _button_immediate_function

    registry = modules.registry.Registry.new(self._cr.dbname, update_module=True)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/modules/registry.py", line 87, in new

    odoo.modules.load_modules(registry, force_demo, status, update_module)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/modules/loading.py", line 474, in load_modules

    processed_modules += load_marked_modules(cr, graph,

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/modules/loading.py", line 363, in load_marked_modules

    loaded, processed = load_module_graph(

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/modules/loading.py", line 222, in load_module_graph

    load_data(cr, idref, mode, kind='data', package=package)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/modules/loading.py", line 69, in load_data

    tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/tools/convert.py", line 745, in convert_file

    convert_xml_import(cr, module, fp, idref, mode, noupdate)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/tools/convert.py", line 811, in convert_xml_import


  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/tools/convert.py", line 731, in parse


  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/tools/convert.py", line 693, in _tag_root

    raise ParseError('while parsing %s:%s, somewhere inside\n%s' % (


The above exception was the direct cause of the following exception:

Traceback (most recent call last):

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/http.py", line 644, in _handle_exception

    return super(JsonRequest, self)._handle_exception(exception)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/http.py", line 302, in _handle_exception

    raise exception.with_traceback(None) from new_cause

odoo.tools.convert.ParseError: while parsing None:12, somewhere inside

<data name="Open Mobile Assets" inherit_id="web.assets_backend">

        <xpath expr="//link[last()]" position="after">

            <link type="text/css" rel="stylesheet" href="/web_responsive/static/src/scss/web_responsive.scss"/>

            <link type="text/css" rel="stylesheet" href="/web_responsive/static/src/scss/search_view_mobile.scss"/>

            <link type="text/css" rel="stylesheet" href="/web_responsive/static/src/scss/kanban_view_mobile.scss"/>


        <xpath expr="//script[last()]" position="after">

            <script type="application/javascript" src="/web_responsive/static/src/js/web_responsive.js"/>

            <script type="application/javascript" src="/web_responsive/static/src/js/kanban_renderer_mobile.js"/>



Muhammad Saafan
on 2/28/22, 12:33 PM

Traceback (most recent call last):

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/addons/base/models/ir_http.py", line 237, in _dispatch

    result = request.dispatch()

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/http.py", line 688, in dispatch

    result = self._call_function(**self.params)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/http.py", line 360, in _call_function

    return checked_call(self.db, *args, **kwargs)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/service/model.py", line 94, in wrapper

    return f(dbname, *args, **kwargs)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/http.py", line 349, in checked_call

    result = self.endpoint(*a, **kw)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/http.py", line 917, in __call__

    return self.method(*args, **kw)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/http.py", line 536, in response_wrap

    response = f(*args, **kw)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/addons/web/controllers/main.py", line 1352, in call_button

    action = self._call_kw(model, method, args, kwargs)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/addons/web/controllers/main.py", line 1340, in _call_kw

    return call_kw(request.env[model], method, args, kwargs)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/api.py", line 464, in call_kw

    result = _call_kw_multi(method, model, args, kwargs)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/api.py", line 451, in _call_kw_multi

    result = method(recs, *args, **kwargs)

  File "<decorator-gen-74>", line 2, in button_immediate_install

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/addons/base/models/ir_module.py", line 74, in check_and_log

Muhammad Saafan
on 2/28/22, 12:32 PM

 i got this error on v15


Odoo Server Error

Traceback (most recent call last):

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/tools/cache.py", line 85, in lookup

    r = d[key]

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/tools/func.py", line 71, in wrapper

    return func(self, *args, **kwargs)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/tools/lru.py", line 34, in __getitem__

    a = self.d[obj]

KeyError: ('ir.model.data', <function IrModelData._xmlid_lookup at 0x107bda1f0>, 'web.assets_backend')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/tools/convert.py", line 680, in _tag_root


  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/tools/convert.py", line 658, in _tag_template

    return self._tag_record(record)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/tools/convert.py", line 567, in _tag_record

    f_val = self.id_get(f_ref)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/tools/convert.py", line 663, in id_get

    res = self.model_id_get(id_str, raise_if_not_found)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/tools/convert.py", line 669, in model_id_get

    return self.env['ir.model.data']._xmlid_to_res_model_res_id(id_str, raise_if_not_found=raise_if_not_found)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/addons/base/models/ir_model.py", line 1935, in _xmlid_to_res_model_res_id

    return self._xmlid_lookup(xmlid)[1:3]

  File "<decorator-gen-35>", line 2, in _xmlid_lookup

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/tools/cache.py", line 90, in lookup

    value = d[key] = self.method(*args, **kwargs)

  File "/Users/muhammadsaafan/Downloads/odoo-15.0/odoo/addons/base/models/ir_model.py", line 1928, in _xmlid_lookup

    raise ValueError('External ID not found in the system: %s' % xmlid)

ValueError: External ID not found in the system: web.assets_backend

The above exception was the direct cause of the following exception: