Add & remove frameworks
Start with one framework and add another whenever you need it — AbsoluteJS handles the dependencies, config, and a working starter page for you.
#Adding a framework
absolute add <framework> installs the version-aligned dependencies with bun add, inserts the framework's directory into absolute.config.ts, and scaffolds a minimal starter page — wiring its route, navigation, and stylesheet in exactly like generate page. Pass --no-install to configure and scaffold without touching dependencies. It's idempotent: adding a framework that's already configured just prints a note.
# Add a framework: installs deps, updates config, scaffolds a starter page
absolute add svelte
# Configure + scaffold only, skip the dependency install
absolute add vue --no-install$ absolute add svelteInstalling Svelte dependencies… ✓ Added Svelte to your project Installed 2 package(s). Created src/frontend/svelte/pages/SvelteExample.svelte src/frontend/styles/indexes/svelte-example.css src/frontend/shared/navData.ts Updated absolute.config.ts src/backend/plugins/pagesPlugin.ts Route /svelte-example
#Adding integrations
add also installs and wires the official Elysia plugins. absolute add openapi and absolute add telemetry are config-driven — they flip the field in absolute.config.ts that the runtime reads to mount them (and install the package when one is needed) — while cors, jwt, and cron install the package and print the exact .use(...) to add to your server. The same plugins are available as one-click toggles in the Integrations panel of absolute config.
# Install + wire an official Elysia plugin
absolute add openapi # config-driven: enables it in absolute.config.ts
absolute add telemetry # installs @elysiajs/opentelemetry + enables it
absolute add cors # installs @elysiajs/cors, prints the .use(...) to add
absolute add jwt
absolute add cron$ absolute add cors✓ Installed @elysiajs/cors. Add to your server: import { cors } from '@elysiajs/cors'; .use(cors()) Next wire it in, then run 'absolute dev'
#Scaffolding auth features
absolute add auth:<feature> scaffolds the starter code wiring for an @absolutejs/auth feature — a typed <feature>Config.ts with the required store (seeded with an in-memory factory) and hook stubs (TODOs) plus sensible defaults — and prints the spread to add to your auth() call. Targets include mfa, credentials, sso, passwordless, webauthn, organizations, and more. The Auth panel in absolute config exposes the same scaffolds as a button per unconfigured feature.
# Scaffold the code wiring for an @absolutejs/auth feature
absolute add auth:mfa
absolute add auth:credentials
absolute add auth:sso
# also: passwordless, webauthn, organizations, roles, scim,
# portal, lockout, compliance, sessions, audit, webhooks$ absolute add auth:mfa✓ Scaffolded src/mfaConfig.ts. Wire it in: import { mfaConfig } from './mfaConfig'; // add to your auth() call: mfa: mfaConfig Next fill the TODO stubs, run 'absolute prettier --write', then 'absolute dev'
#Removing a framework
absolute remove <framework> drops the directory entry from absolute.config.ts but never deletes your source — that's too easy to regret. It tells you which routing files still call the framework's page handler so you can clean them up, and --prune additionally uninstalls the framework's dependencies.
# Remove a framework from the config (keeps your source files)
absolute remove svelte
# Also uninstall the framework's dependencies
absolute remove svelte --prune$ absolute remove svelte✓ Removed svelteDirectory from absolute.config.ts Kept src/frontend/svelte — delete its source manually if no longer needed. Still references src/backend/plugins/pagesPlugin.ts (calls handleSveltePageRequest) Run `absolute remove svelte --prune` to also uninstall: svelte, svelte-check
#Self-hosting htmx
htmx's own guidance is to download a pinned copy into your project rather than rely on a CDN, so AbsoluteJS vendors a known-good htmx build and absolute add htmx places it for you offline. The absolute htmx command reports the version you have installed, and absolute htmx <version> (or latest) fetches any release from jsDelivr and swaps it in — so you upgrade with one command instead of hand-managing the file.
# Report the self-hosted htmx version (and the CLI's vendored default)
absolute htmx
# Install / upgrade the pinned copy from jsDelivr
absolute htmx latest
absolute htmx 2.0.6$ absolute htmxinstalled 2.0.6 vendored 2.0.6 Upgrade with `absolute htmx <version>` (e.g. `absolute htmx latest`)