trackunit/iris-app-sdk-vite v1.7.0 - reproduce production-only React issues with --productionReact
serve now has a --productionReact option so you can reproduce issues that only show up in a published app, without leaving your local dev loop.
Enhancements and updates to existing features
View All Tagsserve now has a --productionReact option so you can reproduce issues that only show up in a published app, without leaving your local dev loop.
Running npx nx g @trackunit/iris-app:extend now scaffolds your extension's unit tests with Vitest instead of Jest, matching the @trackunit/react-vite-test-setup preset already used elsewhere in the SDK's testing guides.
Breaking change: the generator's extendJestPreset option has been removed. If a script or CI step invokes the generator with --extendJestPreset, drop that flag — the generator no longer recognizes it.
Manager is moving content inset for Asset Home, Site Home, and Admin extension iframes
onto each app. After you upgrade @trackunit/iris-app to 2.5.13 or later, the host stops
applying its transitional 1rem inset. Your extension must pad itself with p-content-space on the
scrollable content region (or intentionally stay edge-to-edge).
Run the automated migration before or as part of that SDK upgrade — not as optional cleanup
afterward. It ships as v2-5-12-p-content-space-codemod in @trackunit/iris-app 2.5.13.
npx nx g @trackunit/migrations:migrate
npx nx g @trackunit/migrations:run-migrations
@trackunit/react-drawer has been reworked to align with Sheet and Modal: a new useDrawer hook owns state and dismiss, a new DrawerHeader component provides the standard toolbar, and the panel now has explicit variant="default" | "modal" semantics. Legacy inline props on <Drawer /> (open, onClose, onOpen, hasOverlay, keepMountedWhenClosed) and the DrawerToggle component have been removed.
@trackunit/react-components's MenuList claimed Up/Down keyboard navigation and nested-menu support in its docs that it never actually implemented — it was just a role="list" div with click handlers. It's now been rewritten with real WAI-ARIA menu semantics and renamed to MenuContent to reflect that. MenuItem also gains a new submenu prop for building nested menus, and the MenuTree/useMenuTree tree-coordination primitive that powers it is now public API.
In this version of our Iris App SDK, we have upgraded NX to v23.1.0. This release also moves Iris App builds onto Vite 8.
Make sure to upgrade your extensions to the latest version of NX.
npx nx migrate 23.1.0
npx nx migrate --run-migrations
Please refer to Maintaining Your Application for more information.
The Device Health Issues API is now generally available. The endpoints have been promoted from v1beta1 to v1, and the API is no longer marked as beta.
Below is a list of all available REST endpoints:
➕ GET:
/v1/assets/{assetId}/issues
Get issues by asset
➕ GET:
/v1/issues
Get issues
➕ GET:
/v1/issues/{issueId}
Get issue by id
⚠️ The
v1beta1endpoints have been replaced byv1. Update any integrations to use the/v1/...paths.
⚠️ The issue type
LOW_DEVICE_BATTERY_VOLTAGEhas been renamed toLOW_DEVICE_BATTERY. Update any filtering or handling that relies on this value.
@trackunit/react-components and @trackunit/react-form-components include breaking accessibility, tooltip, and layout updates for component consumers. These changes were made to improve accessibility compliance and create more consistent tooltip and labeling behavior across components
DateField in @trackunit/react-form-components now displays, parses, and hints dates using the user's regional locale while continuing to emit canonical YYYY-MM-DD values to consumers.
The AEMP ISO Diagnostic Trouble Codes time-series endpoint now honors the Accept-Language request header when enriching fault codes with descriptions.
When an Accept-Language header is provided, the language is threaded through to the fault interpretation lookup, so the returned CodeDescription is localized to the caller's preferred language (for example, Accept-Language: da-DK,da;q=0.9,en;q=0.8 returns Danish descriptions) — but only if a translation for that language actually exists for the given fault code.
If no translation exists for the requested language — or if the header is omitted — the response falls back to the fault code's default description (typically English). The set of available languages depends on what the OEM provides and varies by manufacturer; common languages include English (en), German (de), French (fr), Italian (it), Spanish (es), Dutch (nl), Polish (pl), and Japanese (ja).
📝 GET:
/15143/-3/Fleet/Equipment/ID/{oemISOIdentifier}/Faults/{startDate}/{endDate}/{pageNumber}
Get diagnostic trouble codes time-series, with fault descriptions localized via the Accept-Language header.