Skip to content

Modern TypeScript libraries for high-quality web apps

Lightweight · Type-safe · Framework agnostic · Tree-shakeable

JOC by JayOnCode logo
Why JOC

Build once. Use everywhere.

JOC is a collection of modern, modular, headless TypeScript libraries that solve common frontend engineering problems — without locking you into a framework.

Ecosystem

JOC packages

Independently installable libraries under @jayoncode/*. Start with a live package, or explore what is coming next.

3Live on npm
Why choose JOC

Problems first. Packages second.

ProblemJOC solution
Browser lifecycle is inconsistent across APIs and frameworksBrowser Lifecycle
Form logic becomes complex as validation, drafts, and wizards growForm Intelligent
Object comparison and patching is verbose and error-proneObject Diff
Design philosophy

Learn once. Reuse everywhere.

Every JOC package follows the same architecture, API philosophy, documentation structure, and development standards — so the second package feels familiar.

Write less

Shared patterns instead of one-off utilities per app.

Ship less

Install only the @jayoncode/* packages you need.

Learn once

Same docs journey and API philosophy across the ecosystem.

Reuse everywhere

Headless cores that adapt to your UI stack.

Architecture

Ecosystem layers

Packages stay independent at the TypeScript core, then plug into any application layer.

Package comparison

Status at a glance

PackagePurposeStatus
Browser LifecycleBrowser lifecycleReleased
Form IntelligentHeadless formsIn development
Object DiffObject comparisonReleased
Quick start

Install a package. Start building.

Pick any live package — the install path is the same across the ecosystem.

browser-lifecycleLive
pnpm add @jayoncode/browser-lifecycle

import { createBrowserLifecycle } from "@jayoncode/browser-lifecycle";

const lifecycle = createBrowserLifecycle({ autoStart: true });
form-intelligentLive
pnpm add @jayoncode/form-intelligent

import { createForm } from "@jayoncode/form-intelligent";

const form = createForm({
  initialValues: { email: "" },
});
Package showcase

What each package covers

Browser Lifecycle

  • Visibility
  • Focus
  • Idle
  • Cross-tab
  • Lifecycle
Open docs

Form Intelligent

  • Validation
  • Workflow
  • Wizard
  • Autosave
  • Offline
Open docs

Object Diff

  • Diff
  • Patch
  • Serialize
  • Snapshots
Open docs
Interactive playground

Try packages in the browser

Explore live demos for Browser Lifecycle, Form Intelligent, Object Diff, and more — without setting up a local project.

Packages

Available now

Three live packages on npm today. More libraries are on the roadmap.

3Live on npm
Live

Browser Lifecycle

@jayoncode/browser-lifecycle

Observe browser session lifecycle with a unified typed API.

View docs
Live

Form Intelligent

@jayoncode/form-intelligent

Headless form workflow engine — validation, submission, and orchestration.

View docs
Live

Object Diff

@jayoncode/object-diff

Fast deep comparison, change records, and JSON Patch generation.

View docs

JOC is a JayOnCode monorepo of @jayoncode/* packages. Docs sync from source via TypeDoc and sync scripts.