Skip to content

v1.7 • UI • 5kb gzipped • MIT

MenuForge

Keyboard-complete menus and menubars that follow the authoring practices to the letter.

★ 8.2kGitHub
↓ 14.4k / week● MIT● TS 5.0+
menuforge-preview.png
Abstract preview graphic for MenuForge

// why menuforge

The whole keyboard contract

Arrow keys, typeahead, Home, End, Escape and roving tabindex — all of it, not the eighty percent most libraries stop at.

● 5ms render● 60fps● 0 deps

// stack

Unstyled by default

MenuForge ships behaviour and ARIA wiring. Every visual decision stays with you.

MenuForge started as a single file in a client project and stayed small on purpose. It does one job, it does it in 5kb gzipped, and it has no runtime dependencies.

Getting started

Install it, import it, call it:

npm i menuforge-js

Arrow keys, typeahead, Home, End, Escape and roving tabindex — all of it, not the eighty percent most libraries stop at.

What it does not do

It does not manage your state, style your components or ship a plugin system. Those are your decisions, and keeping them out is what keeps the bundle honest.

  • Typeahead search
  • Submenus that behave
  • MIT licensed, commercially friendly

Features

Typeahead search

Type a few letters to jump to an item, with the timeout the specification asks for.

Submenus that behave

Open on hover intent, close on a diagonal exit, and never trap a pointer heading for a neighbour.

ESM and types

Ships module and CommonJS builds with hand-written type definitions and source maps.

Styling stays yours

MenuForge sets no colours and no spacing. Every visual decision belongs to your design system.

Dark mode ready

Reads from CSS custom properties, so a theme switch needs no JavaScript at all.

Container aware

Adapts to the box it is given rather than the viewport, so it works in a sidebar.

Get MenuForge v1.7

11 files • .min.js 5kb • .zip 72kb • sha384 verified

Changelog

v1.7 Jun 14 2026 • latest
  • Hover intent for submenus
  • Typeahead now respects the reset timeout
  • Roving tabindex rewritten
v1.6.1 Mar 16 2026
  • Type definitions rewritten by hand
  • Dropped the last runtime dependency
v1.6 Dec 31 2025
  • Safari 16 compatibility fixes
  • Bundle size reduced by eleven percent
View full archive →

// related

Related products

Sep 10 • v2.0

ChartForge

Canvas charts in twelve lines. Responsive, accessible and dark-mode ready, with no D3 learning curve.

View →
Aug 30 • v3.2.1

MotionEase

Physics-based micro-animations with a single call. Spring curves that feel right without a tuning session.

View →
Aug 19 • v1.9.4

FormFlow

Validation and multi-step logic that works the same in React, Vue and vanilla. Your markup stays yours.

View →

Ship the interface today.

MIT licensed. Commercial friendly. Five-minute setup.