Skip to content

How Hem fits your toolchain

Build-time tools, editor support, and runtime dependencies in a Hem project.

Updated View as Markdown

Hem is a compiler and editor toolchain. It emits ordinary TypeScript; it does not require an implicit core runtime. Libraries you explicitly use, including Hem’s standard carriers and the optional Effect transport, remain application dependencies.

Build time

Hem parses and checks .hem source, then emits .ts or .tsx siblings. The TypeScript checker checks those modules using your project’s resolution, libraries, paths, and JSX configuration. Hem applies strict checker settings privately and adds language rules such as exhaustive matching and boolean-only conditions.

The compiler records source-to-output positions as it prints. TypeScript diagnostics are mapped back to the Hem source.

Compile Hem before running tools that consume its output. The Vite plugin orchestrates compilation and reloads changed siblings during development. Without Vite, use the CLI as a build step and import the emitted modules.

Edit time

The language server provides diagnostics, navigation, completion, and code actions over LSP. It uses the same compiler and formatter as the CLI, with unsaved editor buffers included in its project view.

Editors can work directly with Hem source. Other TypeScript tools consume emitted siblings. See editor setup for configuration and supported operations.

Run time

Your TypeScript build compiles or bundles the emitted files. The Hem compiler and language server are not needed to execute the built application.

Core constructs emit JavaScript-compatible values and control flow. Standard Option and Result operations are explicit imports from @hem-lang/std; these are runtime library code, not compiler-only features.

With the Effect extension enabled, emitted code imports the configured transport. Effect supplies lazy execution, typed failures, services, concurrency, and resource cleanup. The preview targets the native effect package at effect@4.0.0; emitted code uses only its public Effect 4 API. See Effect setup for the support contract.

Other libraries retain their normal runtime and platform requirements.

Generated-file ownership

Each successful build records source and sibling pairs in .hem/generated-files.json. Configure formatters, linters, and coverage tools to exclude those exact siblings, not all TypeScript files.

Do not edit generated siblings. Change the Hem source and rebuild. See generated-file integration.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close