Project Awesome project awesome

Forms > ng-forge

A type‑safe, dynamic forms library built for Angular’s signal‑based forms.

Package 74 stars GitHub

ng-forge Dynamic Forms

Stop writing repetitive form code.
Build type-safe, dynamic Angular forms in minutes, not hours.

CI npm version npm downloads License: MIT GitHub stars Discord

📚 Documentation🚀 Getting Started🔁 Migrating from ngx-formly💬 Discord🐛 Issues

Coming from ngx-formly? ng-forge is built on Angular Signal Forms — see the side-by-side migration guide for a concept-by-concept mapping with full working code on both sides.


⚡ Quick Start

npm install @ng-forge/dynamic-forms @ng-forge/dynamic-forms-material
// app.config.ts
import { provideDynamicForm } from '@ng-forge/dynamic-forms';
import { withMaterialFields } from '@ng-forge/dynamic-forms-material';

export const appConfig: ApplicationConfig = {
  providers: [provideDynamicForm(...withMaterialFields())],
};
// component.ts
import { DynamicForm, type FormConfig, type InferFormValue } from '@ng-forge/dynamic-forms';

@Component({
  imports: [DynamicForm],
  template: `<form [dynamic-form]="config"></form>`,
})
export class LoginComponent {
  config = {
    fields: [
      { key: 'email', type: 'input', value: '', label: 'Email', required: true, email: true },
      { key: 'password', type: 'input', value: '', label: 'Password', required: true, minLength: 8, props: { type: 'password' } },
      { type: 'submit', key: 'submit', label: 'Sign In' },
    ],
  } as const satisfies FormConfig;
}

✨ Features

Signal Forms – Native Angular 21+ signal forms integration

🎯 Type-Safe – Full TypeScript inference for form values

🎨 UI Agnostic – Material, Bootstrap, PrimeNG, Ionic, or custom

Validation – Shorthand validators and conditional validation

🎭 Conditional Logic – Dynamic field visibility and requirements

📄 Multi-Step Forms – Built-in wizard and pagination support

🌍 i18n Ready – Observable/Signal support for labels and messages

⚠️ Compatibility

Experimental API Notice: This library uses Angular's experimental Signal Forms API. Angular may introduce breaking changes in patch releases.

@ng-forge/dynamic-forms Angular
0.8.x >=21.2.0
0.7.x >=21.2.0
0.6.x >=21.1.0
0.5.x >=21.1.0
0.4.x >=21.1.0
0.3.x 21.0.7-21.0.x
0.2.x 21.0.6
0.1.1+ 21.0.2-21.0.5
0.1.0 21.0.0-21.0.1

📦 Packages

Package Description
@ng-forge/dynamic-forms Core library
@ng-forge/dynamic-forms-material Material Design
@ng-forge/dynamic-forms-primeng PrimeNG
@ng-forge/dynamic-forms-ionic Ionic
@ng-forge/dynamic-forms-bootstrap Bootstrap 5

📖 Documentation

🛠️ Development

git clone https://github.com/ng-forge/ng-forge.git && cd ng-forge
pnpm install
pnpm run build:libs
pnpm run test
pnpm run serve:docs

See Developer Guides for architecture docs, testing strategy, and creating UI adapters.

🤝 Backers

A huge thank you to the following supporters of ng-forge! 🙏

scottmccaughey

📄 License

MIT © ng-forge


⭐ Star us on GitHubJoin our DiscordReport an Issue

Back to Angular