Skip to content

temporal global missing by default on EL8 build of Node.js v26.4.0 despite v8_enable_temporal_support=1 (requires --harmony-temporal) #1945

Description

@genio

Describe your bug

On Node.js v26.4.0 installed via the NodeSource RPM repo on AlmaLinux 8, the Temporal global is not defined by default, even though Node 26 is documented to ship Temporal unflagged:

$ node --version
v26.4.0
$ node -e "console.log(typeof Temporal)"
undefined
$ node -e "console.log(Temporal.Now.instant())"
ReferenceError: Temporal is not defined

However, the binary reports Temporal support as compiled in:

$ node -e "console.log(process.config.variables.v8_enable_temporal_support)"
1

And Temporal does work if the legacy flag is passed explicitly:

$ node --harmony-temporal -e "console.log(typeof Temporal)"
object

This suggests Temporal was compiled into this build (v8_enable_temporal_support: 1), but whatever runtime switch is supposed to expose it unflagged by default (per the v26.0.0 release notes) isn't taking effect on this build — it still behaves like a pre-26 experimental build gated behind --harmony-temporal.

Distribution information

  • OS: AlmaLinux 8
  • Node.js version: v26.4.0 (installed from NodeSource RPM repo, node_26.x)
  • Architecture: (please confirm — x86_64 or aarch64)

Diagnostics already collected

$ node --version
v26.4.0

$ node -e "console.log(process.platform, process.arch)"
linux <arch>

$ node -e "console.log(process.config.variables.v8_enable_temporal_support)"
1

$ node -e "console.log(process.config.variables.node_shared_openssl, process.config.variables.icu_small, process.config.variables.node_use_bundled_v8)"
false false true

$ node -e "console.log(process.config.variables.with_intl, process.config.variables.icu_gyp_path, process.config.variables.node_shared_icu)"
undefined tools/icu/icu-generic.gyp undefined

$ node -e "console.log(typeof Temporal)"
undefined

$ node --harmony-temporal -e "console.log(typeof Temporal)"
object

icu_gyp_path pointing at tools/icu/icu-generic.gyp suggests bundled (not system/shared) ICU is in use, which would argue against the known "Temporal disabled when compiling with shared ICU" issue (nodejs/node#62676) — but I haven't been able to fully rule that out from userland config inspection alone.

Expected behavior

Per the Node.js 26 release notes, Temporal should be available as a global without any flag:

"The Temporal API is now enabled by default in Node.js 26."

Actual behavior

Temporal is undefined unless --harmony-temporal is passed explicitly, despite the build reporting v8_enable_temporal_support: 1.

Additional context

I'm aware of related but distinct upstream issues:

This report differs from both: the flag reports Temporal as compiled in, but it's still runtime-gated behind the old experimental flag name. This looks like it could be a NodeSource build/packaging configuration issue rather than an upstream Node.js bug, but I wanted to flag it here first in case others are hitting it on EL8/EL9 builds. Happy to provide additional diagnostics if useful.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions