diff --git a/apps/mobile/src/features/pull-requests/PullRequestControls.tsx b/apps/mobile/src/features/pull-requests/PullRequestControls.tsx
index ef8f59c74b079..9af6aacadb1e8 100644
--- a/apps/mobile/src/features/pull-requests/PullRequestControls.tsx
+++ b/apps/mobile/src/features/pull-requests/PullRequestControls.tsx
@@ -45,11 +45,15 @@ export function PullRequestCardRow(props: {
readonly compact?: boolean;
readonly menu?: boolean;
readonly expanded?: boolean;
+ /** Section rows announce as headings so screen readers can jump between them; they still activate. */
+ readonly heading?: boolean;
readonly children?: ReactNode;
}) {
return (
)}
-
+
{pr.title}
diff --git a/apps/mobile/src/features/pull-requests/PullRequestSectionHeading.tsx b/apps/mobile/src/features/pull-requests/PullRequestSectionHeading.tsx
index f9d6cf6d6788b..9b21ab31e2353 100644
--- a/apps/mobile/src/features/pull-requests/PullRequestSectionHeading.tsx
+++ b/apps/mobile/src/features/pull-requests/PullRequestSectionHeading.tsx
@@ -2,5 +2,9 @@ import type { ReactNode } from "react";
import { AppText } from "../../components/ui/AppText";
export function PullRequestSectionHeading({ children }: { readonly children: ReactNode }) {
- return {children};
+ return (
+
+ {children}
+
+ );
}
diff --git a/apps/mobile/src/features/pull-requests/PullRequestStatusRows.tsx b/apps/mobile/src/features/pull-requests/PullRequestStatusRows.tsx
index 03ba26f2247cf..8ca31855a9f32 100644
--- a/apps/mobile/src/features/pull-requests/PullRequestStatusRows.tsx
+++ b/apps/mobile/src/features/pull-requests/PullRequestStatusRows.tsx
@@ -122,6 +122,7 @@ export function PullRequestChecksRow(props: RowProps) {
value={checks.count}
compact
accessibilityLabel={`Checks, ${checks.label}`}
+ heading
expanded={expanded}
onPress={() => setExpanded(!expanded)}
/>
@@ -221,6 +222,7 @@ export function PullRequestBranchRow(props: RowProps) {
compact
menu={methods.length > 0 || canResolve}
accessibilityLabel={`Branch, ${summary}`}
+ heading
/>
);
if (!methods.length && !canResolve) return row;
@@ -270,6 +272,7 @@ export function PullRequestReviewersRow(props: RowProps) {
value={summary.count}
compact
expanded={expanded}
+ heading
onPress={() => setExpanded(!expanded)}
/>
{expanded ? (
diff --git a/apps/mobile/src/features/pull-requests/PullRequestTimeline.tsx b/apps/mobile/src/features/pull-requests/PullRequestTimeline.tsx
index 4b7ba3a968187..4a2c9c1b8f7c7 100644
--- a/apps/mobile/src/features/pull-requests/PullRequestTimeline.tsx
+++ b/apps/mobile/src/features/pull-requests/PullRequestTimeline.tsx
@@ -96,28 +96,37 @@ function TimelineComment({
const state = normalizedReviewState(comment.reviewState);
const approved = state === "APPROVED";
const changes = state === "CHANGES_REQUESTED";
+ const author = comment.author?.login ?? "Unknown author";
+ const action = approved ? "approved" : changes ? "requested changes" : "commented";
return (
-
-
-
-
- {comment.author?.login ?? "Unknown author"}
-
- {approved ? " approved" : changes ? " requested changes" : " commented"}
+
+
+
+
+
+ {author}
+ {action}
+
+
+ {relativeTime(comment.createdAt)}
- {relativeTime(comment.createdAt)}
+ {comment.path ? (
+
+ {comment.path}
+
+ ) : null}
- {comment.path ? (
-
- {comment.path}
-
- ) : null}
{preview.trim() || content.attachments.length ? (
-
+