はじめに
@rdlabo/ionic-angular-kit は、型付きStorage、型付きOverlay、Ionic Signal Forms adapterを提供するIonic Angular向けの共有アプリケーション基盤です。製品固有の画面、ドメインポリシー、翻訳は利用側アプリに残します。
npm install @rdlabo/ionic-angular-kit
まず設定を保存してみる
既存のIonic Angularアプリで、Ionic Storageのproviderを既存のapp configへmergeしてください。他のproviderを置き換えないでください。
import { importProvidersFrom, type ApplicationConfig } from '@angular/core';
import { IonicStorageModule } from '@ionic/storage-angular';
export const appConfig: ApplicationConfig = {
providers: [importProvidersFrom(IonicStorageModule.forRoot({ name: '__mydb' }))],
};
次に、このstandalone componentを追加します。
import { Component, inject, signal } from '@angular/core';
import { IonButton } from '@ionic/angular';
import { disableHandler, KitStorageService } from '@rdlabo/ionic-angular-kit';
@Component({
selector: 'app-preferences-demo',
imports: [IonButton],
template: `<ion-button type="button" (click)="disableHandler($event, save())">Save preference</ion-button><p>{{ result() }}</p>`,
})
export class PreferencesDemo {
private readonly storage = inject(KitStorageService);
readonly result = signal('');
readonly disableHandler = disableHandler;
async save(): Promise<void> {
await this.storage.set('theme', 'dark');
this.result.set((await this.storage.get<string>('theme')) ?? '');
}
}
既存ページに <app-preferences-demo> を描画します(そのstandalone pageの imports に PreferencesDemo を追加)。Save preference をクリックすると dark が表示されます。KitStorageService がStorageを自動初期化するため、手動の初期化は不要です。
要件
| Package | 対応version |
|---|---|
| Angular | 21.x〜22.x |
| Ionic Angular | 9.x |
| RxJS | 7.8.x |
| Capacitor Core, App, Haptics, Keyboard, Network | 7.x〜8.x |
| iOS/iPadOS deployment target | 16.4以降 |
Core packageは @ionic/storage-angular とCapacitor Core、App、Haptics、Keyboard、Networkを必須peerとして宣言しています。アプリがcore entry pointの一部しか使わない場合も、互換versionをinstallしたままにしてください。/offline を使うNativeアプリでは、Capacitor majorに合う @capacitor-community/sqlite もinstallして設定する必要があります。これはアプリが所有し、Kitからはinstallされません。
Firebase、Social Login、Live Update、Preferences、Status Bar、In-App Review、Printer/PDFの依存は任意機能のpeerです。選択したsecondary entry pointが使う依存だけをinstallし、各plugin固有の互換範囲に従ってください。一部の任意pluginはCapacitor 8だけをサポートします。
Entry point
| Import | 役割 |
|---|---|
@rdlabo/ionic-angular-kit |
Storage、Overlay、Guard、HTTP、Realtime、Directive、Keyboard、Utility |
@rdlabo/ionic-angular-kit/offline |
Experimental. Scoped Local Replica、Outbox、Pull、Replay、Request Policy |
@rdlabo/ionic-angular-kit/theme |
Light/Dark Theme永続化とNative Status Bar同期 |
@rdlabo/ionic-angular-kit/forms |
Angular Signal Forms向けのIonic error textとstate class |
@rdlabo/ionic-angular-kit/review |
頻度制御付きNative In-App Review |
@rdlabo/ionic-angular-kit/printer |
DOM-to-PNG、Brother Label、PDF helper |
@rdlabo/ionic-angular-kit/auth-firebase |
Firebase依存配線と認証Flow |
@rdlabo/ionic-angular-kit/app-update |
Angular Service Workerのatomicなupdate transition |
@rdlabo/ionic-angular-kit/live-update |
Capawesome Live Update readiness provider |
Secondary entry pointにより、任意のNative依存・SDKをcore bundleから分離します。
/offline entry point全体はExperimentalで、KitのSemVer互換性保証の対象外です。安定化するまでは、public API、永続化schema、同期動作がminorまたはpatch releaseで互換性なく変更される可能性があります。採用時はKitをexact versionに固定し、upgradeのたびにmigration guideを確認してください。
必要な機能だけを設定する
多くの機能はproviderのcallbackを通じ、route、文言、credential、アプリ固有の副作用をKit外に保ちます。まずStorage・Overlayとフォームから始めてください。