- Use Bun: Always use
bunfor package management and running scripts instead ofnpmoryarn.- Example:
bun install,bun run build,bun test.
- Example:
- Standalone Components: Use standalone components (
standalone: trueis default in v19+, but ensureimportsarray is used).- Import Ionic components directly from
@ionic/angular/standalone. - Example:
imports: [IonContent, IonHeader, IonTitle, IonToolbar, CommonModule]
- Import Ionic components directly from
- Dependency Injection: Use
inject()function for dependency injection instead of constructor arguments.- Example:
private db = inject(DbService);
- Example:
- Signals: Prioritize Angular Signals for state and inputs/outputs.
- Inputs:
myInput = input<string>(''); - Outputs:
myOutput = output<void>(); - Computed:
isValid = computed(() => this.count() > 0); - Effects: Use
effect()for side effects inconstructor.
- Inputs:
- Control Flow: Use the new built-in control flow syntax.
@if (condition) { ... }@for (item of items; track item.id) { ... }@switch (value) { ... }
- Icons: Register icons using
addIconsin the constructor or initialization logic. - Native Features: specific native functionality (Haptics, etc.) should be accessed via Capacitor plugins.
- Linting: Use
bun run lint. - Formatting: Use
bun run format.
- VS Code Recommendations:
- Enable Auto-fix on save for ESLint to automatically remove unused imports.
- Enable Organize Imports on save.
- Example
settings.json:"editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit", "source.organizeImports": "explicit" }