Regeneration Flow Diagram
On Entity Save
When you save an.entity.json file, the following files are regenerated.
Regenerated Files
1. {Entity}.types.ts
TypeScript types and Zod schemas per EntityLocation:
api/src/application/{entity}/{entity}.types.tsGeneration condition: Only when Entity is first created (not auto-regenerated afterwards)user.types.ts
2. sonamu.generated.ts
Base types and Enums for the entire projectLocation:
api/src/application/sonamu.generated.tsAlways regenerated: β
3. sonamu.generated.sso.ts
Subset query functionsLocation:
api/src/application/sonamu.generated.sso.tsAlways regenerated: β
Trigger Example
On Model Save
When you save a.model.ts file, the following files are regenerated.
Regenerated Files
1. services.generated.ts
API client functions and TanStack Query hooksLocations:Generation criteria: Methods with
web/src/services/services.generated.tsapp/src/services/services.generated.ts
@api decorator in Model2. sonamu.generated.http
HTTP test file for REST ClientLocation:
api/sonamu.generated.httpAlways regenerated: β
3. queries.generated.ts
Query Options for SSRLocation:
web/src/queries.generated.tsAlways regenerated: β
Trigger Example
On Types Save
When you save a.types.ts file, schema files are regenerated and copied to targets.
.types.ts files are treated as Single Source of Truth. Changes trigger schema file regeneration, same as Entity changes.Regenerated Files
1. sonamu.generated.ts
Base types and Enums for the entire projectLocation:
api/src/application/sonamu.generated.tsAlways regenerated: β
Zod schemas defined in Types files are reflected in this file.2. sonamu.generated.sso.ts
Subset query functionsLocation:
api/src/application/sonamu.generated.sso.tsAlways regenerated: β
Regenerated together to maintain type consistency with Types changes.3. Target Copy
Modified Types file and regenerated files are copied to target projectsLocations:
web/src/services/{entity}/{entity}.types.tsweb/src/services/sonamu.generated.tsweb/src/services/sonamu.generated.sso.tsapp/src/services/...(same)
sonamu β ./sonamu.sharedTrigger Example
On Config Save
When you savesonamu.config.ts, environment variables are synchronized.
Regenerated Files
Trigger Example
On i18n File Save
When you savesrc/i18n/**/*.ts, SD files are regenerated.
Regenerated Files
1. Locale File Copy
i18n files are copied to targetsLocations:
web/src/i18n/{locale}.tsapp/src/i18n/{locale}.ts
Regeneration Matrix
A table showing file changes and regeneration relationships at a glance.| Changed File | .types.ts | sonamu.generated.ts | sonamu.generated.sso.ts | services.generated.ts | sonamu.generated.http | queries.generated.ts | entry-server.generated.tsx | .sonamu.env | sd.generated.ts |
|---|---|---|---|---|---|---|---|---|---|
| .entity.json | β (first creation) | β | β | - | - | - | - | - | - |
| .model.ts | - | - | - | β | β | β | β | - | - |
| .types.ts | copy | β | β | - | - | - | - | - | - |
| sonamu.config.ts | - | - | - | - | - | - | - | β | - |
| i18n/.ts | - | - | - | - | - | - | - | - | β |
- β = Always regenerated
- β (first creation) = Only on first creation
- copy = Copied to targets
-
- = Not regenerated
Preventing Regeneration
Modifying generated files will be overwritten on next regeneration.β Wrong Way
Directly modifying services.generated.ts
β Right Way
- Create Separate File
- Use Types File
- Handle in Model
services/user/user.custom.ts
Forcing Regeneration
How to force regeneration when files arenβt being regenerated.Checksum Reset
Specific File Regeneration
Force Overwrite
Regeneration Optimization
Tips to reduce regeneration time.Change Only Necessary Files
Change Only Necessary Files
If not changing Model APIs, modifying Entity or Types is sufficient
- Types/Entity change β Schema regeneration
- Model change β Services and HTTP file regeneration
Remove Unnecessary Targets
Remove Unnecessary Targets
Remove unused targets from
sonamu.config.tsMinimize @api Decorators
Minimize @api Decorators
Add
@api only to necessary methods- Internal methods donβt need
@api - Fewer APIs = faster regeneration
HMR Optimization
HMR Optimization
Use Node.js v22+ and SSD