Installation
- npm
- yarn
- pnpm
Server requirements
WASM requiresSharedArrayBuffer support, which needs these HTTP headers:
vite.config.ts
Basic usage
Loader
The loader pattern enables dynamic decision loading from remote sources. Combined withZenDecisionContent for pre-compilation, this provides optimal performance for multi-decision applications.
HTTP handler
When decisions make HTTP requests to external APIs, usehttpHandler to proxy requests through your backend. This is necessary when the frontend cannot directly access services behind a firewall or private network:
Error handling
Using try-catch:safeEvaluate:
Tracing
Enable tracing to inspect decision execution:Expression utilities
Evaluate ZEN expressions outside of a decision context:Best practices
UseZenDecisionContent for caching. Pre-compiling decisions avoids repeated parsing overhead. Cache compiled content in a Map keyed by decision name.
Initialize the engine once. Create a single ZenEngine instance at application startup and reuse it for all evaluations.
Implement a loader for dynamic decisions. The loader pattern centralizes decision loading logic and enables caching at the source.
Call dispose() on cleanup. Release engine resources when the application terminates to prevent memory leaks.