# simple-keyboard's manifest reads 3.8.192 while its newest release is 3.8.0

> An on-screen keyboard for web applications, MIT licensed and still built to run on Internet Explorer 11. The repository is committed to daily while its newest tagged release is two years old, autocorrect and input masking live outside the package, and two of the three framework entries are links to the demo.

**hodgef/simple-keyboard** — Javascript Virtual Keyboard - Customizable, responsive and lightweight

- Repository: https://github.com/hodgef/simple-keyboard
- Website: https://virtual-keyboard.js.org/
- Stars: 2,454 · Forks: 190
- Language: JavaScript
- License: MIT
- Published: 2026-09-28 · Updated: 2026-09-28 · Language: en
- Canonical page: https://hysenlabs.com/projects/hodgef-simple-keyboard

## The manifest says 3.8.192 and the newest release tag says 3.8.0

The package manifest declares version 3.8.192. No release uses that number. The tagged releases are 3.6.0 on 2023-05-26, 3.7.0 on 2023-08-21 and 3.8.0 on 2024-09-12, and each of those release names carries a stability marker in parentheses, reading Version 3.8.0 (Stable) for the newest.

So two numbering schemes are in play. The tags move in whole minor steps, while the manifest carries a build-like third component that has climbed to 192. Anything that installs from a registry follows the manifest, and anything that pins a GitHub release follows the tags, and the two report different versions for the same code.

The dates matter more than the digits. The newest release is from September 2024, and the repository's last commit is dated 2026-10-02. Two years of commits sit above the newest tag, which means the published releases are a historical record rather than a description of the current state.

## Three domains carry this project and the manifest names the one with no documentation

The manifest's homepage field points at virtual-keyboard.js.org. Every link in the readme body points somewhere else. The demo, the getting started page, the documentation site and the questions and answers page all sit on simple-keyboard.com, the module documentation sits on hodgef.com, and the chat invitation is a Discord invite link with its own address.

That is three domains with three roles, and the one declared as the homepage is not the one holding the documentation. Anyone who reads the manifest, sees a homepage, and expects to find instructions there has to work out which of the other two domains to visit.

The distribution question is answered elsewhere, though. The manifest also names an npm package by name, and the readme states two ways to obtain the library, a script tag from a content delivery network or an install from npm. Neither route is spelled out with a URL or a code sample anywhere in the file, so the actual acquisition step is delegated to the getting started page on the documentation domain.

## Two of the three framework entries are links to the demo

The project describes itself as compatible with JavaScript, React, Angular and Vue projects, and the readme has an other versions section listing three of those. The React entry is a link to a separate repository under the same owner. The Angular entry and the Vue entry are both links to the demo page.

So of three framework claims, one has a package of its own and two have a demonstration. The demo page is described as covering the vanilla, Angular, React and Vue versions, so the two links do lead to something real, but nothing in this repository says whether the Angular and Vue integrations are maintained here, published separately, or demonstrated by hand.

For a component library that positions itself across four ecosystems, the integration story is where most of the maintenance risk lives, and this is the section where a reader would look for it. What they find is one repository link and two demo links.

## The compatibility floor is IE11 and the default build is the one that pays for it

The supported list names Internet Explorer 11, two generations of Edge with their engine names attached, Chrome 49, Safari 9, Firefox 57 and iOS 9. Those floors are the reason the default artefact is what it is: the entry point named in the manifest is `build/index.js`, and the toolchain around it carries a polyfill package and a core-js dependency.

A second artefact exists for people who do not need that floor. The readme points at a Modern Browsers bundle in the build directory, named `index.modern.js`, and there are separate webpack configurations and separate build scripts behind it, one for the modern bundle and one for a modern ES module variant.

That gives the project four webpack configurations in total: the default one, the modern one, the modern ES module one and a fourth used only to serve the demo. The split is sensible engineering for a library with this spread of supported engines, and it also means the file an ordinary install loads is the one carrying the oldest-browser weight.

## Cloning the repository and installing builds the entire package

The instructions for running the demo on your own machine are three commands: clone, install, start, then open localhost:3000 in a browser. The install step is where the weight sits. The manifest defines a prepare script whose body is the build command, and npm runs prepare on a plain install from a clone, so the second command compiles the library rather than only fetching it.

That build is four steps in sequence: the default webpack pass, the modern bundle, the modern ES module bundle, and finally a TypeScript compiler invocation that runs after all three bundles exist. So a clone plus an install produces the complete set of published artefacts before you have edited a line of code.

The start command then serves the demo through the demo-specific webpack configuration, which is the fourth one, the only one whose job is a development server rather than a library build. The demo and the library therefore build through separate configurations, and only one of the two is what an npm consumer receives.

## Autocorrect and input masking are modules, and they live on another domain

Four modules are named as the way to extend the library: autocorrect, input mask, key navigation and swipe keyboard. Each is documented on the project's other domain rather than in this repository, and the same page carries instructions for writing your own module.

Read the list against what a virtual keyboard is for and the split becomes clear. Rendering keys and capturing input is what the core package does. Correcting what was typed, constraining what can be typed, and moving focus between keys with the keyboard alone are the parts a user actually notices, and all four are add-ons.

The boundary is not stated anywhere as a trade-off, and no version compatibility between the modules and the core library is given. A project that wants autocorrect is taking a dependency from a documentation domain, and the two are versioned by whatever process happens to publish each.

## The build output is committed and an ignore file decides what npm ships

A build directory sits in the repository tree alongside the source, and the manifest's entry point points inside it. That means the compiled artefacts are versioned alongside the code that produces them, and a clone has the runnable library before anything is built.

The presence of an npm ignore file alongside it is the other half of that arrangement. A package with source, four webpack configurations, a TypeScript configuration, a build script directory and a demo configuration has a great deal that does not need to reach a consumer, and the ignore file is where that decision is recorded.

Nothing in the readme describes either file. The tree also carries an ESLint configuration and an ignore file for it, a Babel configuration, a change log, a contributing guide, a code of conduct and a package lock file, and the only two commands written anywhere in the file are the install and start pair used for the demo. Everything else a new user needs to assemble is on the documentation site.

## Conclusion

simple-keyboard is a reasonable pick for a kiosk, a touch terminal or a form that must work on hardware nobody will update, and the maintainer is clearly still shipping, with commits two days old. Two things are worth checking before you adopt it. The default bundle is the one that carries support for Internet Explorer 11, so a modern application pays for a compatibility floor it does not need unless it deliberately imports the modern bundle instead. And the features that make a virtual keyboard pleasant to type on, autocorrect and input masking, are modules hosted on a separate domain and outside the package you install. Whichever version you pin, remember the release tags stop at 3.8.0 while the manifest has moved to 3.8.192.

## FAQ

### How do I install simple-keyboard from a CDN or from npm?

The readme states that the library can be used as a script tag from a content delivery network or installed from npm, and sends you to the getting started page on its documentation site. It names no content delivery network address and shows no snippet, so the acquisition step itself is documented outside the repository.

### Which browsers does simple-keyboard claim to support?

Internet Explorer 11, Edge 16 in both its Spartan and Chromium generations, Chrome 49, Safari 9, Firefox 57 and iOS 9. A separate Modern Browsers bundle, named index.modern.js in the build directory, is provided for projects that do not need the older engines and is produced by its own build scripts.

### What modules can extend simple-keyboard?

Four are named: autocorrect, input mask, key navigation and swipe keyboard, each documented on the project's own site rather than in the repository. The same page carries instructions for writing a module of your own, and a wiki page collects community libraries and integrations.

### Which frameworks have simple-keyboard integrations?

The readme claims compatibility with JavaScript, React, Angular and Vue. The React version has its own repository under the same owner, while the Angular and Vue entries in the other versions list both link to the demo page, which covers the vanilla, Angular, React and Vue builds.

### What is the current version of simple-keyboard?

The newest tagged release is 3.8.0, published 2024-09-12 and named Version 3.8.0 (Stable), after 3.7.0 from 2023-08-21 and 3.6.0 from 2023-05-26. The package manifest declares 3.8.192, and the repository's last commit is dated 2026-10-02, so the tags trail the source by two years.

## Sources

- [hodgef/simple-keyboard on GitHub](https://github.com/hodgef/simple-keyboard)
- [License: MIT](https://github.com/hodgef/simple-keyboard/blob/master/LICENSE)
- [Project website](https://virtual-keyboard.js.org/)
- [README](https://github.com/hodgef/simple-keyboard/blob/master/README.md)
- [Releases](https://github.com/hodgef/simple-keyboard/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/hodgef-simple-keyboard
