Releases: dev-ignis/forge
@nexcraft/forge@0.10.0
Minor Changes
-
e40659d: feat(core): expand design tokens and complete component exports
New Features:
- Expanded CSS custom properties (design tokens)
- Additional component exports for better tree-shaking
- Enhanced token coverage for theming
What Changed:
- Added more granular design tokens
- Improved token organization
- Better TypeScript types for exports
Impact:
- ✅ More theming flexibility with additional tokens
- ✅ Better tree-shaking with specific component exports
- ✅ Enhanced customization capabilities
- ✅ No breaking changes - only additions
Patch Changes
-
e40659d: fix(forge-card): add padding to custom header slot
Bug Fix:
- Added proper padding to custom header slot in ForgeCard
- Ensures consistent spacing when using slotted header content
What Changed:
- Custom header slot now has appropriate padding
- Matches design system spacing standards
Usage:
<!-- Header slot now has proper padding --> <forge-card> <div slot="header">Custom Header</div> <p>Card content</p> </forge-card>
Impact:
- ✅ Better visual consistency for custom headers
- ✅ Matches other card sections' padding
- ✅ No breaking changes - only adds missing padding
-
e40659d: fix(tokens): export CSS design tokens for component styling
Bug Fix:
- Added missing
tokens.cssexport to package.json - Users can now import CSS custom properties for theming
What Changed:
// package.json exports "./tokens.css": "./dist/tokens.css"
Usage:
// Before: Not available // After: Can import tokens import '@nexcraft/forge/tokens.css';
Impact:
- ✅ Design tokens now accessible via package export
- ✅ Enables custom theming with CSS variables
- ✅ Matches documented token bridge usage
- ✅ No breaking changes
- Added missing
@nexcraft/forge-vue@1.0.2
@nexcraft/forge-vue
2.0.0
Patch Changes
- Updated dependencies [e40659d]
- Updated dependencies [e40659d]
- Updated dependencies [e40659d]
- @nexcraft/forge@0.10.0
1.0.1
Patch Changes
-
c074759: fix(release): build workspace packages before publishing
Critical Fix: v1.0.0 packages were published without compiled
dist/folders, making them completely unusable.Root Cause:
Release workflow only built main @nexcraft/forge package, not workspace packages (forge-react, forge-vue, forge-angular, forge-rhf).Fix:
- Add build step for all workspace packages before
changeset publish - Ensures dist/ folders exist for all packages
- Validates packages are usable after installation
Impact:
- ✅ @nexcraft/forge-react@1.0.1 will include dist/ folder
- ✅ @nexcraft/forge-vue@1.0.1 will include dist/ folder
- ✅ @nexcraft/forge-angular@1.0.1 will include dist/ folder
- ✅ @nexcraft/forge-rhf@1.0.1 will include dist/ folder
Affected Users:
Anyone who installed v1.0.0 packages encountered:Error: Cannot find module './dist/index.js'Resolution:
Upgrade to v1.0.1 when released:npm install @nexcraft/forge-react@latest npm install @nexcraft/forge-vue@latest npm install @nexcraft/forge-angular@latest npm install @nexcraft/forge-rhf@latest
Apologies:
We sincerely apologize for this critical oversight. We've added additional validation to prevent this from happening again.- @nexcraft/forge@0.9.0
- Add build step for all workspace packages before
1.0.0
Patch Changes
0.3.0
Minor Changes
-
842b2e4: chore: increment beta versions to skip unpublished versions
- Bump framework packages to 0.2.0-beta.0 to skip past unpublished 0.1.1-beta.0
- Bump forge-mcp-figma to 0.2.0-beta.0 to skip past unpublished 0.1.1-beta.0
- Bump forge-rhf to 0.4.0-beta.0 to skip past unpublished 0.3.1-beta.0 and 1.0.0-beta.0
-
6515991: Phase 15.4: Complete React package extraction and framework separation
- Extract React integration to separate @nexcraft/forge-react package
- Remove all framework integrations from core @nexcraft/forge package
- Update @nexcraft/forge-rhf to use new React package
- Achieve pure web components core architecture
- Set up linked package releases for coordinated versioning
Patch Changes
- Updated dependencies [6515991]
- @nexcraft/forge@0.8.0
2.0.0
Patch Changes
- Updated dependencies
- @nexcraft/forge@0.9.0
1.0.0
Patch Changes
- Updated dependencies
- @nexcraft/forge@0.8.0
@nexcraft/forge-rhf@1.0.2
@nexcraft/forge-rhf
2.0.0
Patch Changes
- Updated dependencies [e40659d]
- Updated dependencies [e40659d]
- Updated dependencies [e40659d]
- Updated dependencies [e40659d]
- Updated dependencies [e40659d]
- @nexcraft/forge@0.10.0
- @nexcraft/forge-react@2.0.0
1.0.1
Patch Changes
-
c074759: fix(release): build workspace packages before publishing
Critical Fix: v1.0.0 packages were published without compiled
dist/folders, making them completely unusable.Root Cause:
Release workflow only built main @nexcraft/forge package, not workspace packages (forge-react, forge-vue, forge-angular, forge-rhf).Fix:
- Add build step for all workspace packages before
changeset publish - Ensures dist/ folders exist for all packages
- Validates packages are usable after installation
Impact:
- ✅ @nexcraft/forge-react@1.0.1 will include dist/ folder
- ✅ @nexcraft/forge-vue@1.0.1 will include dist/ folder
- ✅ @nexcraft/forge-angular@1.0.1 will include dist/ folder
- ✅ @nexcraft/forge-rhf@1.0.1 will include dist/ folder
Affected Users:
Anyone who installed v1.0.0 packages encountered:Error: Cannot find module './dist/index.js'Resolution:
Upgrade to v1.0.1 when released:npm install @nexcraft/forge-react@latest npm install @nexcraft/forge-vue@latest npm install @nexcraft/forge-angular@latest npm install @nexcraft/forge-rhf@latest
Apologies:
We sincerely apologize for this critical oversight. We've added additional validation to prevent this from happening again. - Add build step for all workspace packages before
-
Updated dependencies [c074759]
- @nexcraft/forge-react@1.0.1
- @nexcraft/forge@0.9.0
1.0.0
Patch Changes
-
d04ae04: fix: support React 19 in peer dependencies
- Update peer dependency to accept React 18 or 19
- Fixes compatibility with Next.js 15 and React 19
-
Updated dependencies [7a38d60]
-
Updated dependencies [7a38d60]
- @nexcraft/forge@0.9.0
- @nexcraft/forge-react@1.0.0
0.4.0
Minor Changes
-
842b2e4: chore: increment beta versions to skip unpublished versions
- Bump framework packages to 0.2.0-beta.0 to skip past unpublished 0.1.1-beta.0
- Bump forge-mcp-figma to 0.2.0-beta.0 to skip past unpublished 0.1.1-beta.0
- Bump forge-rhf to 0.4.0-beta.0 to skip past unpublished 0.3.1-beta.0 and 1.0.0-beta.0
-
6515991: Phase 15.4: Complete React package extraction and framework separation
- Extract React integration to separate @nexcraft/forge-react package
- Remove all framework integrations from core @nexcraft/forge package
- Update @nexcraft/forge-rhf to use new React package
- Achieve pure web components core architecture
- Set up linked package releases for coordinated versioning
Patch Changes
- Updated dependencies [842b2e4]
- Updated dependencies [6515991]
- @nexcraft/forge-react@0.3.0
- @nexcraft/forge@0.8.0
2.0.0
Patch Changes
- Updated dependencies
- @nexcraft/forge@0.9.0
1.0.0
Patch Changes
- Updated dependencies
- @nexcraft/forge@0.8.0
0.3.0
Minor Changes
-
- fix: - rhf peer dependency; (b38f5af)
- fix: - align package versions with published npm versions; (e7400ba)
- fix: - correct forge-rhf version from 1.0.0 to 0.3.0; (a4c841f)
- feat: align package versions with npm registry for stable v0.7.0 release (a39eeeb)
- fix: resolve GitHub Actions CI failures and dependency conflicts (6eb371d)
Patch Changes
- Updated dependencies
- @nexcraft/forge@0.7.0
0.2.0
Patch Changes
-
581a548: # Phase 11: AI Manifest & Tooling - Major Release
🤖 AI-Native Development Features
- Enhanced AI Manifest: Comprehensive a11y metadata for all 30+ components with WCAG 2.1 AA compliance data
- SSR Fallback Examples: Server-side rendering examples showing semantic HTML structure for better SEO and accessibility
- AI Metadata Validation: Schema-based validation using AJV for AI manifest integrity
- Component Intelligence: Complete AI state tracking and action suggestions for all components
📚 Documentation & Developer Experience
- Documentation Cleanup: Removed redundant files (COMPONENTS.md, IMPLEMENTATION_STATUS.md) and fixed broken references
- AI-Native Guides: Enhanced guides for AI-assisted development patterns and component usage
- Shipping Optimization: Fixed package.json files array to only ship necessary documentation
- Cross-Reference Validation: Ensured all shipped documentation has valid internal references
🏗️ Infrastructure & Deployment
- GitHub Pages Integration: Complete deployment pipeline for live examples and documentation
- Next.js Example App: Production-ready example with static export capabilities
- Examples Structure: Organized framework examples with live demo hosting
- CI/CD Enhancement: Automated deployment and example updates
📋 Planning & Roadmap
- Priority Roadmaps: Updated immediate, short-term, and long-term strategic plans
- Security Framework: Added cross-cutting security and quality concerns documentation
- Progress Tracking: Enhanced status tracking and completion metrics
🐛 Bug Fixes & Improvements
- React Integration: Fixed TypeScript errors in React hooks and components
- File References: Resolved broken documentation links and missing file issues
- Schema Compliance: Updated AI manifest schema to match rich component metadata structure
🚀 What's Next
This release establishes a solid foundation for AI-native component development with comprehensive tooling, documentation, and deployment infrastructure. The library now includes 30+ components with full AI metadata, live examples, and production-ready deployment pipelines.
-
Updated dependencies [581a548]
- @nexcraft/forge@0.7.0
0.2.0
Minor Changes
-
Add React Hook Form adapters package
Initial release of @nexcraft/forge-rhf package containing React Hook Form adapters extracted from the main package for better modularity.
@nexcraft/forge-react@1.0.5
@nexcraft/forge-react
2.0.0
Patch Changes
-
e40659d: fix(docs): correct CDN URL to use nexcraft-forge.es.js instead of forge.js
Critical Documentation Fix:
- CDN URL was incorrect:
/dist/forge.jsdoes not exist in the package - Correct file:
/dist/nexcraft-forge.es.js - Updated all integration guides (Next.js, Remix, SvelteKit)
What Changed:
- ❌ Old:
https://cdn.jsdelivr.net/npm/@nexcraft/forge@latest/dist/forge.js - ✅ New:
https://cdn.jsdelivr.net/npm/@nexcraft/forge@latest/dist/nexcraft-forge.es.js
Files Updated:
- docs/integrations/nextjs-15-app-router.md
- docs/integrations/remix.md
- docs/integrations/sveltekit.md
Impact:
- ✅ CDN links now work correctly
- ✅ Self-hosted instructions use correct filename
- ✅ Import statements reference actual file
- ✅ Fixes "404 Not Found" errors when using CDN
- CDN URL was incorrect:
-
e40659d: feat(forge-card): add border prop to control card border visibility
New Feature:
- Added
borderprop to ForgeCard component - Default: border shown (1px solid #e5e7eb)
- Set
border={false}to remove border
Usage:
// With border (default) <ForgeCard>Content</ForgeCard> // Without border <ForgeCard border={false}>Clean borderless card</ForgeCard>
Implementation:
- Fallback renderer adds 'forge-card--no-border' class when border={false}
- CSS:
.forge-card--no-border { border: none; } - Attribute preserved during hydration to web component
Impact:
- ✅ Gives users control without custom CSS
- ✅ Matches common UI patterns (cards with/without borders)
- ✅ Simple API:
<ForgeCard border={false}> - ✅ No breaking changes
- Added
-
Updated dependencies [e40659d]
-
Updated dependencies [e40659d]
-
Updated dependencies [e40659d]
- @nexcraft/forge@0.10.0
1.0.4
Patch Changes
-
24e826f: feat(ssr): comprehensive fallback CSS for styled SSR components
Critical Fix for Unstyled Forms:
- ✅ New fallback CSS file provides styling for all SSR fallback components
- ✅ Fixes issue where components rendered as unstyled HTML inputs
- ✅ Matches web component visual appearance during SSR
What's Included:
- Comprehensive styles for all form components (Input, Select, Checkbox, Switch, DatePicker)
- Button variants and sizes (primary, secondary, outline, ghost)
- UI components (Card, Badge, LoadingSpinner)
- Responsive and accessible design
How to Use:
// Add to your app layout or root component import '@nexcraft/forge-react/fallbacks.css';
Styled Components:
.forge-input- Text inputs with variants and sizes.forge-checkbox- Checkbox with focus states.forge-switch- Toggle switch with animations.forge-select- Select dropdown with custom arrow.forge-date-picker- Date input styling.forge-button- Button variants (primary, secondary, outline, ghost).forge-card- Card with shadow and hover effects.forge-badge- Badge variants (primary, success, warning, error).forge-loading-spinner- Animated spinner with sizes
Impact:
- ✅ Forms look styled immediately during SSR
- ✅ No flash of unstyled content (FOUC)
- ✅ Components visually upgrade when web components load
- ✅ Better UX for users on slow connections
Related Issues Fixed:
- Gaming Highlight Reel unstyled forms (http://localhost:9001/register)
- Multiple client reports of "blank/unstyled components"
-
24e826f: fix(ssr): improve hydration timing with customElements.whenDefined()
Critical Timing Fix:
- ✅ Components now properly upgrade from fallback to web component when loaded
- ✅ Fixes issue where components stayed as fallback HTML indefinitely
- ✅ Handles race condition between component render and web component registration
What Changed:
- Added
customElements.whenDefined()detection increateUnifiedWrapper - Components wait for web component definition before upgrading
- Graceful fallback if web components never load
Technical Details:
// Before: Only checked if component was already defined const shouldUpgrade = customElements.get(tagName) !== undefined; // After: Waits for component to be defined if (shouldUpgrade) { upgradeToWebComponent(); } else { customElements.whenDefined(tagName).then(() => { upgradeToWebComponent(); }); }
Impact:
- ✅ Components upgrade correctly after web components load
- ✅ Handles dynamic import scenarios
- ✅ Handles Next.js Script with
beforeInteractivestrategy - ✅ No hydration mismatches or warnings
Related Issues Fixed:
- "Components stay as fallbacks" - now properly upgrade
- Race condition with dynamic
import('@nexcraft/forge') - Timing issues with Next.js Script loading
-
24e826f: feat(ssr): automatic 'use client' directive for Next.js App Router compatibility
Critical SSR Fix:
- ✅ Automatic 'use client' directive added to all React components during build
- ✅ Components work in Next.js App Router without manual 'use client' directives
- ✅ Zero-config SSR support for all React frameworks
What Changed:
- Build script automatically prepends
'use client';to all compiled components - 40 component files now have 'use client' directive
- No changes needed in source files (framework-agnostic)
Impact:
- ✅ Next.js App Router: Components work automatically
- ✅ Remix: Full SSR support
- ✅ Gatsby: No changes needed
- ✅ No breaking changes - existing code works better
Before (v1.0.3):
'use client'; // User must add this import { ForgeButton } from '@nexcraft/forge-react'; export function MyComponent() { return <ForgeButton>Click</ForgeButton>; }
After (v1.0.4):
// No 'use client' needed - package handles it! import { ForgeButton } from '@nexcraft/forge-react'; export function MyComponent() { return <ForgeButton>Click</ForgeButton>; }
Technical Details:
- Post-build script:
packages/forge-react/scripts/add-use-client.js - Build command updated:
tsc && node scripts/add-use-client.js - Follows industry standard pattern (Material UI approach)
- @nexcraft/forge@0.9.0
1.0.3
Patch Changes
-
2f08880: fix(fallback): pass through
idprop in all form component fallbacksBug Fix:
- Fixed duplicate ID warning when multiple form components use the same
idprop - All form input fallback renderers now properly pass through the
idattribute
What Changed:
ForgeInput: Now passesidprop to fallback<input>elementForgeSwitch: Now passesidprop to fallback checkbox inputForgeSelect: Now passesidprop to fallback<select>elementForgeDatePicker: Now passesidprop to fallback date input
Impact:
- ✅ Fixes browser warning: "Found N elements with non-unique id"
- ✅ Proper label associations with
htmlForattribute - ✅ Better accessibility for screen readers
- ✅ No breaking changes
Before:
<ForgeInput id="email" /> // Fallback: <input /> (id ignored)
After:
<ForgeInput id="email" /> // Fallback: <input id="email" />
- Fixed duplicate ID warning when multiple form components use the same
-
2f08880: refactor(types): improve TypeScript type safety across React integration
Type Safety Improvements:
- ✅ Replaced
any[]with proper typed arrays (GridSortConfig[],DataTableRow[],TreeNode[]) - ✅ Added proper type definitions for data structures (GridSortConfig, DataTableRow, TreeNode)
- ✅ Improved utility types (removed 20+
anycasts) - ✅ Better DOM/React type annotations
What Changed:
ForgeDataGridProps.onSortChanged:any[]→GridSortConfig[]ForgeDataTableProps.data:Record<string, any>[]→DataTableRow[]ForgeDataTableProps.onSelectionChange:any[]→DataTableRow[]ForgeTreeViewProps.data.children:any[]→TreeNode[](recursive)createUnifiedWrapper: Improved type annotations for refs and props
Impact:
- ✅ Better IDE autocomplete and IntelliSense
- ✅ Catch type errors at compile time
- ✅ Improved developer experience
- ✅ No breaking changes (compatible types)
Remaining Work:
Some component-specific fallback renderers still useunknownfor flexibility. These are non-critical and will be addressed incrementally.- @nexcraft/forge@0.9.0
- ✅ Replaced
1.0.2
Patch Changes
-
d971b78: fix(ssr): proper SSR architecture - NO 'use client' in library files
Critical Architecture Fix:
- REMOVED 'use client' from all library files (was polluting all consumers)
- Library files stay framework-agnostic (no Next.js-specific directives)
- Consumers add 'use client' to their own files when needed
- Matches industry standard (Radix UI, Headless UI, Framer Motion)
What Changed:
- ✅ ForgeProvider: NO 'use client' (consumers add it)
- ✅ createUnifiedWrapper: NO 'use client' (consumers add it)
- ✅ Added clear documentation: "add 'use client' to your file"
- ✅ SSR demo shows correct usage pattern
Why This Matters:
- ❌ Wrong: Library has 'use client' → ALL consumers forced to client-side
- ✅ Correct: Consumers add 'use client' → They control client boundaries
Usage Pattern (Correct):
...
@nexcraft/forge-angular@1.0.2
@nexcraft/forge-angular
2.0.0
Patch Changes
- Updated dependencies [e40659d]
- Updated dependencies [e40659d]
- Updated dependencies [e40659d]
- @nexcraft/forge@0.10.0
1.0.1
Patch Changes
-
c074759: fix(release): build workspace packages before publishing
Critical Fix: v1.0.0 packages were published without compiled
dist/folders, making them completely unusable.Root Cause:
Release workflow only built main @nexcraft/forge package, not workspace packages (forge-react, forge-vue, forge-angular, forge-rhf).Fix:
- Add build step for all workspace packages before
changeset publish - Ensures dist/ folders exist for all packages
- Validates packages are usable after installation
Impact:
- ✅ @nexcraft/forge-react@1.0.1 will include dist/ folder
- ✅ @nexcraft/forge-vue@1.0.1 will include dist/ folder
- ✅ @nexcraft/forge-angular@1.0.1 will include dist/ folder
- ✅ @nexcraft/forge-rhf@1.0.1 will include dist/ folder
Affected Users:
Anyone who installed v1.0.0 packages encountered:Error: Cannot find module './dist/index.js'Resolution:
Upgrade to v1.0.1 when released:npm install @nexcraft/forge-react@latest npm install @nexcraft/forge-vue@latest npm install @nexcraft/forge-angular@latest npm install @nexcraft/forge-rhf@latest
Apologies:
We sincerely apologize for this critical oversight. We've added additional validation to prevent this from happening again.- @nexcraft/forge@0.9.0
- Add build step for all workspace packages before
1.0.0
Patch Changes
0.3.0
Minor Changes
-
842b2e4: chore: increment beta versions to skip unpublished versions
- Bump framework packages to 0.2.0-beta.0 to skip past unpublished 0.1.1-beta.0
- Bump forge-mcp-figma to 0.2.0-beta.0 to skip past unpublished 0.1.1-beta.0
- Bump forge-rhf to 0.4.0-beta.0 to skip past unpublished 0.3.1-beta.0 and 1.0.0-beta.0
-
6515991: Phase 15.4: Complete React package extraction and framework separation
- Extract React integration to separate @nexcraft/forge-react package
- Remove all framework integrations from core @nexcraft/forge package
- Update @nexcraft/forge-rhf to use new React package
- Achieve pure web components core architecture
- Set up linked package releases for coordinated versioning
Patch Changes
- Updated dependencies [6515991]
- @nexcraft/forge@0.8.0
2.0.0
Patch Changes
- Updated dependencies
- @nexcraft/forge@0.9.0
1.0.0
Patch Changes
- Updated dependencies
- @nexcraft/forge@0.8.0
@nexcraft/forge-react@1.0.4
Patch Changes
-
24e826f: feat(ssr): comprehensive fallback CSS for styled SSR components
Critical Fix for Unstyled Forms:
- ✅ New fallback CSS file provides styling for all SSR fallback components
- ✅ Fixes issue where components rendered as unstyled HTML inputs
- ✅ Matches web component visual appearance during SSR
What's Included:
- Comprehensive styles for all form components (Input, Select, Checkbox, Switch, DatePicker)
- Button variants and sizes (primary, secondary, outline, ghost)
- UI components (Card, Badge, LoadingSpinner)
- Responsive and accessible design
How to Use:
// Add to your app layout or root component import '@nexcraft/forge-react/fallbacks.css';
Styled Components:
.forge-input- Text inputs with variants and sizes.forge-checkbox- Checkbox with focus states.forge-switch- Toggle switch with animations.forge-select- Select dropdown with custom arrow.forge-date-picker- Date input styling.forge-button- Button variants (primary, secondary, outline, ghost).forge-card- Card with shadow and hover effects.forge-badge- Badge variants (primary, success, warning, error).forge-loading-spinner- Animated spinner with sizes
Impact:
- ✅ Forms look styled immediately during SSR
- ✅ No flash of unstyled content (FOUC)
- ✅ Components visually upgrade when web components load
- ✅ Better UX for users on slow connections
Related Issues Fixed:
- Gaming Highlight Reel unstyled forms (http://localhost:9001/register)
- Multiple client reports of "blank/unstyled components"
-
24e826f: fix(ssr): improve hydration timing with customElements.whenDefined()
Critical Timing Fix:
- ✅ Components now properly upgrade from fallback to web component when loaded
- ✅ Fixes issue where components stayed as fallback HTML indefinitely
- ✅ Handles race condition between component render and web component registration
What Changed:
- Added
customElements.whenDefined()detection increateUnifiedWrapper - Components wait for web component definition before upgrading
- Graceful fallback if web components never load
Technical Details:
// Before: Only checked if component was already defined const shouldUpgrade = customElements.get(tagName) !== undefined; // After: Waits for component to be defined if (shouldUpgrade) { upgradeToWebComponent(); } else { customElements.whenDefined(tagName).then(() => { upgradeToWebComponent(); }); }
Impact:
- ✅ Components upgrade correctly after web components load
- ✅ Handles dynamic import scenarios
- ✅ Handles Next.js Script with
beforeInteractivestrategy - ✅ No hydration mismatches or warnings
Related Issues Fixed:
- "Components stay as fallbacks" - now properly upgrade
- Race condition with dynamic
import('@nexcraft/forge') - Timing issues with Next.js Script loading
-
24e826f: feat(ssr): automatic 'use client' directive for Next.js App Router compatibility
Critical SSR Fix:
- ✅ Automatic 'use client' directive added to all React components during build
- ✅ Components work in Next.js App Router without manual 'use client' directives
- ✅ Zero-config SSR support for all React frameworks
What Changed:
- Build script automatically prepends
'use client';to all compiled components - 40 component files now have 'use client' directive
- No changes needed in source files (framework-agnostic)
Impact:
- ✅ Next.js App Router: Components work automatically
- ✅ Remix: Full SSR support
- ✅ Gatsby: No changes needed
- ✅ No breaking changes - existing code works better
Before (v1.0.3):
'use client'; // User must add this import { ForgeButton } from '@nexcraft/forge-react'; export function MyComponent() { return <ForgeButton>Click</ForgeButton>; }
After (v1.0.4):
// No 'use client' needed - package handles it! import { ForgeButton } from '@nexcraft/forge-react'; export function MyComponent() { return <ForgeButton>Click</ForgeButton>; }
Technical Details:
- Post-build script:
packages/forge-react/scripts/add-use-client.js - Build command updated:
tsc && node scripts/add-use-client.js - Follows industry standard pattern (Material UI approach)
- @nexcraft/forge@0.9.0
@nexcraft/forge-react@1.0.3
Patch Changes
-
2f08880: fix(fallback): pass through
idprop in all form component fallbacksBug Fix:
- Fixed duplicate ID warning when multiple form components use the same
idprop - All form input fallback renderers now properly pass through the
idattribute
What Changed:
ForgeInput: Now passesidprop to fallback<input>elementForgeSwitch: Now passesidprop to fallback checkbox inputForgeSelect: Now passesidprop to fallback<select>elementForgeDatePicker: Now passesidprop to fallback date input
Impact:
- ✅ Fixes browser warning: "Found N elements with non-unique id"
- ✅ Proper label associations with
htmlForattribute - ✅ Better accessibility for screen readers
- ✅ No breaking changes
Before:
<ForgeInput id="email" /> // Fallback: <input /> (id ignored)
After:
<ForgeInput id="email" /> // Fallback: <input id="email" />
- Fixed duplicate ID warning when multiple form components use the same
-
2f08880: refactor(types): improve TypeScript type safety across React integration
Type Safety Improvements:
- ✅ Replaced
any[]with proper typed arrays (GridSortConfig[],DataTableRow[],TreeNode[]) - ✅ Added proper type definitions for data structures (GridSortConfig, DataTableRow, TreeNode)
- ✅ Improved utility types (removed 20+
anycasts) - ✅ Better DOM/React type annotations
What Changed:
ForgeDataGridProps.onSortChanged:any[]→GridSortConfig[]ForgeDataTableProps.data:Record<string, any>[]→DataTableRow[]ForgeDataTableProps.onSelectionChange:any[]→DataTableRow[]ForgeTreeViewProps.data.children:any[]→TreeNode[](recursive)createUnifiedWrapper: Improved type annotations for refs and props
Impact:
- ✅ Better IDE autocomplete and IntelliSense
- ✅ Catch type errors at compile time
- ✅ Improved developer experience
- ✅ No breaking changes (compatible types)
Remaining Work:
Some component-specific fallback renderers still useunknownfor flexibility. These are non-critical and will be addressed incrementally.- @nexcraft/forge@0.9.0
- ✅ Replaced
@nexcraft/forge-react@1.0.2
Patch Changes
-
d971b78: fix(ssr): proper SSR architecture - NO 'use client' in library files
Critical Architecture Fix:
- REMOVED 'use client' from all library files (was polluting all consumers)
- Library files stay framework-agnostic (no Next.js-specific directives)
- Consumers add 'use client' to their own files when needed
- Matches industry standard (Radix UI, Headless UI, Framer Motion)
What Changed:
- ✅ ForgeProvider: NO 'use client' (consumers add it)
- ✅ createUnifiedWrapper: NO 'use client' (consumers add it)
- ✅ Added clear documentation: "add 'use client' to your file"
- ✅ SSR demo shows correct usage pattern
Why This Matters:
- ❌ Wrong: Library has 'use client' → ALL consumers forced to client-side
- ✅ Correct: Consumers add 'use client' → They control client boundaries
Usage Pattern (Correct):
// ✅ YOUR file - add 'use client' here 'use client'; import { ForgeButton } from '@nexcraft/forge-react'; export function MyComponent() { return <ForgeButton>Click</ForgeButton>; }
Impact:
- ✅ No forced client-side rendering for all consumers
- ✅ Consumers control their own SSR/client boundaries
- ✅ Better performance (only client components when needed)
- ✅ Framework-agnostic library architecture
- @nexcraft/forge@0.9.0
@nexcraft/forge@0.9.0
Minor Changes
-
7a38d60: Add selective imports for all 28 components
- Previously only 7 components had selective imports (button, input, checkbox, select, alert, card, modal)
- Now all 28 components support selective imports for optimal tree-shaking
- Auto-discovery system ensures new components automatically get exports
- Fixes customer issue where ForgeProgress, ForgeBadge, ForgeAvatar, ForgeDropdown were missing
New selective imports available:
- ForgeAccordion, ForgeAspectRatio, ForgeAvatar, ForgeBadge
- ForgeDataGrid, ForgeDataTable, ForgeDatePicker, ForgeDropdown
- ForgeFormField, ForgeIcon, ForgeMultiSelect, ForgeNavigationBar
- ForgePagination, ForgeProgress, ForgeRadioGroup, ForgeSkeleton
- ForgeSwitch, ForgeTabs, ForgeToast, ForgeTooltip, ForgeTreeView
Usage:
import { ForgeProgress } from '@nexcraft/forge/progress'; import { ForgeBadge } from '@nexcraft/forge/badge'; import { ForgeAvatar } from '@nexcraft/forge/avatar';
Patch Changes
-
7a38d60: Refactor test suite to prevent resource contention and timeouts
- Split tests into fast unit tests (1147 tests) and slow accessibility tests (35 tests)
- Add
test:unitandtest:a11ynpm scripts for separate execution - Update
test:coverageto run both suites sequentially - Accessibility tests now run in single-fork mode to prevent timeouts
- Coverage maintained at 87% (above 70% threshold)
- All 1182 tests now pass reliably in CI without timeouts
Benefits:
- Faster test execution (unit ~13s, a11y ~3s vs previous 30s+ with timeouts)
- No more flaky accessibility test failures due to resource contention
- Better test organization for future maintenance
@nexcraft/forge-vue@1.0.1
Patch Changes
-
c074759: fix(release): build workspace packages before publishing
Critical Fix: v1.0.0 packages were published without compiled
dist/folders, making them completely unusable.Root Cause:
Release workflow only built main @nexcraft/forge package, not workspace packages (forge-react, forge-vue, forge-angular, forge-rhf).Fix:
- Add build step for all workspace packages before
changeset publish - Ensures dist/ folders exist for all packages
- Validates packages are usable after installation
Impact:
- ✅ @nexcraft/forge-react@1.0.1 will include dist/ folder
- ✅ @nexcraft/forge-vue@1.0.1 will include dist/ folder
- ✅ @nexcraft/forge-angular@1.0.1 will include dist/ folder
- ✅ @nexcraft/forge-rhf@1.0.1 will include dist/ folder
Affected Users:
Anyone who installed v1.0.0 packages encountered:Error: Cannot find module './dist/index.js'Resolution:
Upgrade to v1.0.1 when released:npm install @nexcraft/forge-react@latest npm install @nexcraft/forge-vue@latest npm install @nexcraft/forge-angular@latest npm install @nexcraft/forge-rhf@latest
Apologies:
We sincerely apologize for this critical oversight. We've added additional validation to prevent this from happening again.- @nexcraft/forge@0.9.0
- Add build step for all workspace packages before