Zero Build
Works directly in the browser via CDN or ES modules. Vite is optional, not required.
Batteries-included TypeScript framework with signals, Web Components, routing, SSR, and a dependency-free server — zero mandatory build step.
bQuery.js is a batteries-included TypeScript framework for the modern web — not just a DOM utility library. It bundles fine-grained reactivity, Web Components, routing, state management, forms, motion, accessibility, drag-and-drop, runtime-agnostic SSR, and a dependency-free backend behind a familiar jQuery-inspired API. Every public module ships its own entry point so bundlers can keep your build small.
Read more in the Introduction or jump straight to Getting Started.
| You want… | bQuery gives you |
|---|---|
| A jQuery-style DOM API on modern reactive primitives | $(selector) returns a typed BQueryElement; signals and effects participate in chainable code without a virtual DOM. |
| Zero build for small projects | Drop a <script type="module"> from a CDN — no Vite, no bundler, no transpiler required. |
| A real framework when projects grow | 23 tree-shakeable modules covering routing, state, forms, SSR, server, motion, a11y, i18n, devtools, testing, plugins. |
| One stack for client and server | @bquery/bquery/ssr + @bquery/bquery/server render and serve from the same runtime (Node, Bun, Deno, or edge). |
| Security defaults that don't fight you | HTML-writing APIs sanitize untrusted input; Trusted Types and CSP-friendly patterns are first-class. |
| Predictable bundle size | Zero runtime dependencies; every public surface is tree-shakeable; a /full bundle is reserved for CDN consumers. |
@bquery/bquery
├── core ─────────── selectors, traversal, events, utilities
├── reactive ─────── signals, computed, watch, async data, HTTP, realtime
├── concurrency ──── worker tasks, RPC, pools, reactive metrics
├── component ────── typed Web Components, slots, refs, lifecycle
├── motion ───────── transitions, springs, tweens, timelines
├── security ─────── sanitization, Trusted Types
├── platform ─────── storage, cache, cookies, page meta
├── router ───────── SPA routing, guards, navigation results
├── store ────────── signal-based state with persistence
├── view ─────────── declarative bq-* directives
├── forms ────────── reactive forms, validators, schema
├── i18n ─────────── locale negotiation, Intl, pluralization
├── a11y ─────────── focus, live regions, audits, prefs
├── dnd ──────────── draggable, droppable, sortable
├── media ────────── viewport, network, clipboard, prefs
├── plugin ───────── hooks, DI, namespaced directives
├── devtools ─────── timeline, signal/store diffs, perf
├── testing ──────── screen, userEvent, mocks
├── storybook ────── safe story helpers
├── ssr ──────────── runtime-agnostic rendering & streaming
└── server ───────── dependency-free routing + WebSocketsSee the full Architecture overview and the Modules matrix below.
npm install @bquery/bquerybun add @bquery/bquerypnpm add @bquery/bqueryyarn add @bquery/bquery<script type="module">
import { $, signal, effect } from 'https://unpkg.com/@bquery/bquery@1/dist/full.es.mjs';
</script>Supported runtimes: Node.js ≥ 24, Bun ≥ 1.3.13, modern Chromium / Firefox / Safari / Edge. See Supported Runtimes.
import { $, signal, effect } from '@bquery/bquery';
const count = signal(0);
effect(() => {
$('#counter').text(`Count: ${count.value}`);
});
$('#counter').on('click', () => {
count.value++;
});import { createServer } from '@bquery/bquery/server';
const app = createServer();
app.get('/', async (ctx) => {
return ctx.renderResponse(`<h1 bq-text="message"></h1>`, { message: 'Hello from bQuery SSR' });
});
await app.listen({ port: 3000 });Walk through both end-to-end in the Tutorial and the Full-Stack Workflows.
| I want to… | Start here |
|---|---|
| Reactively update the DOM without a build | Core + Reactive |
| Build a single-page app | Router, Store, View |
| Build Web Components | Component + Storybook |
| Build a full-stack app with SSR | SSR + Server |
| Handle forms, i18n, and a11y | Forms + i18n + A11y |
| Animate things | Motion |
| Move work off the main thread | Concurrency |
| Migrate from jQuery | Migration Guide |
The 1.14.0 release graduates media, plugin, devtools, and testing into batteries-included tiers, with additive expansions across router, view, a11y, i18n, dnd, storybook, concurrency, ssr, and server.
Read the structured release notes at Release Notes — 1.14.0 or the full CHANGELOG.