aspnetboilerplate/aspnetboilerplate · warning

abp.ui.block is not implemented!

Error message

abp.ui.block is not implemented!

What it means

abp.ui.block is a stub in base abp.js that defines the UI-block API surface (blocking an element or the whole page with an overlay) without implementing it. Calling it logs this warning and does nothing. A UI adapter (typically abp.blockUI.js using jquery.blockUI) must be included.

Solutions

  1. Include abp.blockUI.min.js (which needs jquery.blockUI.js) after abp.js.
  2. Verify adapter load order in your bundle.
  3. Or implement: abp.ui.block = function (elm) { $(elm || document.body).block({ message: '...' }); };

Example fix

// before
abp.ui.block(); // nothing happens, warning logged
// after
<script src="jquery.blockUI.js"></script>
<script src="abp.blockUI.js"></script>
abp.ui.block(); // overlay shown
Defensive patterns

Strategy: fallback

Validate before calling

if (/not implemented/.test(String(abp.ui.block))) { console.warn('abp.ui.block adapter missing'); }

Type guard

function hasUiBlockAdapter() { return typeof abp.ui.block === 'function' && !/not implemented/.test(String(abp.ui.block)); }

Try / catch

try { abp.ui.block($form); } catch (e) { $form.addClass('loading'); }

Prevention

When it happens

Trigger: Calling abp.ui.block(element) without a UI adapter overriding the stub.

Common situations: Apps showing blocking overlays during AJAX calls whose abp.blockUI.js include was dropped; adapter loaded before abp.js so stubs overwrite it.

Related errors


AI-assisted analysis of aspnetboilerplate/aspnetboilerplate@2323c13a15 (2026-09-08). Data as JSON: /api/errors/9cc7e66fbee3061c. Report an issue: GitHub.

Appendix: source

Thrown at src/Abp.Web.Resources/Abp/Framework/scripts/abp.js:486

        if (!$) {
          abp.log.warn('abp.message can not return promise since jQuery is not defined!');
          return null;
        }

        return $.Deferred(function ($dfd) {
          $dfd.resolve();
        });
      };

      /* UI *******************************************************/

      abp.ui = abp.ui || {};

      /* UI BLOCK */
      //Defines UI Block API, not implements it

      abp.ui.block = function (elm) {
        abp.log.warn('abp.ui.block is not implemented!');
      };

      abp.ui.unblock = function (elm) {
        abp.log.warn('abp.ui.unblock is not implemented!');
      };

      /* UI BUSY */
      //Defines UI Busy API, not implements it

      abp.ui.setBusy = function (elm, optionsOrPromise) {
        abp.log.warn('abp.ui.setBusy is not implemented!');
      };

      abp.ui.clearBusy = function (elm) {
        abp.log.warn('abp.ui.clearBusy is not implemented!');
      };

      /* SIMPLE EVENT BUS *****************************************/

View on GitHub (pinned to 2323c13a15)