GlucoseIQ

Runtime Support

Supported Node, module, TypeScript, React, browser, and package-entry contracts for GlucoseIQ 1.0.

GlucoseIQ 1.0 uses Node.js 24 as the supported package baseline. Every published manifest declares node >=24, including packages that can be bundled into a browser application.

Support matrix

SurfaceSupported contract
Node.js24 or newer for all published packages
Package modulesESM and CommonJS
ESM declarations.d.mts through each import.types condition
CommonJS declarations.d.ts through each require.types condition
TypeScript resolutionVerified with strict NodeNext and Bundler consumers
ReactReact 18 and 19; package peer range is >=18
Package manager in this repositorypnpm 11.17.0
Release npm clientnpm 11.17.0

The repository compiles documentation examples with TypeScript 5.8.3. Older compiler versions are unsupported.

Public entrypoints

@glucoseiq/core publishes five entrypoints:

SpecifierContract
@glucoseiq/coreMain data model, analysis, ingestion, live helpers, and public errors
@glucoseiq/core/metricsIndividual metrics
@glucoseiq/core/connectorsDexcom, Libre, and Nightscout payload normalizers
@glucoseiq/core/interopInteroperability helpers
@glucoseiq/core/renderSVG-string renderers

React, tokens, testing, CLI, and the compatibility bridge each publish one root entrypoint. Import only documented entrypoints; internal source paths and private build chunks are not public contracts.

Server and browser boundaries

@glucoseiq/core has no runtime dependencies and its renderers return strings without requiring a DOM. Applications can bundle selected core functions for a browser, but the supported install, build, and server runtime remains Node 24 or newer.

Connector exports normalize supplied payloads. They do not fetch vendor data, store credentials, or choose a persistence layer. Perform authenticated transport on a server or another trusted data layer, then pass normalized GlucoseReading[] values to the UI.

@glucoseiq/cli is Node-only because it reads and writes files. It is not a browser command surface.

React boundary

The @glucoseiq/react root is a Client Component package and retains its 'use client' directive in packed ESM and CommonJS output. Use @glucoseiq/core directly from server-only modules. Pass serializable reading data across the server/client boundary, then call hooks inside a client component.

React is a peer dependency. The host application chooses and installs its supported React version and, for DOM applications, its matching renderer.

Module-resolution examples

ESM consumers use imports:

import { analyzeGlucose } from '@glucoseiq/core'
import { calculateActivePercent } from '@glucoseiq/core/metrics'

const analyze = analyzeGlucose
const coverage = calculateActivePercent
void { analyze, coverage }

CommonJS consumers resolve the matching runtime and declaration conditions:

const { analyzeGlucose } = require('@glucoseiq/core')
const { calculateActivePercent } = require('@glucoseiq/core/metrics')

Do not mix a private dist/ path into either form. Package exports own runtime and declaration routing.

Upgrade boundaries

  • Node versions below 24 can remain on diabetic-utils@legacy; the GlucoseIQ 1.0 family and diabetic-utils 2 require Node 24 or newer.
  • New applications should use scoped packages instead of depending on the compatibility bridge.
  • Review the migration guide before changing package names, units, or numeric expectations.
  • Run the integration matrix in the same module, React, and deployment modes used by the consuming application.

On this page