LMS compatibility¶
LessonKit packages courses through LXPack (@lessonkit/lxpack). Export formats are validated by the monorepo e2e and conformance harnesses—not by exhaustive testing on every commercial LMS.
Supported export formats¶
Format |
CLI |
Validation in repo |
|---|---|---|
SCORM 1.2 |
|
Playwright launch + |
SCORM 2004 |
|
Playwright |
xAPI |
|
Package build + conformance |
cmi5 |
|
Launch spec + conformance |
Standalone SPA |
|
Vite dist + browser smoke |
See Export parity for the full test matrix.
LMS runtime requirements¶
Requirement |
SCORM / xAPI / cmi5 |
Standalone |
|---|---|---|
|
Required for score/completion forwarding |
Use |
|
Required in production when bridge is |
Omit |
Parent |
Provided by LXPack LMS shell |
N/A |
Modern browser |
ES202+ (Vite build) |
Same |
Node.js for packaging |
18+ (authoring machine only) |
Same |
If the bridge is missing, the course UI still runs but LMS completion may not update—watch onLxpackBridgeMiss. See LXPack bridge.
Typical LMS behavior¶
LMS category |
SCORM 1.2 |
Notes |
|---|---|---|
Moodle (mod_scorm) |
Widely used |
Single-SPA LessonKit export = one SCO; navigation inside iframe |
Canvas |
Supported |
Upload ZIP; confirm completion policy matches your assessments |
Cornerstone / SAP / Workday |
Varies |
Confirm SCORM 1.2 vs 2004 with your admin; test in staging |
Internal custom LMS |
Test required |
Verify |
Not a certification
This matrix describes export format support and repo test coverage. It is not a guarantee for every LMS version or configuration. Always run a staging import before production rollout.
Known constraints¶
layout: "single-spa"required forlessonkit package(1.x). Multi-SCOper-lesson-spaneeds programmatic@lessonkit/lxpackAPIs.One Vite build per package—multi-lesson UX is in-app React navigation.
Production telemetry requires backend proxies or explicit disable—packaged courses run in production mode.
xAPI/cmi5 packaging requires HTTPS
activityIriinlessonkit.json.
Reporting issues¶
If a package validates in CI but fails in a specific LMS, open a GitHub issue with LMS name/version, --target, browser console output, and whether lxpackBridge is present in the parent frame.