Changelog
All notable changes to this project will be documented in this file.
[1.0.0] - 2026-07-31
First stable release. Two phases of work: hardening the foundation (testing, CI, architecture) so a breadth push could ship on solid ground, then the breadth push itself — 15 new components and a full documentation site with live, in-browser previews of every component.
Added — Foundation & Trust
- ESLint rule enforcing the layer boundary described in the README:
src/ui/components/**can no longer import@devraj-labs/vajra-ui-coredirectly and must go throughsrc/ui/core. - Two more ESLint layer-boundary rules:
src/ui/core/**can no longer import fromsrc/ui/components/**(prevents layer inversion), and nothing outsidesrc/ui/vajra-theme/**may importsrc/theme/**directly (it's internal plumbing — useuseVajraTheme/VajraProviderinstead). - Jest + React Native Testing Library at the root package — the library itself had zero test coverage before this release.
- CI (
.github/workflows/ci.yml): typecheck/lint/test/build the library on every PR, a typecheck ofexamples/appagainst the local package to catch breaking API changes, and a verification that the builtdist/output is actually importable the way a real consumer would (scripts/verify-dist.sh— packs the tarball, installs it fresh, typechecks a real import against it). - Documented the
src/themevssrc/ui/vajra-themerelationship, a step-by-step component authoring scaffold (simple and compositional), and the optional-peer-dependency pattern for motion-enhanced components in Contributing.
Added — Breadth & Reach
Fifteen new components, closing the gap with other RN component libraries on real-app-screen coverage:
- Modal — built on RN's native
Modalfor correct Android back-button/overlay behavior, token-driven backdrop and content. - Sheet — bottom sheet composing
Modal, drag-to-dismiss viaPanResponder/Animated(no reanimated/gesture-handler dependency needed). - Toast — provider + imperative
useToast().show()API, queued with auto-dismiss, five feedback variants. - Select — trigger styled like
Input, options presented in aSheet. - List — thin token-aware
FlatListwrapper with a default separator and empty-state slot. - Skeleton — pulsing placeholder box.
- Alert — inline (non-toast) feedback banner, same five variants as Toast with subtler styling.
- Accordion —
Root/Itemcomposition, animated height, single or multi-open. - Menu — action sheet built on
Sheet, destructive/disabled action states. - Tabs —
Root/List/Contentcomposition with real content-switching, distinct from the existingTabBar(which is visual-only). - Chip — interactive selectable/removable pill, distinct from the static
Badge. - ProgressBar — animated 0–1 fill with
accessibilityValue. - Slider — drag-to-adjust via
PanResponder, min/max/step. - Stepper — increment/decrement numeric input.
- Tooltip — tap-to-toggle (mobile has no hover), positioned relative to its own wrapper.
Added — Documentation
- Full component reference site (
website/) with live, in-browser previews of every component (all 11 core primitives, all 29 opinionated components) rendered via a hand-rolledreact-native-webwebpack integration — not just static code snippets. - Real branding, intro/quick-start page, and the existing theming and italic-fonts guides brought in as proper docs pages.
- CI now builds the docs site on every PR.
Fixed
Button's barrel (src/ui/components/button/index.ts) re-exportedTButtonSize/TButtonVariantfrom bothbutton-typesandbutton-variants, causing animport/exportduplicate-export lint error. The barrel now re-exports those types only once, frombutton-types.check-file/filename-naming-conventionwas rejecting every*.test.tsxfile as invalid kebab-case (it read.testas part of the name to validate) — fixed withignoreMiddleExtensions: true.IconSwitchhad notestIDpass-through, forcing a brittle multi-level DOM-traversal workaround in its test — added the prop and simplified the test.
Removed
- Deleted the stray, empty top-level
src/core/directory, a leftover from when headless primitives were extracted into the separate@devraj-labs/vajra-ui-corepackage.
[0.5.3] - 2026-05-06
Fixed
Text: iOS requiresfontStyle: 'italic'passed through even when a named italic font file is resolved; Android must have it suppressed in that case or the OS applies synthetic skew on top of the italic font file, breaking rendering. Platform-branched insrc/ui/core/text/text.tsx.
[0.5.2] - 2026-05-06
Fixed
Text: always passfontStylethrough to the underlying core text component for iOS italic rendering (superseded by the platform-branched fix in 0.5.3).
[0.5.1] - 2026-05-06
Added
Text:fontStyleprop with named italic font file resolution — when a font has a registered italic PostScript variant (e.g.Newsreader9pt-Italic), it's resolved and used instead of relying on synthetic italic.
[0.5.0] - 2026-04-28
Added
IVajraCustomColorsmodule-augmentation interface so consumers can add or override color tokens with full type safety.IVajraFontSizeTokensaugmentation interface and a newf-2.5(18px) font size token.fontSizes/lineHeightsmoved into the theme object, with custom font size tokens supported viaIVajraFontSizeTokensandcreateVajraTheme.
Changed
- Theming rewritten to accurately document the "Bring Your Own Theme" (BYOT) model and all augmentation interfaces.
[0.4.0] - 2026-04-11
Added
opacityprop onBox.
[0.3.4] - 2026-04-11
Added
opacityprop onBox(see 0.4.0 — tag cut same day, no functional delta).
[0.3.3] - 2026-04-11
Added
- Rounded tokens
r-5throughr-10, plusoverflow/positionprops onBox, and anIVajraRoundedTokensaugmentation interface. IVajraSpacingTokensandIVajraFontVariantsaugmentation interfaces, and typography overrides increateVajraTheme.fontSizeprop onTextfor finer-grained sizing control.
[0.3.0] - 2026-04-11
Fixed
- Variant resolution bug in
Button.
Changed
- Icon-related prop changes across components for maximum compatibility with consumer apps.
[0.2.1] - 2026-04-09
Changed
- Internal path/config change (no consumer-facing API change).
[0.2.0] - 2026-04-09
Added
releasescript (build+npm publish --access public).
[0.1.0] - 2026-04-09
Initial tagged release. Project scaffolding, Contributing guidelines, and README.