Get the latest tech news
Show HN: Q.js β Smaller than React/Vue, yet more powerful (40KB gzipped)
All-In-One Front-End Web Framework from Qbix, alternative to jQuery, Angular, Vue, Ember etc. - Qbix/Q.js
Yet it packs components, events, routing, caching, batching, i18n, animations, IndexedDB, service workers, and more β all in core. Q.js is part of the larger Qbix platform, which powers real social apps (with accounts, feeds, groups, payments, etc.). Q.IndexedDB for easy interaction with the built-in IndexedDB Q.ServiceWorker to manage service workers in a standard wayRequests Q.request(), Q.handle(), Q.loadUrl(), Q.addScript(), Q.addStylesheet() Flow Q.chain(), Q.getter(), Q.batcher(), Q.promisify(), Q.debounce() Helpers Q.find(), Q.activate(), Q.cookie(), Q.handle() Feature π Q.js β‘ (40KB) React ποΈ Vue π¨ Angular ποΈ Svelte π₯ Bundle Size π¦~40KB gzipped (core + tools + events + routing) 42KB + ReactDOM (120KB)~60KB runtime140KB+~50KB compiler/runtime Build Step π οΈ None (drop-in, works with.html+.js) RequiredRequiredRequiredRequired Rendering Approach π¨ Direct DOM Updates (No Diffing, No Virtual DOM) Virtual DOM diffingVirtual DOM diffingChange detection via zonesPrecompiled updates (no VDOM, still re-renders) Performance β‘ Ultra-Fast (Only Updates Whatβs Needed, No Extra Work) Good, but reconciliation overheadGood, but reconciliation overheadHeavy watchers/zonesFast, but dependencies rerender Memory Usage π§ Low (No Virtual DOM, Minimal Garbage Collection) Higher (VDOM objects + GC)Higher (VDOM overhead)Higher (framework runtime)Lower than React, some overhead State Management π¦ Q.Streams + Events (lightweight, no reconciliation) React state / Redux / ContextVuex / PiniaServicesReactive stores SSR & Hydration π Pre-renders HTML + activates Tools dynamically Hydrates VDOM (slower)Hydrates VDOMHydrates Angular componentsNeeds hydration after precompile Component Model π§© Q.Tools (behaviors on any DOM element) JSX + HooksDirectives + templatesComponents + decoratorsCompiled components Interactivity & Events π Direct event binding (auto-cleans on removal) Event handlers in JSX (hook dependencies)Event handlers in templatesAngular event bindingsReactive bindings Batch Updates π Efficient (requestAnimationFrame +.rendering()) setState batchingNextTick batchingZone-based batchingDependency-based, no explicit batching Lazy Loading π€ Built-in (images, tools, components auto-lazyload) Needs 3rd party libsNeeds 3rd party libsBuilt-in, but heavyManual setup Internationalization π Built-in ( Q.Text) 3rd party3rd partyi18n module3rd party Incremental Adoption π Yes (drop-in, enhance existing HTML without rewrite) NoNoNoNo SEO & Progressive Enhancement π Works with static HTML (enhances dynamically) Needs JS hydrationNeeds JS hydrationNeeds JS hydrationNeeds JS for interactivity Ecosystem Dependence π All-in-one (routing, templates, events, batching, caching built-in) Needs Router, Redux, i18n, etc.Needs Vuex, Router, i18nHuge framework but still many extra libsNeeds Kit/Sapper + libs Learning Curve π Simple (declarative, minimal magic) Medium-high (hooks, context, JSX)Medium (directives, reactivity caveats)High (decorators, DI, RxJS)Medium Best For β High-performance apps, real-time dashboards, low-latency UI, social platforms Full-scale apps, large component hierarchiesSmall-to-medium apps, good DXEnterprise-scale appsSmall-to-medium apps, hobby projectsYou can dynamically create elements in a React-like way, such as this:
Or read this on Hacker News