JAX Debuts Experimental 'Hijax' Custom Type System
13 Jul 2026
JAX documentation has quietly introduced a new experimental feature called hijax (also referred to as "hi types"), giving developers a way to define custom data types that go beyond what's currently possible with pytrees, JAX's existing structure for handling nested data.
What's new
According to the documentation, hijax types let developers create new JAX types by subclassing HiType. Setting one up involves several steps:
- Registering a Python class to carry values of the new type
- Writing hijax primitives whose input and output types reference the new type
- Implementing
lo_tyon the subclass, which specifies which underlying "lojax" (array) types make up the hijax type - Implementing
lower_valandraise_valto convert values to and from those underlying array types - Ensuring the type is hashable and supports equality comparison
The key architectural difference from pytrees: while pytree values can be freely constructed and taken apart by any code, hijax type values can only be produced and consumed by hijax primitives whose declared types explicitly reference that type. This is a more restrictive, controlled model compared to the flexibility pytrees currently offer.
Hijax is explicitly labeled experimental, and the documentation instructs developers to import it from jax.experimental.hijax. The API is expected to change as it matures.
What's missing from the picture
The report notes several open questions the documentation doesn't address: there's no release date or version number tied to hijax's introduction, no performance benchmarks comparing it to pytrees, no real-world use cases or motivating problems described, no stated timeline for hijax exiting experimental status, and no details on backward compatibility or migration paths from existing pytree-based code.
Why founders should care
For startups building products or infrastructure on top of JAX, hijax is worth watching but not yet worth betting on. Given its experimental status, it's plausible that the API will see breaking changes before stabilizing, which means production dependencies built today could require rework later. Teams that need tighter type safety for specialized numerical or ML data types may find hijax's more structured, primitive-gated approach appealing, but the added implementation complexity relative to pytrees—values can't be freely constructed outside declared primitives—means the tradeoff should be evaluated carefully rather than adopted by default.
There's also a differentiation angle: teams that experiment early with hijax could gain a technical edge in building more explicit, type-safe APIs, and may be better positioned to adapt quickly as JAX's type system evolves. But that early-mover advantage comes with real maintenance risk if the API shifts significantly before hijax stabilizes.
Bottom line
Hijax represents a meaningful expansion of JAX's type system, moving beyond the flexibility-first model of pytrees toward something more controlled and primitive-driven. For now, though, its experimental label, absence of stability guarantees, and lack of documented use cases suggest founders should treat it as something to monitor—and perhaps prototype with—rather than something to build production systems on just yet.