Welcome! Undernet is a fully modular, highly configurable set of base CSS styles and interactive UI components. It is responsive and automatically handles right-to-left languages with its styles and components.

The framework is extremely light, carrying no external dependencies. It’s available via CDN, NPM, and as a raw download.

Head over to the download page to see how you can add Undernet to your project, then learn the JavaScript and CSS patterns that make using the framework a breeze.

About Undernet

Undernet was created with the goal of simplifying the development experience, allowing the developer to write less CSS, as well as giving an easy JavaScript API for using common interactive UI patterns.

Over time, lots of new features have been added. These include lots of helper CSS classes and Sass utilities to empower developers in building their interfaces.

Undernet can both be a prototyping tool or the basis for your web app. You can easily pick and choose which modules to include, reducing the size of the overall bundle.

Core Principles

  • 🧩 Configurable: The framework comes with a configuration file enabling full brand control, from global, to element, to component styling.
  • Accessible: Accessibility is baked into all facets of Undernet; everyone can use your app or website out of the box.
  • 📦 Modular: Undernet can act independently from your core stylesheet and be added to existing projects using a style scope.
  • 🚲 Flexible: Installation options range from NPM, CDN, to self-hosting the source files.


Undernet’s CSS and JavaScript will work in recent versions these browsers:

  • Chrome ✓
  • Firefox ✓
  • Safari ✓
  • Opera ✓

The framework is also tested in and supports Internet Explorer 11 and Edge on Windows. Support for IE11 and Edge may drop in the near future as chromium Edge is rolled out.


Undernet supports a FOSS methodology (free and open source). You can contribute on Github if you have questions or a want to file a bug report. Be sure to read about contributing before filing a bug or pull request.

Is there information missing? Edit this page on Github!