diff --git a/apps/mobile/src/features/connection/ConnectionEnvironmentRow.tsx b/apps/mobile/src/features/connection/ConnectionEnvironmentRow.tsx
index a42db147c17d..b0ebe58054d5 100644
--- a/apps/mobile/src/features/connection/ConnectionEnvironmentRow.tsx
+++ b/apps/mobile/src/features/connection/ConnectionEnvironmentRow.tsx
@@ -9,7 +9,7 @@ import { useCallback, useState } from "react";
import { Platform, Alert, Pressable, View } from "react-native";
import Animated, { FadeIn, FadeOut, LinearTransition } from "react-native-reanimated";
-import { AppText as Text, AppTextInput as TextInput } from "../../components/AppText";
+import { AppText as Text } from "../../components/AppText";
import { EnvironmentMachineSymbol } from "../../components/EnvironmentMachineSymbol";
import { MaterialButton } from "../../components/MaterialButton";
import { MaterialIconButton } from "../../components/MaterialIconButton";
@@ -18,6 +18,7 @@ import { cn } from "../../lib/cn";
import { copyTextWithHaptic } from "../../lib/copyTextWithHaptic";
import type { ConnectedEnvironmentSummary } from "../../state/remote-runtime-types";
import { serverEnvironment } from "../../state/server";
+import { ConnectionFormField } from "./ConnectionFormField";
import { ConnectionStatusDot } from "./ConnectionStatusDot";
function connectionStatusLabel(environment: ConnectedEnvironmentSummary): string | null {
@@ -164,34 +165,24 @@ export function ConnectionEnvironmentRow(props: {
) : (
<>
-
-
- Label
-
-
-
+
-
-
- URL
-
-
-
+
>
)}
diff --git a/apps/mobile/src/features/connection/ConnectionFormField.tsx b/apps/mobile/src/features/connection/ConnectionFormField.tsx
new file mode 100644
index 000000000000..0d5e21148e54
--- /dev/null
+++ b/apps/mobile/src/features/connection/ConnectionFormField.tsx
@@ -0,0 +1,25 @@
+import { View } from "react-native";
+
+import { AppText, AppTextInput, type AppTextInputProps } from "../../components/AppText";
+import { cn } from "../../lib/cn";
+
+type ConnectionFormFieldProps = Omit & {
+ readonly label: string;
+ readonly className?: string;
+};
+
+/** Labeled connection input with a native wrapper retained inside form sheets. */
+export function ConnectionFormField({ label, className, ...inputProps }: ConnectionFormFieldProps) {
+ return (
+
+
+ {label}
+
+
+
+ );
+}
diff --git a/apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx b/apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx
index ea4f1cf69712..6c0d60beb5f5 100644
--- a/apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx
+++ b/apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx
@@ -13,8 +13,9 @@ import { Alert, Linking, Platform, View } from "react-native";
import { useSafeAreaInsets } from "react-native-safe-area-context";
import { useUniwindTheme } from "../../lib/useUniwindTheme";
import { SettingsScreen } from "../settings/components/SettingsScreen";
-import { AppText as Text, AppTextInput as TextInput } from "../../components/AppText";
+import { AppText as Text } from "../../components/AppText";
import { ErrorBanner } from "../../components/ErrorBanner";
+import { ConnectionFormField } from "./ConnectionFormField";
import { ConnectionSheetButton } from "./ConnectionSheetButton";
import { buildPairingUrl, extractPairingUrlFromQrPayload, parsePairingUrl } from "./pairing";
import { useRemoteConnections } from "../../state/use-remote-environment-registry";
@@ -262,34 +263,24 @@ export function ConnectionsNewRouteScreen({
)
) : (
-
-
- Host
-
-
-
+
-
-
- Pairing code
-
-
-
+
{pairingConnectionError ? : null}