Skip to main content
Version: Next

Release Notes

v4.0.0​

February 2026

New Features​

PropertyDef.isRequired Field​

The PropertyDef interface now includes an isRequired boolean field, allowing generated code to distinguish between required and optional properties:

import type { PropertyDef } from '@abpjs/schematics';

const property: PropertyDef = {
name: 'userName',
type: 'System.String',
typeSimple: 'string',
isRequired: true, // New in v4.0.0
};

This field is populated from the ABP API definition and is used by the code generation engine to produce accurate TypeScript interfaces with correct optional markers.


v3.2.0​

February 2026

New Features​

CLI Proxy Generation​

The package now includes a full CLI tool (abpjs) for generating typed proxy code from a running ABP backend. See Overview and CLI Reference for full documentation.

  • proxy-add — Generate proxy services, hooks, models, and enums for a backend module
  • proxy-refresh — Regenerate all previously generated modules after backend changes
  • proxy-remove — Remove a generated module

React Query Hook Generation​

Each generated service now comes with a companion React Query hook file:

  • GET endpoints become useQuery hooks with automatic query key management
  • POST/PUT/DELETE endpoints become useMutation hooks with automatic cache invalidation
  • Query key factory pattern for fine-grained cache control

EJS Template Engine​

Code generation is powered by EJS templates for services, hooks, models, and enums. Generated code uses RestService and useRestService from @abpjs/core.

Utility Functions​

New utility modules for text transforms (camel, pascal, kebab), barrel file generation, .NET-to-TypeScript type mapping, namespace resolution, and import tracking.

Changes​

Updated PROXY_WARNING Message​

The PROXY_WARNING constant now includes an important notice about npm module publishing:

import { PROXY_WARNING } from '@abpjs/schematics';

// The warning now includes guidance for publishing modules to npm:
// > **Important Notice:** If you are building a module and are planning to publish to npm,
// > some of the generated proxies are likely to be exported from public-api.ts file. In such a case,
// > please make sure you export files directly and not from barrel exports. In other words,
// > do not include index.ts exports in your public-api.ts exports.

This helps developers avoid common issues when publishing ABP modules with generated proxies to npm.


v3.1.0 (Initial Release)​

February 2026

Initial release of the schematics package, providing types and utilities for code generation in ABP React applications.

Features​

API Definition Types​

Types for parsing ABP's API definition structure:

import type {
ApiDefinition,
Module,
Controller,
Action,
Type,
PropertyDef,
ParameterInSignature,
ParameterInBody,
TypeDef,
TypeWithEnum,
InterfaceDef,
} from '@abpjs/schematics';
  • ApiDefinition - Root structure with modules and types
  • Module - Module with root path, remote service name, and controllers
  • Controller - Controller with actions and interfaces
  • Action - API endpoint with HTTP method, URL, parameters, and return type
  • Type - Type definition including enums, base types, and properties

Code Generation Models​

Classes for representing generated code:

import {
Service,
Method,
Signature,
Body,
Model,
Interface,
Property,
Import,
} from '@abpjs/schematics';

// Create a service with methods
const service = new Service({
name: 'ProductService',
namespace: 'MyApp.Products',
apiName: 'default',
});

// Create an interface model
const model = new Model({
namespace: 'MyApp.Products',
path: '/proxy/products',
});

const productInterface = new Interface({
identifier: 'ProductDto',
namespace: 'MyApp.Products',
ref: 'MyApp.Products.ProductDto',
base: null,
});

Enums​

Enums for code generation:

import {
eBindingSourceId,
eMethodModifier,
eImportKeyword,
} from '@abpjs/schematics';

// Parameter binding sources
eBindingSourceId.Body // Request body
eBindingSourceId.Path // URL path parameter
eBindingSourceId.Query // Query string parameter
eBindingSourceId.Model // Model binding

// Method modifiers
eMethodModifier.Public
eMethodModifier.Private
eMethodModifier.Protected

// Import keywords
eImportKeyword.Type
eImportKeyword.Interface

Constants​

Pre-defined constants for proxy generation:

import {
PROXY_PATH,
PROXY_CONFIG_PATH,
PROXY_WARNING_PATH,
PROXY_WARNING,
SYSTEM_TYPES,
Exception,
API_DEFINITION_ENDPOINT,
VOLO_REGEX,
VOLO_PACKAGES,
} from '@abpjs/schematics';

// Paths
PROXY_PATH // '/proxy'
PROXY_CONFIG_PATH // '/proxy/generate-proxy.json'
PROXY_WARNING_PATH // '/proxy/README.md'

// .NET to TypeScript type mapping
SYSTEM_TYPES.get('Int32'); // 'number'
SYSTEM_TYPES.get('String'); // 'string'
SYSTEM_TYPES.get('Guid'); // 'string'
SYSTEM_TYPES.get('Bool'); // 'boolean'
SYSTEM_TYPES.get('DateTime'); // 'string'

Configuration Schema​

Schema for proxy generation configuration:

import type { GenerateProxySchema, ProxyConfig, Project } from '@abpjs/schematics';

const schema: GenerateProxySchema = {
module: 'MyModule',
'api-name': 'default',
source: 'my-app',
target: 'my-app',
};

Exception Messages​

Standardized error messages with placeholders:

import { Exception } from '@abpjs/schematics';

Exception.InvalidModule // '[Invalid Module] Backend module "{0}" does not exist...'
Exception.NoApi // '[API Not Available] Please double-check the URL...'
Exception.NoProject // '[Project Not Found] Either define a default project...'
Exception.FileNotFound // '[File Not Found] There is no file at "{0}" path.'
Exception.InvalidWorkspace // '[Invalid Workspace] The angular.json should be...'

New Exports​

Types:

  • ApiDefinition, Module, Controller, Action
  • Type, PropertyDef, TypeDef, TypeWithEnum, InterfaceDef
  • ParameterInSignature, ParameterInBody
  • GenerateProxySchema, ProxyConfig, Project
  • Tree (virtual file system interface)

Classes:

  • Service, ServiceOptions, ServiceGeneratorParams
  • Method, MethodOptions
  • Signature, SignatureOptions
  • Body, BodyOptions
  • Model, ModelOptions
  • Interface, InterfaceOptions
  • Property, PropertyOptions
  • Import, ImportOptions

Enums:

  • eBindingSourceId - Body, Model, Path, Query
  • eMethodModifier - Public, Private, Protected
  • eImportKeyword - Type, Interface

Constants:

  • PROXY_PATH, PROXY_CONFIG_PATH, PROXY_WARNING_PATH, PROXY_WARNING
  • SYSTEM_TYPES - Map of .NET to TypeScript types
  • Exception - Error message templates
  • API_DEFINITION_ENDPOINT
  • VOLO_REGEX, VOLO_PACKAGES

Utilities:

  • Omissible<T, K> - Type utility for optional properties