Skip to content

Roadmap

LTIkit’s goal is a complete, correct LTI 1.3 (LTI Advantage) toolkit that supports every major LMS integration feature β€” while staying runtime-, storage-, and framework-agnostic (just jose + fetch, bring your own database).

This page is the honest picture: what’s shipped, what’s partial, and where it’s headed. For the per-feature status grid, see Capabilities.

Legend: βœ… shipped Β· β—‘ partial Β· πŸ”œ next Β· πŸ”² future Β· 🚫 out of scope

flowchart LR
  A["βœ… 1.0-rc<br/>core + Advantage services<br/>+ registration + cookieless"]
  B["🎯 1.0 GA<br/>parity gaps<br/>+ certification"]
  C["πŸ”­ v1.x<br/>breadth &amp; DX"]
  D["🌍 v2.x<br/>advanced services"]
  A --> B --> C --> D

  classDef done fill:#16a34a,color:#fff,stroke:#16a34a;
  classDef now fill:#4f46e5,color:#fff,stroke:#4f46e5;
  classDef next fill:none,stroke-dasharray:4 3;
  class A done;
  class B now;
  class C,D next;

The full launch loop plus the LTI Advantage services, verified live against Canvas and MoodleCloud.

  • SSO / launch β€” OIDC third-party login + launch verification (RS256 signature, single-use nonce replay defense, iss/aud/exp/nonce/azp/deployment_id validation).
  • JWKS β€” serve the tool’s public keyset for the platform to verify signed messages.
  • Deep Linking β—‘ β€” sign the content-selection response + auto-submit form; lineItem on items (graded content). Currently ltiResourceLink items only.
  • Assignment & Grade Services (AGS) β—‘ β€” line items (list / create / get), score publish (gradingProgress: FullyGraded, cross-LMS gotchas baked in), results. No line-item update/delete yet.
  • Names & Role Provisioning (NRPS) β—‘ β€” course roster with Link rel=next pagination, role / limit filters. Context-level membership.
  • Dynamic Registration βœ… β€” automatic tool onboarding (OpenID Connect Dynamic Client Registration); the LMS auto-configures and the platform is persisted with no manual setup.
  • LTI Platform Storage (cookieless) βœ… β€” client-side postMessage state so a tool stays logged in inside the LMS iframe when third-party cookies are blocked (Safari ITP, Firefox TCP).
  • Identity seam β€” ltiIdentity() + role helpers; you own session creation (auth-agnostic).
  • Adapters β€” @ltikit/adapter-memory, @ltikit/adapter-redis (nonce), @ltikit/adapter-supabase (platform + nonce), @ltikit/adapter-prisma (platform + nonce; any Prisma DB). Bindings β€” @ltikit/next, @ltikit/hono.

Close the gaps real cross-LMS use and certification need, then certify.

  • Fuller launch surface β€” typed custom, launch_presentation, and tool_platform on LaunchResult (today reachable only via the raw claims bag).
  • AGS β€” line item update + delete; the score submission object.
  • Deep Linking β€” link, html, file, and image content types; iframe / window presentation.
  • NRPS β€” resource-link-level membership (rlid) and differences.
  • 1EdTech LTI Advantage certification β€” the credibility milestone; tags 1.0 GA on pass.
  • Submission Review (LtiSubmissionReviewRequest) β€” let faculty review a learner’s submission from the LMS gradebook (e.g. Canvas SpeedGrader).
  • TokenCache adapter β€” optional shared cache for AGS/NRPS access tokens; speeds up bulk grade sync / roster pulls (off by default).
  • More postMessage helpers β€” lti.get_page_content, lti.scrollToTop, lti.showAlert, alongside the shipped frameResize + Platform Storage.
  • More bindings β€” Express, SvelteKit, Remix (edge / Cloudflare Workers / Deno / Bun already work through the web-standard core).
  • More adapters β€” Drizzle, DynamoDB, Mongo; a Redis PlatformStore. (Prisma βœ… shipped.)
  • Course Groups service β€” group sets and group memberships.
  • Proctoring & Assessment β€” Assessment Control Service (ACS).
  • Assets service / Asset Processor β€” submission asset handling.
  • Caliper Analytics / xAPI β€” learning-event emission.

Status reflects the current release line. Something you need sitting in a later milestone? Open an issue β€” real demand reorders the roadmap.