The word Havran over a dark gradient with a raven, evoking a Slovak mountain peak
← Back to blog

How Havran Began — The purpose, the vision, the name and the origin.

Why a new language makes sense in 2026 — Havran's purpose and vision: 100% interoperable with TypeScript and JavaScript, adoptable file by file, and compiled to the smallest, fastest output — plus the story behind its name and the raven.

In 2026, JavaScript and TypeScript still run most of the web — and most teams still spend part of every day working around the same old rough edges. The need hasn't gone away; it has just become normal to live with. Havran exists to change that: a clean, modern, type-safe language with a single clear purpose — give developers a better surface to write on, without giving up a single line of the ecosystem they already depend on.

This post leads with that purpose and the vision behind it — why a new language makes sense in 2026 and where Havran is headed — and only then tells the smaller story of where the name comes from and who builds it.

Why Havran exists — the need in 2026

TypeScript made JavaScript usable for large systems, but it could only paint over the language it inherited. The sharp edges are still there underneath: truthy and falsy coercion, == versus === , NaN that isn't equal to itself, and a nullability story that was bolted on years after the fact. You learn to step around them, but you never stop paying attention to them — and in 2026 that constant low-level vigilance is still part of the job.

Havran's purpose is to remove that tax. The goal is not to escape the ecosystem, but to fix the surface we write every day while keeping everything we already depend on: a modern, type-safe language that reads like it was designed on purpose, not assembled by accident.

The vision

Havran is built around three commitments.

  • 100% mutual interoperability with TypeScript and JavaScript. Havran reads all of your

existing TypeScript and JavaScript — including third-party libraries — and the code Havran emits is ordinary TypeScript that your existing code can call without ceremony. No foreign-function boundary, no wrappers.

  • File-by-file migration. You don't rewrite a project to adopt Havran. You rename one file,

convert it, and keep going. A codebase can be part Havran and part TypeScript indefinitely, so teams can move at their own pace.

  • The smallest possible bundle with the maximal runtime performance. Havran uses tiered

lowering and avoids runtime classes and helper imports unless a feature genuinely needs them. The result is lean output that ships bytes, not boilerplate.

A small example shows the idea — a data class and a null-safe function, with the TypeScript Havran generates:

Havran
data class User(val name: String, val email: String?)

fun greet(u: User): String {
  val inbox = u.email ?: "no email on file"
  return "Hi ${u.name} — ${inbox}"
}
TypeScript
interface User {
  readonly name: string
  readonly email: string | undefined
}

function greet(u: User): string {
  const inbox = u.email ?? "no email on file"
  return `Hi ${u.name} — ${inbox}`
}

No runtime class, no helper imports — just an interface and a plain function.

What comes next

The language is the foundation, not the finish line. The same philosophy — clean surface, tiny output, full interoperability — extends to the rest of the stack:

  • Better HTML with Havran Mark, a markup language that compiles to plain HTML.
  • Better CSS with Havran Style, a styling language in the spirit of Sass that compiles to ordinary

CSS.

  • The Havran UI framework, built on top of all three, for writing interfaces with the same

clarity and lean output.

Each piece is designed to stand on its own and to interoperate with what you already use, so you can adopt as much or as little as you want.

The name: Havran, the raven

With the purpose and the vision set, the name. Havran is named after the Havran peak in Slovakia, one of the highest summits of the Belianske Tatras. The word havran is Slovak for raven — and that double meaning is the whole point of the name.

Ravens are widely regarded as among the most intelligent animals on the planet. They solve multi-step puzzles, use and shape tools, plan for the future, and remember faces for years. They are precise, resourceful, and economical — they do a lot with very little.

That is exactly the character we want the language to have. Havran should be clever where it matters and quiet everywhere else: precise about types, resourceful about reusing the entire existing ecosystem, and economical about what it emits. A raven doesn't carry more than it needs, and neither should the JavaScript a compiler produces.

How to say it

Havran is pronounced “HAH-vran” — IPA /ˈɦavran/. The stress is on the first syllable, the a sounds like the a in father, and the Slovak h is a soft, voiced sound from the throat rather than a hard English h. Two syllables, no silent letters.

Who builds Havran

Havran was originally created by Ing. Benjamín Bekeš, MBA, a senior software engineer with nearly two decades of building software across the stack — you can see the work and portfolio at the link. The project grew out of years of writing TypeScript every day and wishing the language underneath it were cleaner, smaller, and more honest about its types.

Keep Havran flying

Havran is built in the open and given away for free. If the project is useful to you — or you simply want to see where it goes — a donation keeps it running: it funds the time to maintain the compiler, write the documentation, and build Havran Mark, HavranStyle, and the UI framework. If you'd like to help, you can become a sponsor. Thank you for keeping the raven in the air.

← Back to blog