Exadel Smart Library

UI component library with flair and precision

ESL is an open-source web components library that helps developers create modern-looking, effective, and user-friendly interfaces faster.

Why the ESL Web Components Library?

  • Efficient

    Our library reduces the work needed to create reusable UI components by giving you a reliable base to customize and expand on for fast and accurate development.

  • Fast

    With ESL, there’s no need to write lengthy markup — the reusable elements in our UI component library are small, but they’re designed to be the optimal building blocks for your content.

  • Light

    We specifically designed our reusable web components to work quickly and efficiently in browsers, cutting out the unnecessary code that takes a toll on user experience.

  • Powerful

    While the modules in our web components library may be small, they’re also universal, allowing you to mix and match the UI components at will to create large modules.

  • Tested

    We covered all of our utilities with unit tests to make ESL the best front end component library, which means every new addition works just as expected.

  • Versatile

    Our UI component library doesn't introduce any additional restrictions — only benefits, as it offers utilities and framework-agnostic web components that work with any tech stack.

Browser Support

Our web components library uses built-in browser functionality — Web API and ECMAScript 6 features that are fully supported by modern browsers such as Chrome, Firefox, Safari, or Edge.

If you want our UI component library to work in older browsers, you can use one of the polyfill lists — "light" or "full."

Read More

Let's Get Started

Join the array of consumers who successfully use our UI component library. ESL brings to you a number of ultra-light reusable UI components to create unique layouts and utilities to improve the development experience.

Our News

  • ESL v4.16.0 new

    We are delighted to announce the release of ESL version v4.16.0. With this release, we are continuing to implement changes originally planned for version 5, and include them into the 4th stable version.

    Here is the list of changes:

    • Scroll-aware event handling for ESLEventListener swipe and longwheel targets. Now you can easily omit swipe and longwheel events in case of content scrolling.
    • Introducing the ESLBaseTrigger class in the esl-trigger module to simplify and make Trigger-Toggleable relationship more clear and straightforward.
    • New possibilities for the attr decorator. Now you can use providers to set default values and the inherit option to inherit the value of declared attributes from DOM parents.
    • Bug fixes and improvements in the ESLShare module (update config method, migration to ESLBaseTrigger, etc.).
    • Bug fixes for the microtask utility and ESLEventListener support for any object-like host.
  • ESL v4.15.0 new

    ESL v5.0.0 is still in progress and currently under beta channel. But we decided to release a couple of minor versions of ESL v4 to allow you to be more up to date with the upcoming 5th version.


    So, the ESL v4.15.0 has just been released. The following updates have been included in this release:

    • Introducing the new ESLWheelTarget proxy target designed to handle "long" wheel user actions.
    • Introducing the ESLOpenState mixin, facilitating automatic open/close actions based on media query changes for toggleable components.
    • Enhanced flexibility with the addition of support for extraClass and extraStyle parameters for instances of ESLPopup.
    • Out-of-the-box configuration for ESLShare now includes Skype, Tumblr, Viber, and WhatsApp share buttons. Additionally, the ability to update ESLShareConfig using list query syntax, along with accessibility and internal structural improvements.
    • Significant improvements to the ESLToggleable API, now featuring shouldShow and shouldHide internal methods instead of the previous onBeforeShow and onBeforeHide callbacks.
    • Enhanced types compatibility, debugging, and delegation bug-fixing for ESLEventListener.
    • Immutable Rect reimplementation for esl-utils module. Rect is going to become immutable by type in upcoming versions.
    • ESLPopup updated with autofocus, PopupActionParams.extraClass, and PopupActionParams.extraStyle support.
    • Bug fix: ESLEventListener delegation fixes for non-DOM targets and containers handling.
  • [Site 🌐] UI Playground for Example pages new

    We are pleased to announce that all of our example pages for non-beta components are now available with the capabilities of UI Playground 2 April (2.1.0-beta.2).


    Please be aware that work on the content is still in progress, and the final redesign is far from complete. We will keep you posted and may create a discussion thread for feedback.

  • ESL v4.14.0

    New ESL version v4.14.0 released and available on NPM! Discover what's new in the latest ESL:

    • We are pleased to announce the release of @exadel/eslint-plugin-esl, a tool designed to ensure continuous support for ESL, keeping you in sync with ESL updates and best practices. The plugin's versioning is synchronized with ESL, simplifying the process of finding the compatible version for your ESL setup.
      See the plugin's installation guide for more information.

    • In our journey towards the release of the production-ready esl-share, the current beta version is stable and won't undergo significant changes. Explore the latest module structure, featuring:

      • A separate esl-share-list component tailored for users who prefer a simple list of share buttons without the popup.
      • The esl-share custom element now utilizes the esl-share-popup implementation.
    • We've introduced a new static property, DEFAULT_PARAMS, to the esl-toggleable instances. This addition makes it effortless to set default show/hide parameters for toggleable based modules.

    • Introducing the new esl-random-text component, designed to assist in populating your test pages with dummy content.

    • iOS bugfixes related to the native scroll for esl-tabs module

  • ESL v4.13.0

    Upgrade to ESL version v4.13.0, now available on NPM! Discover the latest features and bug fixes:

    • In the esl-event-listener module, we've introduced a new condition descriptor property, providing a legal means to prevent subscriptions. Additionally, we've added the ESLIntersectionTarget adapter utility, enabling you to manage IntersectionObserver subscriptions through event listeners.

    • The esl-share module is progressing towards a non-beta version, with several massive updates including the introduction of the esl-share-list component, a revamped esl-share-popup implementation, out-of-the-box share config defaults, and more.

    • In the esl-popup module, we've resolved a bug related to updating the popup position when the activator changes.

    • The esl-media module has received a bugfix addressing issues with the Brightcove provider's autoplay marker.

    • The esl-scrollbar module now includes a bugfix for handling situations where the browser creates dimensions with floating-point values, ensuring correct handling of at-start/at-end positions.

  • ESL v4.12.0

    ESL version 4.12.0 is now available on NPM. Explore the enhancements in the latest release:

    • Introducing support for a new event target designed to detect touch swipe gestures (refer to ESLSwipeEventTarget)
    • ESLMedia now supports lazy initialization (refer to ESLMedia lazy attribute)
    • Bug-Free Experience: ESLTabs now observes the resize of its content instead of observing the window resize event
    • The structure of esl-event-listener/core/targets has been optimized, and now helpers are accessible with more consistent names
Show older news