as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート

shopify-react-native-performance

shopify-react-native-performance

@amazon-devices/shopify__react-native-performanceは、アプリのさまざまなフローでレンダリング時間を計測するためのライブラリです。

インストール

  1. package.jsonファイルにJavaScriptライブラリの依存関係を追加します。

    クリップボードにコピーしました。

     "dependencies": {
         ...
         "@amazon-devices/react-navigation__native": "~2.0.0",
         "@amazon-devices/react-navigation__stack": "~2.0.0",
         "@shopify/react-native-performance": "npm:@amazon-devices/shopify__react-native-performance@~2.0.0"
     },
    
  2. npm installコマンドを使用して、依存関係を再インストールします。

クリップボードにコピーしました。


import React, {
  Dispatch,
  ReactNode,
  SetStateAction,
  createContext,
  useCallback,
  useContext,
  useState,
} from 'react';
import { StyleSheet, Text, View } from 'react-native';
import { NavigationContainer } from '@amazon-devices/react-navigation__native';
import { createStackNavigator } from '@amazon-devices/react-navigation__stack';
import {
  RenderPassReport,
  PerformanceMeasureView,
  PerformanceProfiler,
} from '@shopify/react-native-performance';

interface ReportContextType {
  report: RenderPassReport | undefined;
  setReport: Dispatch<SetStateAction<RenderPassReport | undefined>>;
}

const ReportContext = createContext<ReportContextType | null>(null);

interface ReportProviderProps {
  children: ReactNode;
}

const ReportProvider = ({ children }: ReportProviderProps) => {
  const [report, setReport] = useState<RenderPassReport>();

  return (
    <ReportContext.Provider value={{ report, setReport }}>
      {children}
    </ReportContext.Provider>
  );
};

const Stack = createStackNavigator();

const NavigationTree = () => {
  const { setReport } = useContext(ReportContext) as ReportContextType;

  const onReportPrepared = useCallback(
    (report: RenderPassReport) => {
      setReport(report);
    },
    [setReport],
  );

  return (
    <PerformanceProfiler onReportPrepared={onReportPrepared}>
      <NavigationContainer>
        <Stack.Navigator initialRouteName="HomeScreen">
          <Stack.Screen name="HomeScreen" component={HomeScreen} />
        </Stack.Navigator>
      </NavigationContainer>
    </PerformanceProfiler>
  );
};

const HomeScreen = () => {
  const { report } = useContext(ReportContext) as ReportContextType;

  return (
    <PerformanceMeasureView screenName="HomeScreen" interactive>
      <View style={styles.container}>
        <Text style={styles.text}>ホーム画面</Text>
        {report ? (
          <>
            <Text style={styles.text}>Render pass report:</Text>
            <Text style={styles.text}>
              {JSON.stringify(report, undefined, 4)}
            </Text>
          </>
        ) : (
          <Text style={styles.text}>No render pass report generated</Text>
        )}
      </View>
    </PerformanceMeasureView>
  );
};

export const App = () => {
  return (
    <ReportProvider>
      <NavigationTree />
    </ReportProvider>
  );
};

const styles = StyleSheet.create({
  container: {
    backgroundColor: '#fff',
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
  },
  text: {
    fontSize: 30,
    fontWeight: '500',
  },
});

APIリファレンス

このライブラリの情報、APIリファレンス、その他の詳細については、 公式ドキュメントのshopify/react-native-performance(英語のみ)を参照してください。

コンポーネント

コンポーネント 説明 対応プラットフォーム
PerformanceProfiler パフォーマンス指標を収集するコンポーネントです。アプリツリーの上位にマウントする必要があります。 すべて
PerformanceMeasureView ラップされた画面またはコンポーネントのパフォーマンスデータを測定するラッパーです。 すべて
PerformanceMarker パフォーマンス測定の目的で、アプリケーション内の特定のポイントにマークを付けることができる、内部ユーティリティコンポーネントです。 すべて

PerformanceProfilerのプロパティ

プロパティ 説明 対応プラットフォーム
onReportPrepared パフォーマンスレポートが作成されたときに呼び出されるコールバックです。パフォーマンスデータをカスタムの方法で処理するために使用できます。 すべて
renderTimeoutMillis レンダリング操作がタイムアウトしたと見なすまでの待機時間をミリ秒単位で指定します。 すべて
errorHandler プロファイリングプロセス中に発生したエラーを処理するコールバックです。 すべて
enabled プロファイラーを有効または無効にするフラグです。環境や条件に基づいてプロファイリングを制御するのに役立ちます。 すべて
useRenderTimeouts 長いレンダリングまたは停止したレンダリングの検出に、レンダリングタイムアウトを使用するかどうかを決定します。 すべて
logLevel プロファイラーのロギングレベルを設定し、プロファイラーによって生成されるログの詳細度を制御します。 すべて

PerformanceMeasureViewのプロパティ

プロパティ 説明 対応プラットフォーム
screenName ラップされた画面やコンポーネントの名前または識別子です。ビュー固有のパフォーマンス指標の分類と識別に役立ちます。 すべて
optimizeForSlowRenderComponents レンダリングが遅いコンポーネントに対して最適化するかどうかを示すフラグです。 すべて
slowRenderPlaceholder メインコンポーネントのレンダリングに時間がかかりすぎる場合に、レンダリングするプレースホルダーコンポーネントです。 すべて
interactive 測定中のコンポーネントがインタラクティブかどうかを示します。 すべて
renderPassName レンダリングパスの名前です。 すべて

PerformanceMarkerのプロパティ

プロパティ 説明 対応プラットフォーム
componentInstanceId マークされているコンポーネントのインスタンスを示す一意の識別子です。 すべて
renderPassName レンダリングパスの名前です。 すべて
interactive マークされているコンポーネントがインタラクティブかどうかを示します。 すべて
destinationScreen レンダリングプロセスによって導かれる宛先画面またはコンポーネントの名前です。 すべて
style PerformanceMarkerコンポーネントに適用する追加のスタイルです。 すべて
onRenderComplete マークされたコンポーネントのレンダリングの完了時にトリガーされるコールバックです。 すべて

フック

フック 説明 対応プラットフォーム
useComponentInstanceId 内部ユーティリティフックです。componentInstanceIdに使用できる一意の識別子を作成します。 すべて
useErrorHandler エラーハンドラーコンテキストに格納されている、エラーハンドラーコールバックを返します。 すべて
useProfilerState ライブラリの内部状態遷移を監視するために使用されます。本番環境では使用しないでください。 すべて
useProfilerStateChangeListener useProfilerStateで使用される内部フックです。内部状態遷移の変更に対するリスナーを登録します。 すべて
useRenderPassReport 最後に収集されたレンダリングパスレポートを返します。 すべて
useResetFlow 画面またはコンポーネントが再描画されていることを示すために使用されます。 すべて
useStateController 内部ユーティリティフックです。ステートコントローラーコンテキストに格納されている、ステートコントローラーを返します。 すべて

実装の詳細

  • useResetFlowフックは、Vegaを含むいずれのプラットフォームでも機能しません。
  • 画面間を移動するためのレンダリングパスレポートは、現在Vega仮想デバイスでは生成されません。

サポートされているバージョン

パッケージ名 Amazon NPMライブラリのバージョン Vega OSのビルド番号 Vega SDKバージョン リリースノート
@amazon-devices/shopify__react-native-performance 2.0.1+4.1.2 OS 1.1 (201010438050) 0.20  

関連リソース

その他のライブラリについては、サポート対象のサードパーティのライブラリとサービスを参照してください。


Last updated: 2025年9月30日