> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Remix

export const VersionRequirements = ({versions = []}) => {
  if (!Array.isArray(versions) || versions.length === 0) {
    return null;
  }
  const boundaries = {
    upper: " or lower",
    exact: "",
    lower: " or higher"
  };
  const containerStyle = {
    marginTop: "0.5rem",
    marginBottom: "1.5rem"
  };
  const lineStyle = {
    display: "block",
    margin: "0 0 0.35rem 0",
    fontSize: "0.875rem",
    lineHeight: "1.4"
  };
  const pillBaseStyle = {
    display: "inline-block",
    padding: "0.1em 0.4em",
    borderRadius: "0.25rem",
    border: "1px solid",
    fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
    fontSize: "0.85em",
    fontWeight: 500
  };
  const pillColors = {
    "AppSignal for Elixir": {
      background: "#f3e8ff",
      borderColor: "#e9d5ff",
      color: "#9333ea"
    },
    "AppSignal for Front-end": {
      background: "#fef9c3",
      borderColor: "#fde68a",
      color: "#ca8a04"
    },
    "AppSignal for Go": {
      background: "#ccfbf1",
      borderColor: "#99f6e4",
      color: "#0d9488"
    },
    "AppSignal for JavaScript": {
      background: "#fef9c3",
      borderColor: "#fde68a",
      color: "#ca8a04"
    },
    "AppSignal for Node.js": {
      background: "#dcfce7",
      borderColor: "#bbf7d0",
      color: "#16a34a"
    },
    "AppSignal for Python": {
      background: "#dbeafe",
      borderColor: "#bfdbfe",
      color: "#2563eb"
    },
    "AppSignal for Ruby": {
      background: "#fee2e2",
      borderColor: "#fecaca",
      color: "#dc2626"
    },
    "AppSignal for Rust": {
      background: "#ffedd5",
      borderColor: "#fed7aa",
      color: "#ea580c"
    }
  };
  const defaultPillColor = {
    background: "#f4f4f5",
    borderColor: "#e4e4e7",
    color: "#52525b"
  };
  const getPillStyle = name => ({
    ...pillBaseStyle,
    ...pillColors[name] || defaultPillColor
  });
  const getBoundText = bound => {
    return boundaries[bound] || boundaries.lower;
  };
  return <div style={containerStyle}>
      {versions.map((v, i) => <p key={`${v.name}-${v.version}-${v.bound || "lower"}-${i}`} style={lineStyle}>
          This feature requires{" "}
          <code style={getPillStyle(v.name)}>{v.name}</code> version {v.version}
          {getBoundText(v.bound)}.
        </p>)}
    </div>;
};

<VersionRequirements
  versions={[
{ name: "AppSignal for Node.js", version: "3.0.18" }
]}
/>

L'intégration AppSignal pour Node.js pour [Remix](https://remix.run/)

## Installation

Pour activer la prise en charge de l'instrumentation pour Remix, vous devez d'abord installer le package [OpenTelemetry Remix Instrumentation](https://www.npmjs.com/package/opentelemetry-instrumentation-remix) `^0.5.0`.

Après avoir installé le package OpenTelemetry Remix Instrumentation, vous devez activer l'instrumentation lors de l'initialisation du client AppSignal en utilisant l'option de configuration [`additionalInstrumentations`](/nodejs/3.x/configuration/options#option-additionalinstrumentations) comme indiqué dans le code ci-dessous.

<CodeGroup>
  ```javascript Node.js theme={null}
  // appsignal.cjs
  const { Appsignal } = require("@appsignal/nodejs");
  const { RemixInstrumentation } = require("opentelemetry-instrumentation-remix");

  new Appsignal({
    active: true,
    name: "<YOUR APPLICATION NAME>",
    pushApiKey: "<YOUR API KEY>",
    additionalInstrumentations: [new RemixInstrumentation()],
  });
  ```
</CodeGroup>

Ce snippet référence le fichier `appsignal.cjs` qui a été créé [lors de la configuration d'AppSignal](/nodejs/3.x/configuration#minimal-required-configuration).

Vous devez définir la variable d'environnement `NODE_OPTIONS` pour charger le fichier `appsignal.cjs` lors du démarrage de votre application Remix.

<CodeGroup>
  ```bash Bash theme={null}
  NODE_OPTIONS='--require ./appsignal.cjs' remix dev
  ```
</CodeGroup>

<Tip>
  Remix est construit au-dessus d'Express pour la gestion des requêtes web, ce
  qui pourrait rendre vos actions dans AppSignal plus difficiles à lire. Si
  c'est votre cas, vous pouvez désactiver l'instrumentation Express en passant
  l'option `disableInstrumentations` à l'initialisation du client AppSignal avec
  la valeur : `["@opentelemetry/instrumentation-express"]`.
</Tip>

## Fonctionnalités

L'instrumentation Remix créera des actions de performance dans AppSignal à partir des gestionnaires de requêtes Remix. Le nom de l'action sera la route du gestionnaire de requêtes.

Les loaders Remix sont instrumentés en tant que spans enfants du span du gestionnaire de requêtes.

Une fois configurées, les erreurs levées par votre application Remix seront signalées à AppSignal.
