# adapt_framework: a JavaScript framework for single-version HTML5 e-learning content

> Adapt is a GPL-3.0 framework for building responsive, accessible, multi-language HTML5 courses that run from a web server or inside a SCORM compliant LMS, and it reaches for Grunt, Babel, Rollup and Cypress to package a course into a static bundle.

**adaptlearning/adapt_framework** — A toolkit for creating responsive, accessible, multilanguage HTML5 e-learning courses.

- Repository: https://github.com/adaptlearning/adapt_framework
- Website: https://www.adaptlearning.org/
- Stars: 632 · Forks: 251
- Language: JavaScript
- License: GPL-3.0
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/adaptlearning-adapt-framework

## One course bundle for both the web and an LMS

Adapt is described as a free and easy to use framework and authoring tool that creates fully responsive, multi-device HTML5 e-learning content, and the more precise description of what it is appears further down: a toolkit for creating responsive, single-version HTML5 e-learning courses for delivery on a web server or a SCORM-compliant learning management system. The word single-version is the key design commitment. A course built with Adapt is one artefact that adapts to the device it is opened on, and the same package can be uploaded to a Learning Management System or served from a web server, so an organisation does not maintain a desktop version and a mobile version of every course. The audience is instructional designers and learning developers, most of whom work in the authoring tool but end up owning the JSON course content that the framework renders.

## The framework is the renderer, the authoring tool is elsewhere

The separation between the two halves of the project is worth stating early, because the repository name suggests otherwise. The README says the project has also created a server-based authoring tool for creating courses using the framework, and that tool lives in its own repository, adapt_authoring. What is in adapt_framework is the runtime: the components, the theme, the course model, the build pipeline, and the plugin host. That split has consequences for how you work. A course in Adapt is a structured set of JSON documents describing components, which the framework loads and renders at runtime, and the authoring tool is a server application that produces those documents. A team that wants to generate course content programmatically can skip the authoring tool entirely and write the JSON, because the framework does not require the GUI to produce valid content. That is also why the framework package is marked private in its package.json, since it is distributed as a build tool rather than as an application dependency.

## Accessibility, right to left and localisation as first class features

The feature list is where a learning framework distinguishes itself from a generic page toolkit. The project states it meets WAI AA accessibility standards, and the topics carry accessibility as a headline concern. Right-to-left compatibility is listed as a feature rather than a fix, which matters for any course aimed at Arabic, Hebrew or Persian speaking learners. Multi language and localisation support is listed and linked to a dedicated wiki page on course localisation. Assessments are supported with question banks, randomisation and customisable feedback, and there is step locking, meaning a learner cannot skip ahead past a required step, plus bookmarking so a returning learner resumes where they left off. A customisable theme and built-in animation effects are also in the list, and the framework is described as a single-version system, so those visual choices apply across every device without a separate mobile build.

## Twenty three bundled plug-ins and a community browser

Extendability comes through plug-ins, and the framework ships 23 of them with more available through the community plugin browser. Experience API support, meaning the xAPI standard for tracking learning events, is delivered through the adapt-contrib-xapi plugin rather than being built in. The naming convention with the adapt-contrib- prefix for community plug-ins and the separate plugin browser is what makes the ecosystem navigable, and it is also the place where a fork of the framework usually diverges, since a course that depends on a community plug-in is depending on code that this repository does not control.

## The build is Grunt, Babel, Rollup and Cypress

The toolchain is old and that cuts both ways. The package scripts are short, and the preinstall step runs a node script called gitmodules.js, which is there because the repository carries a .gitmodules file and the build needs those submodules in place before it runs.

```json
  "scripts": {
    "preinstall": "node gitmodules.js",
    "lint": "node node_modules/eslint/bin/eslint.js ./",
    "test": "node ./test.js"
  },
```

The dependency list shows the whole pipeline. Grunt and its plugins do the orchestration, with load-grunt-config, grunt-concurrent, grunt-contrib-clean, grunt-contrib-copy, grunt-contrib-watch, grunt-replace, grunt-json-minify and grunt-jsonlint covering the build steps, and jit-grunt loading tasks on demand. Babel handles the source transform, with preset-env, preset-react, the react-jsx transform plugin, babel-plugin-transform-amd-to-es6 for the older module format, and babel-plugin-transform-react-templates for the template system. Rollup with the babel and terser plugins produces the bundles. Less compiles the theme styles, Handlebars renders the templates, and Backbone with jQuery provides the model and view layer, with TypeScript type definitions for both included. The test tooling is Jest with a jest.config.js, plus Cypress with a cypress.config.js for browser level tests. The README also points to a GRUNT.md file at the repository root for the task reference.

## Node 22, dropped IE support, and a GPL-3.0 licence

The requirements section is short and states that Node 22 or newer is required for the grunt tasks to run. The engines field in package.json agrees, with node set to >=22. The important caveat is in an important note near the top of the README: Adapt no longer supports IE8, IE9 and IE10, and users who need those browsers should use the legacy branch of the project instead. That branch is a separate line of maintenance, which tells you how the project handles browser support questions: the current master drops old browsers, and the old behaviour is preserved rather than removed. The licence is the GNU General Public License, Version 3, and the project is described as free to use, with the README stating it is open source and free. That matters for commercial training use, because GPL-3.0 is copyleft and a course or a derived tool that incorporates the framework carries obligations that a permissive licence would not. The release history shows regular maintenance, with v5.56.3 on 2026-09-30 and two April 2026 releases, and the last push to the repository was on 2026-10-13.

## Where Adapt is the wrong choice

Three boundaries stand out. The first is authoring. If you want a single product where designers build courses in a browser, Adapt is the runtime half and the authoring tool is a separate server application with its own deployment and its own community, so you are adopting two things. The second is standards support. xAPI is available but through a community plug-in rather than in the core, and the built-in tracking story is SCORM, which is a content packaging format designed for a learning management system to launch and report completion rather than for fine grained learning activity data. If your organisation has moved to a fully xAPI or LRS based stack, the gap between what the framework does natively and what your reporting needs is real work. The third is the age of the stack. Backbone, jQuery, Grunt and AMD to ES6 Babel transforms describe a codebase that predates the current mainstream of front end tooling, which is fine for a stable product but means the framework's own development velocity is tied to maintainers willing to work in that stack. The alternative worth naming is authoring HTML5 course content directly against a lighter runtime or a modern framework such as React with a content schema you own, which costs more up front and gives you no accessibility, right-to-left or SCORM plumbing that Adapt has already solved.

## Conclusion

Adopt adapt_framework if you author e-learning that has to be responsive, screen reader accessible, right-to-left capable and translated, and you want one course to run unchanged on a web server and inside a SCORM compliant LMS. Do not adopt it if you need authoring built in, because the authoring tool is a separate server based project, or if you need an old browser estate, since the framework has dropped IE8 to IE10 and points those users at a legacy branch. Verify first which plugin set you need against the 23 bundled plug-ins and the community browser, since the plugin ecosystem is where most course functionality comes from.

## FAQ

### What is the adapt_framework and what does it produce?

It is a toolkit for creating responsive, single-version HTML5 e-learning courses for delivery on a web server or a SCORM-compliant learning management system. The framework is the runtime; the separate server-based authoring tool lives in the adapt_authoring repository.

### How do I build the adapt_framework?

Node 22 or newer is required for the grunt tasks. The package scripts run node gitmodules.js on preinstall to fetch submodules, lint with eslint, and run the test suite with node ./test.js, with the grunt task reference in GRUNT.md.

### Does adapt_framework support xAPI and SCORM?

SCORM-compliant delivery is a listed feature of the framework. Experience API support is provided through the adapt-contrib-xapi plugin, so it comes from the plug-in ecosystem rather than the core.

### Which browsers does adapt_framework support?

The README states that Adapt no longer supports IE8, IE9 and IE10, and directs users who need those browsers to the legacy branch of the project. The framework targets responsive, multi-device delivery with HTML5 and CSS3, and JavaScript ES6 to ES8 with JSX support.

## Sources

- [adaptlearning/adapt_framework on GitHub](https://github.com/adaptlearning/adapt_framework)
- [License: GPL-3.0](https://github.com/adaptlearning/adapt_framework/blob/master/LICENSE)
- [Project website](https://www.adaptlearning.org/)
- [README](https://github.com/adaptlearning/adapt_framework/blob/master/README.md)
- [Releases](https://github.com/adaptlearning/adapt_framework/releases)

---

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