メインコンテンツにジャンプする

React機能フラグ: 完全な実装ガイド

React機能フラグの完全な実装ガイドを学びましょう。アーキテクチャパターン、ロールアウト戦略、CI/CD、およびモダンアプリケーション向けのベストプラクティスをカバーしています。

React機能フラグ: 完全な実装ガイド

あなたの機能は完成しました。プルリクエストはきれいです。QAはそれが良好であると言います。でもあなたはそれを全員に一度に配信したくないのです。

通常、Reactアプリが単純なデプロイから成長した最初の兆候は、このような感情です。一度製品に実際のユーザーがいるようになると、リリースは単に技術的イベントからリスクの決定に変わります。新しい検索UIが壊れたり、チェックアウトバリエーションがユーザーを混乱させたり、またはモバイルビルドがcodeを実行した場合、迅速に戻すことができない場合、より多くのものが必要です。 if (process.env.NODE_ENV) そして、希望があります。

それはどこから始まるか React機能フラグ 重要になるのはここからです。 その機能フラグはコンポーネント内に存在する単純なブール値ではありません。 それが、codeを別々に配信し、公開するのを避けるためのリリース制御層です。 Webアプリケーションでは、より安全なロールアウトが可能です。 また、ElectronやCapacitorなどのバンドルアプリケーションでは、ロールバックの速度がストアのレビュー、インストールの遅延、リリースサイクルの遅延によって制限されるため、より重要です。

目次

モダンなReactアプリのために機能フラグは不可欠

金曜日の午後、新しい請求明細のUIはすでにデプロイされています。サポートはリリースチェックリストを開いていますが、1つのエンタープライズクライアントは月曜まで古いフローを必要とします。ウェブアプリではすでに緊張しています。デスクトップインストーラーやモバイルストアから配信されるバンドルされたReactアプリの場合、ロールバックは分単位ではなく時間単位か日単位かかるため、状況はさらに悪化します。

Feature flags give React teams control over that moment. They let you ship the code, keep it dormant, and decide later which users should see it. That changes release work from an all-or-nothing event into a controlled operation.

機能フラグの重要性を説明するグラフィック

デプロイとリリースは異なる仕事

デプロイは「codeがプロダクションにありますか?」という答えをします。リリースは「今すぐこの行動を実行できるのは誰ですか?」という答えをします

Reactアプリが実際のトラフィック、複数の環境、収益、権限、ナビゲーションに関わる機能を持つようになると、その区別は重要になる。チームは早期にマージし、内部コホートでプロダクションでテストし、機能がすべてのユーザーに適していない場合にのみアクセスを拡大できる。Capacitorアプリ、Electronアプリ、ストアレビュー済みモバイルビルドなどのスローピースリリースプラットフォームでは、その制御はすでにユーザーの手元にあるバイナリを待たずに機能がすべてのユーザーに適していない場合にのみ機能を有効にすることができるため、さらに価値がある。

A flagは、次の3つの状況で役立ちます。

  • 制御されたロールアウト: 新しいパスを小さなグループに公開する
  • 実験: バリアントを比較するには、別々のデプロイを維持する必要がない
  • 急いでシャットダウン: リスクのある機能を無効にするには、待つ必要がない

シンプルなルールがここではうまく機能する。プロダクションで問題が起こり、逆算が高価になる場合は、そのcodeをフラグで保護する。

フラグに慣れていないチームはUI条件付きで止まることが多い。 flag ? <NewUI /> : <OldUI /> それは可視的な部分ですが、実際には面白い部分ではありません。フラグの本質的な価値は、運用上のものです。リモート設定、決定論的ターゲット、機能を急いで無効にする能力が、フラグがプロダクションで役立つのはそれらです。Reactアプリがアプリ全体の実行時設定も必要な場合は、__CAPGO_KEEP_0__アプリ用のリモート設定プラグイン 制御されたロールアウト:新しいパスを小さなグループに公開する実験:バリアントを比較するには別々のデプロイを維持する必要がない急いでシャットダウン:リスクのある機能を無効にするには待つ必要がないA simple rule works well here. If a production issue would be expensive to reverse, ship that Capacitor behind a flag. Teams new to flags often stop at the UI conditional. is the visible part, but it is not the interesting part. Its core value is operational. Remote configuration, deterministic targeting, and the ability to shut off a feature quickly are what make flags useful in production. If your React app also needs app-wide runtime settings, a remote config plugin for Capacitor apps 同一のリリース管理モデルに適合します。

フラグは信頼されていない場合、役に立たなくなります。

フロントエンドコードベースの成長を観察しているのですが、同じ失敗パターンが見られます。チームはフラグを急速に追加し、環境間で名前がずれ、デフォルト値が設定ミスを隠し、誰もが「オン」がグローバルにオン、スタッフ用にオン、またはステージングでオンのみを意味するのかわかりません。そうすると、フラグシステムはリスクを生み出すのではなく、リスクを軽減するようになります。

型安全性は役に立つものの、問題の全てを解決するものではありません。チームは明確なレジストリ、所有者、そしてアプリ全体でフラグを評価するための一貫した方法が必要です。そうしないと、Reactコンポーネントはロールアウト状態についてローカルな仮定を立て、ロールアウトや部分的なロールバック中にそれらの仮定が破綻することになります。

違いは簡単にわかります:

用途 コンテキスト 強化版
UIスイッチ コンポーネントのローカルブール値 所有者とロールアウトルールを持つリモートフラグ
リリース安全性 手動デプロイロールバック リモート設定による即時無効
実験 アドホックブランチ比較 安定したコホート割り当てと測定可能な露出

重要な考え方のシフトは単純です。 Reactの機能フラグはリリースプロセスに属します。JSXだけではありません。 そう扱うことが特に、ビルドを出荷するのが遅いアプリケーションでは、リリースプロセスに属するものとして扱うことが特に重要です。そうすることで、生産性が低下したときに、影響範囲を最小限に抑えることができる唯一のツールになります。

Reactアプリケーションの機能フラグの設計

設計の重要性は最初のフラグよりも大きい。フラグをランダムなコンポーネントに直接接続すると、論理の重複、ロードのフリッカー、信頼できるソースの特定が困難なコードベースが生まれます。

ランタイムプロバイダーを使用せずに散在した条件分岐を使用しない

Reactアプリケーションでは、信頼できるアプローチはフラグを ランタイムデータ. Guidance for React flagging recommends three things: evaluate flags on the server or in a local SDK cache, persist cohort assignment deterministically, and render the final UI state before hydration or use anti-flicker protection so users don’t see the wrong default first (React フラグ法).

それが、code の場所を変える。フラグの読み込みをアプリのルート近くに置く。フラグの消費を簡単にする。葉のコンポーネント内でフラグを取得しないようにする。

実用的な形は次のようになります。

  1. メインツリーがレンダリングされる前にフラグをロードまたはハイドレートする。
  2. プロバイダーを通じて公開する。
  3. 1 つのホックまたは 1 つのラッパーペターを通じて読み取る。
  4. プレゼンテーショナルコンポーネントから評価ロジックを外す。

アプリ全体の設定やフラグのためのリモート設定層が必要な場合は、Hybrid React アプリで自然に合致するようにこのパターンとともに使用できるツールとして __CAPGO_KEEP_0__ リモート設定プラグインが適している。 Capacitor remote config plugin このパターンは、一般的に推奨するデフォルトパターンです。明確でテストしやすく、後でベンダーを切り替える場合に簡単に移行できる。

パターン 2: Redux と Redux Hooks

パターン 3: MobX と MobX State Tree

import React, { createContext, useContext, useMemo } from 'react';

type FlagValue = boolean | 'control' | 'variant-a' | 'variant-b';

type Flags = {
  newCheckout: boolean;
  checkoutExperiment: FlagValue;
  deleteTaskEnabled: boolean;
};

const defaultFlags: Flags = {
  newCheckout: false,
  checkoutExperiment: 'control',
  deleteTaskEnabled: false,
};

const FeatureFlagContext = createContext<Flags>(defaultFlags);

export function FeatureFlagProvider({
  flags,
  children,
}: {
  flags: Flags;
  children: React.ReactNode;
}) {
  const value = useMemo(() => flags, [flags]);
  return (
    <FeatureFlagContext.Provider value={value}>
      {children}
    </FeatureFlagContext.Provider>
  );
}

export function useFeatureFlag<K extends keyof Flags>(key: K): Flags[K] {
  return useContext(FeatureFlagContext)[key];
}

使用方法は面白くないままなので、それが望ましいことです:

function DeleteTaskButton() {
  const enabled = useFeatureFlag('deleteTaskEnabled');

  if (!enabled) return null;
  return <button>Delete task</button>;
}

このパターンは、コンポーネントが最終的な答えを求めるだけなので、よく機能します。コンポーネントは、答えがどのように計算されたかについては気にしません。

2 番目のパターンは、より高階のコンポーネントを使用します。

A 高階コンポーネント は、ルート要素やレガシークラスコンポーネントをすべての場所でハックを追加せずにゲートする場合に便利です。

import React from 'react';
import { useFeatureFlag } from './FeatureFlagProvider';

export function withFeatureFlag<P>(
  flagKey: 'newCheckout' | 'deleteTaskEnabled',
  Fallback?: React.ComponentType<P>
) {
  return function wrap(Component: React.ComponentType<P>) {
    return function FeatureFlaggedComponent(props: P) {
      const enabled = useFeatureFlag(flagKey);

      if (!enabled) {
        return Fallback ? <Fallback {...props} /> : null;
      }

      return <Component {...props} />;
    };
  };
}

使用方法:

const CheckoutPage = () => <div>New checkout</div>;
const LegacyCheckoutPage = () => <div>Legacy checkout</div>;

export default withFeatureFlag('newCheckout', LegacyCheckoutPage)(CheckoutPage);

欠点は、間接性です。モダンな React では、ハックはより簡単に追跡できますが、HOC は DevTools でコンポーネントツリーを汚染する可能性があります。ただし、ルートレベルのゲーティングの場合、綺麗です。

コンポーネントはロールアウトポリシーを決定するのを許可しないでください。コンポーネントはフラグの結果を受け取り、バケット化、ユーザー対象化、キャッシュリフレッシュルールを実装するのではなく、ください。

React フィーチャーフラグ パターンを比較する

基準 コンテキスト + ハック ハイオーダー コンポーネント (HOC)
最適な使用例 コンポーネントレベルの決定とバリアント フルページ、ルート、またはレガシーコンポーネントをラッピング
柔軟性
開発者エクスペリエンス 現代の関数コンポーネントでは強い フックが不便な場合に役立つ
バンドル明確性 明確なインポートと直接的な読み取り 抽象化のレベルを上げる
テスト プロバイダーを通じて簡単にモックできる ラッピングされた統合ケース用に簡単
長期的なメンテナンス性 通常は sparingly使用する場合

最初にReact機能フラグを実装する場合、 コンテキスト+フック. HOCを追加するのは、ラッピングスタイルのゲーティングの特定のニーズがある場合のみ

ロールアウトとロールバック戦略の実装

ロールアウト計画は、リリース後機能が不正動作したときに最も重要です。UIは新しいボタンまたは画面を表示するだけかもしれませんが、最初に誰がそれを見るか、露出の速度がどれくらいか、そして再デプロイを待たずに停止することができるかということが大切です。特に、モバイルまたはデスクトップのパッケージ内にReactアプリを配布する場合、ロールバックはリモート設定に依存することが多く、App Storeのレビューまたはデスクトップの配布には時間がかかるためです。

A software feature flag rollout and rollback diagram from internal to global release.

ユーザー割り当てが固定されていなければ、パーセンテージロールアウトは機能しません。

パーセンテージロールアウトは、割り当てが安定していない場合にのみ機能します。同じユーザーが1回訪問で新しいチェックアウトを、次の訪問で古いチェックアウトを受け取った場合、サポートは問題を再現できません。分析はノイズが増し、ユーザーは信頼を失います。

安定した識別子とフラグキーを組み合わせた決定論的ハッシュでユーザーをバケット化するだけです。ユーザーIDは通常の入力になります。匿名セッションでは、インストールIDまたはデバイスIDを使用できます。 Math.random() ブラウザ内ではユーザーを予測不能に再割り当てするため、間違ったツールです。

実用的ロールアウトパスは次のようになります。

  • 内部ユーザーとQAから始めます。
  • 小規模なコホートにリリースします。
  • エラー率、変換率の影響、サポートチケットを確認した後、意図的に段階的に拡大します。
  • フラグの全生涯で割り当てを固定してください。

最後の点は、簡単に過小評価されることがあります。スティッキーコホートは、実験のみに使われるものではありません。インシデント対応を高速化するため、エンジニアはすぐに基本的な質問に答えることができます:どのユーザーが影響を受けたか?

実験を実行する場合、サイズを事前に調整してください。Optimizelyのサンプルサイズ計算ツールは、トラフィックボリューム、ベースライン変換率、最小検出効果が必要なユーザー数を変異体あたりのユーザー数にどのように影響するかを示しています。Optimizelyサンプルサイズ計算機. そのチェックがない場合、チームはノイズを信号と見なし、機能を早すぎて推進することがよくあります。

ブラウザ外のステージドアップデートのための便利な参照は Capacitorライブアップデートのフェーズドロールアウト. 同じリリースディスクiplineは、パッケージされたシェル内で実行されるReactアプリにも適用されます。バイナリロールバックが遅いためです。

ターゲットリリースとリングベースリリースは、爆発半径を減らします。

いくつかの機能は、ランダムなパーセンテージで始めるべきではありません。請求フロー、承認プロンプト、データ移行、ユーザーをロックアウトする可能性のあるものなど、ターゲットリリースが必要なものは多いです。

ターゲットリリースは、最初のアウディエンスが既知の特性で定義されている場合にうまく機能します:

  • 内部スタッフのためのドッグフード
  • 粗いエッジに同意したベータテスター
  • 特定のアカウント階層
  • 法律または言語要件が異なる地域
  • 機能を安全にサポートするデバイスやアプリのバージョン

リングベースのリリースにより、ターゲットをより実行可能にします。Ring 0は従業員です。Ring 1は信頼できる外部テスターです。後続のリングは信頼性が向上するにつれて露出を拡大します。この構造は、リスクが明らかに不均等であるため、ユーザーを1つのプールとして扱う一般的な間違いを回避するのに役立ちます。

ここに、このリリースモデルと組み合わせて機能する埋め込みウォークスルーがあります。

リスクのある機能には、機能フロー全体を無効にするトップレベルのオペレーショナル フラグが必要です。

リスクのある機能には、機能フロー全体を無効にするトップレベルのオペレーショナル フラグが必要です。

リリース前にキルSwitchを設計する

  • アプリ起動の早い段階で評価する
  • 最後の安全な値をキャッシュする
  • フラグサービスが利用できない場合に安全なデフォルト値を選択する
  • 機能を無効にすることで、サイドエフェクトを停止するようにする
  • インシデントの際にフラグを切り替えることができる人をドキュメントする

Webアプリのみの場合、リリースリスクを減らすことができます。モバイルとデスクトップのReactアプリの場合、間違ったバージョンをユーザーに提供するのを待つのではなく、修正されたバージョンをユーザーに提供することができます。codeがすでにバンドルに含まれている場合、リモートフラグはロールバック戦略の一部になります。

機能観察とフラグの負債管理

機能フラグの簡単な部分は、1つを追加することです。費用の高い部分は、多くのフラグが存在し、誰もそのうちどれがまだ重要であるかを覚えていないときが始まります。

モダンなサーバールーム

各フラグは、信頼できる状態の数を倍増させます

マーティン・フラワーの警告はまだ有効です:機能フラグが存在すると、チームは両方の状態を検証する必要があります オン オフ マーティン・フラワーの機能スイッチに関する話 機能フラグの存在は、Reactアプリケーションに直接影響します:条件付きレンダリングのパスは、急速に広がります:).

__CAPGO_KEEP_0__

  • __CAPGO_KEEP_1__ 複数のブランチが存在する場合、ユーザーはそれらを認識するまでに1ページに複数のバージョンを表示できます。
  • Hydration の不一致がトリガーされるようになりました。 クライアントとサーバーは評価のタイミングが間違っているときに異なる値を返すことがあります。
  • サムネイルテストは単独ではあまり役に立たなくなります。 ハッピーパスを実行すると、反対のフラグの状態がテストされていない場合、実行結果はあまり意味をなさない。

実験用のテストスタックは以下のようになります。

  1. 単位テストで評価ロジックをテストする。
  2. コンポーネントテスト用キーのフラグ付けされたブランチ。
  3. エンドツーエンドのカバレッジを、リスクのあるパスのみに追加してください。
  4. デフォルトのフォールバックを明示的に検証する。

すべての組み合わせを目指すのではなく、ユーザーに損害を与える可能性のある状態やレイアウトを崩す可能性のある状態をテストすることが重要です。

フラグの負債は実際に存在し、安く見えながらも費用が高くなる

古いフラグはcodeの状態になります。条件分岐、コメント、ダッシュボード、実行書に残ります。すると、誰かが数ヶ月後に「一時的な」ブランチを編集することになりますが、そのフラグを消すことは誰もしていません。

実践で機能するクリーンアップルールは簡単です。

問題 対処する方法
フラグの所有者がいない フラグを作成したときにチームまたは人を割り当てる
終了状態がない フラグを削除する、保存する、または設定に変換することを決定する
フラグが制御範囲が広すぎる フラグを小さく、狭いフラグに分割する
コアロジックがフラグの背後で隠れている ビジネスロジックをレンダリング条件分岐から外す

Cleanup rule: 初期設定の際には、各フラグには所有者、目的、廃止計画が必要です。

チームが「信頼」問題に陥るのはここです。フラグ名は存在しますが、フォールバックが間違っています。ダッシュボードのエントリが変更されたが、アプリタイプが変わりませんでした。code パスは死んでいますが、まだアクセス可能です。そのため、大規模システムでは、初期実装が単純に見えていても、タイプ生成とレジストリ検証が重要です。

観測性は、フラグが機能したか、ただ存在したかを教えてくれます。

ロールアウトは、フラグが完全に露出した時点で終了しません。チームが何が起こったかを知るまで終了しません。

少なくとも次の質問を追跡してください:

  • 露出: どのユーザーがどのバリアントを視認したか?
  • エラー: フラグされたパスがクライアントサイドのエラーを引き起こしたか?
  • 採用: ユーザーが公開された機能を使用したか?
  • ロールバック信号: どの閾値がオフにしますか?

フラグプラットフォームがその質問に答えなければならない場合、リリースレビュー中はまだ推測することになります。

フラグのセキュリティとCI/CDの自動化

codeの変更は明らかですが、フラグの変更は静かで、危険な場合もあります。なぜなら、codeの変更はリリースレビューのパスを通らなくても、実行中のビヘイビアを変更するからです。

フラグの変更を実行中の変更と同じように扱う

フラグはリリースの制御です。チームが実行中のフラグを切り替えられる場合、そのチームはユーザーが受け取るもの、実行中のパス、そして時々、統合が発火するものを変更できます。そのような権限は、デプロイアクセスと同じ規制を必要とします。

Feature flags are release controls. If a team can flip a flag in production, that team can change what users get, what code paths run, and sometimes which integrations fire. That deserves the same discipline as deploy access.

ロールベースのアクセス制御:

  • 実行中のフラグを変更できる人を制限し、読み取りアクセスと編集アクセスを分離する 監査ログ:
  • Audit logs: 変更者、変更時刻、変更した環境を明確に記録しておくこと。
  • 環境隔離: ステージング、プレビュー、生産用のフラグは区別しておく。テストの変更が実稼動に影響しないようにするため。
  • サーバー側のチェックで敏感な決定を取る: クライアントフラグはUIを非表示にすることができるが、請求アクセス、特典、認証などは決定するべきではない。

フラグダッシュボードを共有スプレッドシートのように扱うのは誤りだ。製品は顧客に機能を有効にする。サポートは不正解消のために機能を無効にする。エンジニアはデプロイがなかったので誰も機能を変更していないと考えている。しかしその設定は、インシデントを説明する必要があるときに機能しない。

バンドルアプリではリスクが高くなる。ウェブアプリでは、codeの修正が迅速に配信できるが、Capacitorやデスクトップアプリでは、codeの機能がすでにデバイスにインストールされており、リモートフラグで機能を公開するまで待たなければならない。codeで開発している React mobile apps with Capacitor フラグの操作をパイプライン内に含める:

フラグが外部に存在すると信頼性が低くなる。機能を同様のワークフローで管理することで、より安全なパターンを実現できる。

通常は次のことを意味する。

__CAPGO_KEEP_0__はWebアプリケーション

  • codeの作成または更新を、同じPRで実行します。
  • CI中でリモートレジストリと型付きのフラグ定義を検証します。
  • __CAPGO_KEEP_0__のデフォルト値を環境ごとに意図的に設定します。
  • 必要なフラグが欠落または不正設定の場合、リリースをブロックします。
  • 期限切れまたはロールアウト終了状態のフラグのクリーンアップタスクをスケジュールします。

生産停止の原因となる可能性のあるフラグが存在する場合、CIはリリース前にセットアップを検出できるようにするべきです。そのうちのいくつかは、デフォルト値が欠落している、キー名が変更されている、環境マッピングが古くなっている、codeに存在するがコントロールプレーンに存在しないフラグです。

パイプライン構造のスターティングポイントが必要な場合は、 Git Action CI/CDワークフローの ビルドチェック、デプロイゲート、フラグ検証のための自動化ステップを拡張できる参考になります。

SDKの秘密と選択肢を面白くしないでください。

フロントエンドチームは、フラグのセキュリティを過度に複雑にし、明らかな部分を無視することがあります。ブラウザで使用することを意図したSDKのクライアントサイドキーは通常問題ありません。管理トークン、書き込みクレデンシャル、環境管理キーのようなものはありません。CIまたはバックエンドサービスのみに属するものです。

実用的には、簡単なルールがあります。ローカルJavaScriptに任せることができない価格、権限、センシティブフローのキルSwitchなど、ローカルJavaScriptに任せることができないものはServer-Sideで評価する必要があります。

スローモードの環境では、境界はより重要です。 Web チームは、迅速なデプロイで回復できます。 Mobile と Desktop チームは、フラグ システムを回復機構として必要とします。 wrong 人がプロダクション フラグを編集できる場合、または CI がフラグ契約を検証しない場合、ロールバックは迅速に汚れます。

Web フィーチャーフラグの Capacitor とモバイル アプリの向上

ほとんどの React フィーチャーフラグの記事は、即座に再デプロイできる Web アプリを前提としています。 その仮定は、React code が code 内に住んでいる場合にすぐに破棄されます。 Capacitor, コンテキスト: Live updates product page. 役割: セクションまたはページヘッダー。 見られる場所: page live-update.astro。 保存する Capgo の製品/ブランド名と開発者用語は、完全にそのままです。Electron

コンテキスト: Live updates product page. 役割: セクションまたはページヘッダー。 見られる場所: page live-update.astro。 保存する Capgo の製品/ブランド名と開発者用語は、完全にそのままです。

、または別のバンドルされたランタイム。

A recent discussion around hybrid release strategy pointed out that existing React flag content rarely addresses the release-risk model for Capacitor or Electron apps. For those teams, the primary need is a release orchestration layer that combines flags, targeted channels, and rollback protection instead of a simple on/off switch, especially when avoiding store review delays matters (ハイブリッド アプリでは、ユーザーがすぐに更新しないようにするために、JavaScript、CSS、アセット、設定を含むバンドルを送信することがよくあります。 フィーチャーはすでにデバイス上に存在する場合、誰もが使用する前にそれを実行したいと考える場合、フラグの役割は完全に変わります。).

最近のハイブリッド リリース戦略に関する議論では、すでに存在する React フラグのコンテンツが __CAPGO_KEEP_0__ または Electron アプリのリリースリスクモデルを十分に扱っていないと指摘されました。 そのチームにとって、主なニーズは、フラグ、ターゲット チャンネル、ロールバック保護を組み合わせたリリース オーケストレーション レイヤーです。 特に、ストアのレビュー遅延を避けることが重要な場合、単純なオン/オフ スイッチではありません。 ハイブリッド アプリ リリースリスクの議論.

モバイルまたはデスクトップのReactアプリでは、フラグはリリースタイミングをUIの表示よりも制御することが多い。

このチャネルベースの配布は、hybridアプリを構築する場合に重要です。アプリのシェルとウェブcodeリリースモデルが一緒に機能するように必要な場合があります。 creating React mobile apps with Capacitor 実践的なスタートポイントです。

フラグは、更新配信と組み合わせることで最も効果的です。

モバイルとデスクトップのチームにとって、フラグだけではすべてのリリースの問題を解決することはできません。フラグはcodeパスを非表示または有効にすることができますが、既にバンドルにバグが含まれている場合には、修正されたアセットやロジックを配信することはできません。

そのため、より強力なモデルは次のようになります。

  • プラットフォームが許可する場合、フルストアサイクル外でcodeの更新を提供することができます。
  • チャンネルまたは対象者を対象にしたアップデートを取得する
  • フラグを使用して、有効化、ロールバック、およびステージング公開の制御を行います。

ウェブスタイルのリリース管理に近い制御を、ハイブリッドチームはライブ更新とフラグを組み合わせて得ることができます。 それが必要な理由をなくすわけではありません。ただ、問題が発生したときに、より多くの調整が可能になります。


チームが Capacitor または Electron アプリをリリースする必要がある場合、リリース管理層が必要になります。 Capgo CapgoのPRを送信する

React機能フラグの実装ガイド

Capgoを使用している場合 React機能フラグの実装ガイド Capgoを使用して チャンネル Capgoのリリースチャンネル機能名 Capgoのリリースチャンネル機能名 Capgoのリリースチャンネル機能名 Capgoのリリースチャンネル機能名 Capgoのリリースチャンネル機能名 ベータテスト ソリューション ベータテスト ソリューションにおける製品ワークフローについて、 バージョン ターゲット ソリューション バージョン ターゲット ソリューションにおける製品ワークフローについて。

リアルタイム更新のCapacitorアプリ

When a web-layer bug is live, ship the fix through Capgo instead of waiting days for app store approval. Users get the update in the background while native changes stay in the normal review path.

マーティンさんによる人間のサポート

スタートする

最新のブログ

Capgoは、プロフェッショナルなモバイルアプリを作成するために必要な最良の洞察を提供します。