Dependencies
Architecture

JavaScript Dependencies

SummitUI uses a small set of JavaScript dependencies for functionality that cannot be achieved with pure C# or that would require significantly more code to implement correctly.

Our Approach

SummitUI follows a "C# first" philosophy. We prefer implementing logic in C# whenever possible, reserving JavaScript for tasks that are impossible in C# or require access to browser APIs not available through Blazor's standard interop. All JavaScript dependencies are bundled locally - we never use external CDNs.

Dependencies

Current JavaScript dependencies used by SummitUI:

@floating-ui/dom

v1.7.4

~15 KB

Floating UI provides intelligent positioning for floating elements like popovers, dropdowns, and tooltips. It handles complex positioning logic including:

  • Automatic flip when content would overflow viewport boundaries
  • Shift positioning to keep content visible within scroll containers
  • Arrow positioning that tracks the reference element
  • Size constraints based on available space

Used by: Popover, Select, DropdownMenu, and any component with floating content.

Build Tools

In addition to runtime dependencies, SummitUI uses build-time tools for bundling:

esbuild

v0.25.0 (dev dependency)

esbuild bundles and minifies all JavaScript modules into a single summitui.js file. It's extremely fast (~10ms build times) and produces highly optimized output with tree-shaking to eliminate unused code.

Total Bundle Size

The complete bundled and minified summitui.js file is approximately 38 KB uncompressed. With standard web server compression (gzip/brotli), this reduces to approximately 10-12 KB over the wire.

@floating-ui/dom ~15 KB
SummitUI internal JS (keyboard/focus) ~23 KB
Total (minified) ~38 KB
Total (compressed) ~10-12 KB

Calendar calculations and date formatting are handled entirely by .NET's System.Globalization namespace. JavaScript is only used for DOM operations that cannot be performed in C# (keyboard event interception, focus management).

An unhandled error has occurred. Reload X