Skip to main content
Sonamu automatically regenerates related files based on file changes. This document clearly explains which files are regenerated when you change each file.

Regeneration Flow Diagram

On Entity Save

When you save an .entity.json file, the following files are regenerated.

Regenerated Files

1

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

2. sonamu.generated.ts

Base types and Enums for the entire projectLocation: api/src/application/sonamu.generated.tsAlways regenerated: βœ…
3

3. sonamu.generated.sso.ts

Subset query functionsLocation: api/src/application/sonamu.generated.sso.tsAlways regenerated: βœ…
4

4. Target Copy

Above files are copied to target projectsLocations:
  • web/src/services/user/user.types.ts
  • web/src/services/sonamu.generated.ts
  • web/src/services/sonamu.generated.sso.ts
  • app/src/services/... (same)

Trigger Example

{entity}.types.ts is only auto-generated when Entity is first created. It must be manually managed afterwards.To regenerate an existing user.types.ts:

On Model Save

When you save a .model.ts file, the following files are regenerated.

Regenerated Files

1

1. services.generated.ts

API client functions and TanStack Query hooksLocations:
  • web/src/services/services.generated.ts
  • app/src/services/services.generated.ts
Always regenerated: βœ…
Generation criteria: Methods with @api decorator in Model
2

2. sonamu.generated.http

HTTP test file for REST ClientLocation: api/sonamu.generated.httpAlways regenerated: βœ…
3

3. queries.generated.ts

Query Options for SSRLocation: web/src/queries.generated.tsAlways regenerated: βœ…
4

4. entry-server.generated.tsx

SSR Entry Server codeLocation: web/src/entry-server.generated.tsxAlways 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

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

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

3. Target Copy

Modified Types file and regenerated files are copied to target projectsLocations:
  • web/src/services/{entity}/{entity}.types.ts
  • web/src/services/sonamu.generated.ts
  • web/src/services/sonamu.generated.sso.ts
  • app/src/services/... (same)
Always copied: βœ…import transformation: sonamu β†’ ./sonamu.shared

Trigger Example

On Config Save

When you save sonamu.config.ts, environment variables are synchronized.

Regenerated Files

1

.sonamu.env

Environment variable file containing API server infoLocations:
  • web/.sonamu.env
  • app/.sonamu.env
Always regenerated: βœ…

Trigger Example

On i18n File Save

When you save src/i18n/**/*.ts, SD files are regenerated.

Regenerated Files

1

1. Locale File Copy

i18n files are copied to targetsLocations:
  • web/src/i18n/{locale}.ts
  • app/src/i18n/{locale}.ts
2

2. sd.generated.ts

Sonamu Dictionary file generationLocations:
  • api/src/sd.generated.ts
  • web/src/sd.generated.ts
  • app/src/sd.generated.ts
Always regenerated: βœ…

Regeneration Matrix

A table showing file changes and regeneration relationships at a glance. Legend:
  • βœ… = 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

services/user/user.custom.ts
Advantage: Doesn’t touch generated files

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.
If not changing Model APIs, modifying Entity or Types is sufficient
  • Types/Entity change β†’ Schema regeneration
  • Model change β†’ Services and HTTP file regeneration
Remove unused targets from sonamu.config.ts
Add @api only to necessary methods
  • Internal methods don’t need @api
  • Fewer APIs = faster regeneration
Use Node.js v22+ and SSD

Next Steps

Customizing Generated Code

Safely customize generated code

Syncer

Deep understanding of Syncer system

Templates

Create custom templates

Testing

Test generated code