
Research
/Security News
737 Chrome VPN Extensions Linked to Brand Impersonation and Browser Traffic Redirection
The campaign amassed more than 75,000 installs by targeting Russian-speaking users seeking access to blocked services.
@absolutejs/absolute
Advanced tools
A fullstack meta-framework for building web applications with TypeScript
Full‑stack, type‑safe batteries‑included platform that lets you server‑side render any modern front‑end—React, Svelte, plain HTML, HTMX (Vue & Angular coming)—with a single Bun‑powered build step.
build() once—get a manifest mapping every page’s client and server assets, ready to wire into routes.absolute-auth, networkingPlugin.| Tool | Version | Purpose |
|---|---|---|
| Bun | ≥ 1.2 | Runtime, bundler, and TypeScript transpiler |
| Elysia | latest | Web server & middleware platform |
bun add @absolutejs/absolute
// example/server.ts
import { staticPlugin } from '@elysiajs/static';
import { Elysia } from 'elysia';
import { file } from 'bun';
import { build } from 'absolutejs/core/build';
import {
handleHTMLPageRequest,
handleSveltePageRequest
} from 'absolutejs/core/pageHandlers';
import { handleReactPageRequest } from 'absolutejs/react';
import { ReactExample } from './react/pages/ReactExample';
import SvelteExample from './svelte/pages/SvelteExample.svelte';
import { networkingPlugin } from 'absolutejs';
const manifest = await build({
assetsDirectory: 'example/assets',
buildDirectory: 'example/build',
htmlDirectory: 'example/html',
htmxDirectory: 'example/htmx',
reactDirectory: 'example/react',
svelteDirectory: 'example/svelte'
});
if (!manifest) throw new Error('Manifest generation failed');
let counter = 0;
export const server = new Elysia()
.use(staticPlugin({ assets: './example/build', prefix: '' }))
// HTML
.get('/', () =>
handleHTMLPageRequest('./example/build/html/pages/HTMLExample.html')
)
// React
.get('/react', () =>
handleReactPageRequest(ReactExample, manifest['ReactExampleIndex'], {
test: 123
})
)
// Svelte
.get('/svelte', () =>
handleSveltePageRequest(SvelteExample, manifest, { test: 456 })
)
// HTMX demo
.get('/htmx', () => file('./example/build/htmx/HtmxHome.html'))
.get('/htmx/increment', () => new Response(String(++counter)))
.use(networkingPlugin)
.on('error', (error) => {
const { request } = error;
console.error(
`Server error on ${request.method} ${request.url}: ${error.message}`
);
});
build() scans your project, bundles each framework, and returns a manifest that has the server, and client assets required to serve each route.handleReactPageRequest, handleSveltePageRequest, …) stream HTML and inject scripts/assets based on that manifest./build.Build production assets and the server bundle while constructing the image, then launch that prepared output without writing to it at runtime:
absolute prepare src/server.ts --outdir build
absolute start src/server.ts --outdir build --prebuilt
If image optimization is enabled in a read-only container, configure its
runtime cache on a bounded writable filesystem such as a tmpfs:
export default defineConfig({
buildDirectory: 'build',
images: { cacheDirectory: '/tmp/absolutejs-image-cache' }
});
Absolute JS piggybacks on the Elysia plugin API. Any Elysia plugin works out of the box; Absolute adds helpers for:
| Plugin | Description |
|---|---|
absolute-auth | Full OAuth2 flow configured with 66 providers and allows full customizability with event handlers |
networkingPlugin | Starts your Elysia server with HOST/PORT defaults from environment variables |
This contract is written for application authors and coding agents. It avoids the runaway TypeScript instantiation cost that can occur when one inferred Elysia application is repeatedly extended and re-aliased.
new Elysia(...).adminApp by extending publicApp, for example..use([auth, metrics]) over a long sequence of .use()
calls. absolute/elysia-composition-boundaries enforces this and safely
auto-fixes comment-free chains.elysia and @sinclair/typebox on one physical installed identity
across the workspace. Run absolute doctor; absolute doctor --fix aligns
root overrides and rebuilds Bun's dependency graph when peer contexts drift.After a dependency change, measure a cold typecheck once. Warm incremental checks can hide an unhealthy graph:
/usr/bin/time -v bun run tsc --noEmit --incremental false
Everything funnels through a single build() call:
await build({
reactDirectory: 'src/react',
svelteDirectory: 'src/svelte',
htmlDirectory: 'src/html',
htmxDirectory: 'src/htmx',
assetsDirectory: 'public/assets'
});
No separate config files or environment variables—just explicit arguments with sensible defaults.
absolute workspace dev keeps the TUI focused on service status and live service output. Full logs are also written to .absolutejs/workspace/logs/, including all.log and one file per service, so long output can be copied or searched outside the TUI:
tail -n 200 .absolutejs/workspace/logs/all.log
Pull requests and issues are welcome! Whether it’s a new plugin, framework handler, or docs improvement:
bun install && bun test.Business Source License 1.1 (BSL-1.1) – see LICENSE for details.
FAQs
A fullstack meta-framework for building web applications with TypeScript
The npm package @absolutejs/absolute receives a total of 6,747 weekly downloads. As such, @absolutejs/absolute popularity was classified as popular.
We found that @absolutejs/absolute demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
The campaign amassed more than 75,000 installs by targeting Russian-speaking users seeking access to blocked services.

Company News
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.

Security News
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.