-
Notifications
You must be signed in to change notification settings - Fork 0
Core Features
Avinash-1994 edited this page Jan 5, 2026
·
1 revision
This feature allows the development environment to stay in sync with the configuration without a "hard" process restart.
-
Origin Validation: The WebSocket server strictly validates the
Originheader to prevent Cross-Site WebSocket Hijacking (CSWSH). -
Session Handshake: On connection, the server generates a cryptographically secure
sessionTokenthat must be included in everyconfig:updaterequest. -
Protected Paths: Critical settings (e.g.,
server.host,plugins,root) are locked in theLiveConfigManagerand cannot be modified via the live API to prevent architectural subversion. - Rate Limiting: Throttles updates to one per 500ms to prevent browser-side flooding.
Urja implements a tiered support system for modern frontend frameworks:
- Tier 1 (Stable): React, Vue, Svelte, Solid, Lit. Includes full HMR and CSS-in-JS support.
- Tier 2 (Beta): Qwik, Astro, Angular.
-
Metaframeworks: Specialized handlers for Next.js, Nuxt, and Remix via the
ssrcommand.
The engine uses a tiered feedback loop to fix broken builds:
-
Parsing: Uses
ErrorParserto extract file, line, and error type from build failures. -
Lookup: Checks the
FixStore(local SQLite/JSON DB) for previously recorded successful fixes for that error signature. -
Generation: If no known fix exists, the
FixGeneratoruses heuristics and LLM suggestions to propose a code patch. -
Application: The
FixApplierattempts to modify the source code, followed by an immediate build re-run to verify the fix.
Urja is built for the "Multi-Core Era":
-
Task Batching: In Stage 7, modules are grouped based on the
ExecutionPlan. - Worker Isolation: Each transformation runs in a clean context to prevent state leakage between frameworks.
-
Deterministic Hashing: Every artifact filename is exactly
canonicalHash(content).substring(0, 16), ensuring perfect browser caching.
Urja provides a lightweight implementation of Module Federation:
-
Host/Remote Separation: Defined via
urja.config.ts. -
Dynamic Remotes: Allows loading remote modules via internal
__urja_requirebridges without requiring a globalwebpackruntime.