Changelog — April 2, 2026
Major mobile app release with complete HeroUI Native migration, full session flows, and significant web refactoring. Several bug fixes for authentication, metrics, and CI tooling.
✨ New Features
-
Mobile App — Complete Feature Set — Full mobile application delivered with profile screens, CRUD operations (products, clients, customers), session flows with live machine timers, consumable management, and technician assignment. Includes language switching (en/fr/es via ActionSheetIOS), dark/light/system theme persistence, and filter chips on studio sub-pages.
#PR-358#PR-354 -
Mobile — Avatars on Entity Lists — Added
heroui-nativeAvatar components with image + initials fallback across all entity list screens (users, clients, customers, home search).#PR-358 -
GraphQL — Server-side Metrics Overview — New
metricsOverviewquery performs COUNT/SUM aggregations server-side, replacing client-side filtering of up to 1000 records. Dashboard layout now pre-fetches studios for super admins.#PR-351
🐛 Bug Fixes
-
Authentication — Better Auth Hardening — Upgraded
better-authfrom beta (1.3.10-beta.6) to stable (1.5.6). Added Redis-backed session storage, rate limiting on auth endpoints, explicit session expiration, cached platform admin check, and RGPD-compliant user deletion.#PR-358#PR-354 -
Metrics — Infinite Refetch Loop — Fixed a React Query loop on
metricsOverview: stabilized input object reference withuseMemo, added auth guard in resolver (returns empty metrics for unauthenticated requests), and disabled automatic retry on error.#PR-357 -
Studios — Incorrect Total Count — The organizations query returns all org types, but the hook was filtering for
STUDIOonly.totalCountfrompageInfowas counting all orgs instead of the filtered result. Now uses the filtered row count.#PR-358 -
Web Dashboard — Hydration Mismatch — Fixed SSR/client mismatch on clients, studio, and guidelines pages by using
isPendinginstead ofisLoadingto ensure consistent skeleton fallback rendering.#PR-355#PR-357 -
Mobile — HeroUI Native Setup — Resolved Reanimated
invalidcolor crash caused by custom HSL overrides conflicting with HeroUI's oklch variables. Aligned provider setup with the officialheroui-native-examplereference.#PR-358 -
Mobile — Metro Config for pnpm — Fixed module resolution for
heroui-nativeanduniwindin pnpm monorepo —extraNodeModuleswas insufficient due to.pnpm/hashed paths. Simplified to letwithUniwindConfighandle resolution.#PR-358 -
Mobile — Broken Snapshot Test — Removed a
ThemedTextsnapshot test that imported a non-existent../ui/textcomponent. Added--passWithNoTestsflag to avoid CI failure with empty test suites.#PR-354 -
CI / Codegen — Removed Prettier from
afterAllFileWritehook in codegen config (project now uses Biome for formatting). Fixed docs app lint by migrating fromnext linttobiome check, and excluded.source/auto-generated directory from Biome checks.#PR-358#PR-354 -
Deps —
@types/reactLockfile Pin — Pinned@types/reactto19.1.9via pnpm override to fix a brokenturbo prunelockfile that referenced@types/react@19.2.14without a corresponding entry, blocking Docker API builds.v1.24.1
♻️ Refactoring & Technical Improvements
-
Web — Large Component Split — Broke down 4 oversized files into focused, reusable modules:
project-details-content.tsx(-50%),project-media-detail-dialog.tsx(-46%),project-media-gallery.utils.ts(-62%),session-calendar.tsx(-61%). ExtracteduseProjectDownloads,useProjectAssetActions,useEditDialog,useTableSearchhooks; addedEntityRow(replacing 10 identical row components); deleted 10 dead files (-2074 LOC) and 12 phantom barrel exports.#PR-351 -
Mobile — HeroUI Native Migration — Replaced all
@gluestack-ui/*packages and NativeWind withheroui-nativeand Uniwind (Tailwind v4). Rewrote 40+ UI component wrappers, migrated the theme system from RGB CSS vars to HSL semantic tokens, and deleted 20+ unused provider files (~70k lines removed).#PR-359#PR-358 -
Tooling — ESLint → Biome Migration — Replaced ESLint with Biome for linting and formatting across all packages in the monorepo.
#PR-351
📦 Dependencies & Infrastructure
-
GraphQL Performance — Reduced all
first: 1000pagination args tofirst: 100(actual server cap). Reduced sync polling intervals (Dropbox 1s→3s, FTP 3s→5s, Pennylane 2s→5s). NormalizedstaleTime(global search 30s→5min, organizations 60s→5min). Created shareduseOrganizationContext()hook eliminating viewer→studios→data waterfall in 30+ components.#PR-351 -
Releases —
v1.23.0,v1.23.1,v1.23.2,v1.24.0,v1.24.1published via semantic-release. -
Note — PR #359 (HeroUI migration) was merged and subsequently reverted on the same day due to a dependency issue (
@types/reactlockfile conflict). The fix was applied separately and merged as part ofv1.24.1.
By Théo Daguier