w2ui: A Dependency-Free JavaScript UI Widget Library
UI widgets for modern apps. Data table, forms, toolbars, sidebar, tabs, tooltips, popups. All under 120kb (gzipped).
At a glance
- What is it?
- w2ui builds data grids, forms, layouts and toolbars from declarative JSON, ships as two files, and dropped jQuery in version 2.0. It is a good fit for admin panels and internal tools, and a poor fit for teams that want a modern component framework.
- Who is it for?
- Adopt w2ui if you are building a data-heavy internal tool and want a grid, form, layout and popup set that loads from two static files with no build step. Do not adopt it if your team expects a component framework with reactive state, TypeScript types and frequent releases; version 2.0.0 was published in April 2023 and the README still points to the 1.5 documentation for most widgets.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 39 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 24, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What w2ui solves, and for whom
Most JavaScript UI libraries assume a build pipeline, a framework runtime and a component model. w2ui assumes none of that. The README describes it as a library that lets you define UI in a declarative way via JSON data structures, and the quick start says you include w2ui.js and w2ui.css in a page and you are done. There are no image dependencies; some images and font icons are embedded in the CSS file.
The target reader is someone building an admin panel, a back-office tool or an internal CRUD screen where the bulk of the work is a data grid plus a form plus a layout. The library implements w2grid, w2toolbar, w2sidebar, w2tabs, w2form, w2fields, w2popup, w2layout and w2utils. That is a full set for a data-driven screen, and it is the reason the project exists: one file pair covers a class of application that would otherwise pull in a framework and a component library.
The README states there is no requirement for a server side language, and that Node, Java, PHP, ASP, Perl or .NET all work as long as the server returns JSON. Server-side samples live in the server folder of the repository. That JSON-on-the-wire model is the defining constraint of the library: the client is a renderer for structures you define, not a state container you mutate.
How w2ui renders: JSON structures and two files
The mechanism is direct. You declare a widget as a JavaScript object, pass it to the library, and w2ui builds the DOM, the CSS classes and the event wiring. All controls and their CSS classes are defined inside w2ui.js and w2ui.css, so there is no separate theme package to resolve.
The repository layout reflects this. The src folder holds the source JavaScript and a less subfolder holds the LESS source for the CSS; the dist folder holds the compiled w2ui.min.js and w2ui.min.css. The gulpfile.js bundles source into those two dist files. There is also an es6mods folder described as an ES6 modules playground, and the README says the demos have been updated to work as ES6 modules without dependencies.
Version 2.0 removed jQuery. The README states that w2ui v2 no longer requires jQuery as a dependency, and the repository carries a no-query.md file at the top level. That said, package.json still lists jquery as a dependency with the range >=3.5, which is a real inconsistency between the manifest and the stated goal of the 2.0 line. If you install from npm, check what actually lands in your node_modules rather than trusting the README alone.
The library is small by design. The README says the complete library is under 100Kb minified and gzipped, while the repository description puts it under 120kb gzipped. Treat the number as approximate and measure the dist files yourself if size is the deciding factor.
Installing w2ui and building a first grid
For a plain page, the README says to include w2ui.js (or w2ui.min.js) and w2ui.css (or w2ui.min.css). The stable 1.5 build is offered at w2ui.com, and the development 2.0 build is in the dist/ folder of the master branch. If you are consuming it from npm, the package name is w2ui, with dist/w2ui.js as the main entry and dist/w2ui.css as the style entry.
To build from source, the repository is a Node.js project. The README gives these two commands, and gulp writes the bundle into dist/w2ui.min.js and dist/w2ui.min.css:
npm install
gulpFor local browsing of the demos, package.json defines a start script that serves the current directory on port 3500 with Python's http.server and opens a browser at that address. On Windows the script uses start, on other platforms it uses open.
npm startA grid is configured by passing an object to the w2grid method. The README does not print a full grid example, so there is no snippet to copy here; the widget documentation linked from the README is where the column and url options for w2grid are described. What the README does establish is the contract: the server returns JSON, and the client renders it.
The styling comes entirely from w2ui.css, so a page that loads the JS but not the CSS will render an unstyled table rather than fail outright.
Where w2ui stops being the right tool
The most concrete limitation is documentation drift. The README's widget list links every control to documentation under a /web/docs/1.5/ path, and the quick start says the current stable version is 1.5 while 2.0 is in development. So the reference material most users will land on describes the previous major line, not the one that removed jQuery. If you are on the master branch, you are reading docs written for a version with different internals.
Release cadence is the second constraint. The most recent release listed is 2.0.0 from 2023-04-26, and the README still frames 2.0 as an in-progress version that is "stable enough to be considrered for a Release Candidate." The last push to the repository was on 2026-08-24, so the code is being touched, but the published release history does not show a stream of versioned releases you can pin against. If your project needs predictable upgrade windows with changelogs, that is a mismatch.
The third limitation is architectural. A declarative JSON widget library gives you a grid and a form quickly, but it does not give you a reactive component model, typed props or a virtual DOM. If your application's complexity lives in client-side state transitions rather than in rendering tabular data, w2ui will feel like the wrong layer. It is also the wrong choice if you need server-side rendering of those widgets, since the README describes a browser library that consumes JSON from a server rather than one that renders on the server.
Finally, the package.json dependency on jquery contradicts the no-jQuery claim of 2.0. That is not fatal, but it means you should verify the actual dependency graph before assuming a zero-dependency install.
w2ui compared with DataTables and ag-Grid
The natural comparison is with a dedicated grid library. DataTables is a jQuery plugin that enhances an existing HTML table, and ag-Grid is a grid component with its own API surface, framework wrappers and a commercial tier. w2ui's difference is scope: it is not a grid library that happens to ship other widgets, it is a widget set where the grid is one of nine controls sharing the same CSS and the same JSON configuration style.
That shared surface is the practical argument. If you need a grid, a toolbar, a sidebar, tabs, a popup and a form that all look consistent and all configure the same way, one library with one stylesheet is less integration work than assembling four. If you need only a grid and you already have a design system, a dedicated grid library is the smaller commitment.
The second difference is the dependency story. DataTables is built around jQuery, and ag-Grid is built around its own runtime and framework adapters. w2ui 2.0's stated goal is no dependencies at all, which matters for pages where you cannot add a framework runtime. The README notes w2ui can be used in Vanilla JS projects, ES6 modules, and Angular, React and Vue based projects, so it is not locked to a single host framework.
Licence, maintenance and upgrade cost
The licence is MIT, stated in package.json and present as license.txt at the repository root. MIT is permissive: it allows commercial use, modification and redistribution provided the copyright notice and permission notice are retained. That is a summary of the licence text, not legal advice, and you should read license.txt and your own distribution obligations before shipping.
Upgrade cost is the part worth planning for. The README describes 1.5 as stable with support for older browsers and 2.0 as the development line, and the two differ in a way that matters: 2.0 removed jQuery. Moving a 1.5 codebase to 2.0 is therefore not a patch-level change. The repository keeps a w2ui-1.5 branch, so staying on 1.5 is a supported option if you depend on older browsers.
On maintenance, the last push was on 2026-08-24, which is recent. The release history, however, shows 2.0.0 in April 2023 as the most recent tagged release. Those two facts describe a repository that is still receiving commits but is not shipping versioned releases at a steady rate. The README's own framing of 2.0 as in-progress, more than three years after that release, is the clearest signal about how to plan: pin to a commit or a dist file you have tested rather than to a version range.
Contributing and the source layout
If you intend to modify w2ui rather than consume it, the README is specific about where changes belong. JavaScript changes go in /src. CSS changes go in the LESS files under /src/less/src, not in the compiled CSS. Unit test work goes in /qa, documentation changes in /docs, and new demos in /demos. The README also asks contributors to check out the latest code first because changes that do not merge cleanly are harder to integrate.
The test script in package.json is an ESLint run over src and demos with the js extension, so the automated check in the repository is linting rather than a test suite. The specs folder is described as test automation and test is described as manual testing files, which suggests verification is partly manual. That is a reasonable arrangement for a UI library, but it means a change you make should be exercised against the demos before you rely on it.
Editorial conclusion
Adopt w2ui if you are building a data-heavy internal tool and want a grid, form, layout and popup set that loads from two static files with no build step. Do not adopt it if your team expects a component framework with reactive state, TypeScript types and frequent releases; version 2.0.0 was published in April 2023 and the README still points to the 1.5 documentation for most widgets. Before committing, verify that the dist/ files in the master branch build and run in your target browsers, and confirm the MIT license terms against your own distribution requirements.
Frequently asked questions
Does w2ui require jQuery?
The README states that w2ui v2 no longer requires jQuery as a dependency, and the repository includes a no-query.md file. However, package.json still lists jquery with the range >=3.5, so check the installed dependency graph if a zero-dependency build matters to you.
How do I install w2ui?
For a plain page, the README says to include w2ui.js (or w2ui.min.js) and w2ui.css (or w2ui.min.css). To build from source, run npm install followed by gulp, which bundles the files into dist/w2ui.min.js and dist/w2ui.min.css.
Which widgets does w2ui include?
The README lists w2grid, w2toolbar, w2sidebar, w2tabs, w2form, w2fields, w2popup, w2layout and w2utils. All controls and their CSS classes are defined inside w2ui.js and w2ui.css.
What is the difference between w2ui 1.5 and 2.0?
The README describes 1.5 as the stable version that supports older browsers, and 2.0 as the development version that removes the jQuery dependency. The widget documentation linked from the README still points at /web/docs/1.5/ paths.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/vitmalina-w2ui)