Skip to content

feat(evals): add Expo quickstart eval - #164

Merged
sanchitmehtagit merged 5 commits into
mainfrom
feat/expo-quickstart-evals
Jul 30, 2026
Merged

feat(evals): add Expo quickstart eval#164
sanchitmehtagit merged 5 commits into
mainfrom
feat/expo-quickstart-evals

Conversation

@subhankarmaiti

@subhankarmaiti subhankarmaiti commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Adds an Expo / React Native quickstart eval that measures how well agents integrate Auth0 into an Expo app using the react-native-auth0 SDK.

The eval seeds a bare Expo SDK 57 app (co-located scaffold/) and asks the agent to add Auth0 login. Graders cover the correct SDK and Expo config-plugin wiring (Auth0Provider/useAuth0, authorize/clearSession, customScheme), reject web/SPA SDKs and expo-auth-session, check no client ID is hardcoded in source, and finish with a holistic judge.

Correctness is validated with a type-only check (compile_command: npm run typechecktsc --noEmit) so it runs anywhere without a native Android/iOS toolchain. Also adds a configurable workspace.compileCommandTimeoutMs so apps can raise the compile timeout when needed.

Summary by CodeRabbit

  • New Features

    • Added an Expo quickstart for integrating Auth0 login with React Native.
    • Includes a starter app with login, logout, loading states, and profile display.
    • Added project configuration, TypeScript support, and scripts for running and building the app.
  • Documentation

    • Added the Expo quickstart to the available evaluation list.
    • Documented setup requirements and installation/type-checking commands.

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Adds an Expo quickstart eval for Auth0 login using react-native-auth0, including prompt metadata, an Expo scaffold, and graders that validate configuration, SDK usage, authentication flow, security, and TypeScript compilation.

Changes

Expo quickstart

Layer / File(s) Summary
Quickstart prompt and Expo scaffold
apps/auth0-evals/README.md, apps/auth0-evals/src/evals/quickstarts/expo/PROMPT.md, apps/auth0-evals/src/evals/quickstarts/expo/scaffold/*
Registers the expo_quickstart eval, adds its task metadata, and defines the Expo project configuration, scripts, strict TypeScript settings, and authentication UI scaffold.
Auth0 integration graders
apps/auth0-evals/src/evals/quickstarts/expo/graders.ts
Adds checks for react-native-auth0 usage, provider and hook wiring, custom scheme configuration, prohibited alternatives, client ID handling, typechecking, and login/logout behavior.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

Suggested reviewers: sanchitmehtagit

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding an Expo quickstart eval.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/expo-quickstart-evals

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint install failed: dependency version conflict. Check your lock file or package.json.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@subhankarmaiti subhankarmaiti changed the title Feat/expo quickstart evals feat(evals): add Expo quickstart eval Jul 30, 2026
@subhankarmaiti
subhankarmaiti marked this pull request as ready for review July 30, 2026 06:24

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (1)
apps/auth0-evals/src/evals/quickstarts/expo/scaffold/package.json (1)

5-10: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Remove the obsolete Android-only build script.

The evaluation declares npm run typecheck as its compile command, so retaining a Gradle build path reintroduces the native toolchain this change is intended to avoid and may mislead callers.

[details]
[summary]Suggested change[/summary]

   "scripts": {
     "start": "expo start",
     "android": "expo run:android",
     "ios": "expo run:ios",
     "typecheck": "tsc --noEmit",
-    "build": "expo prebuild --platform android --no-install && cd android && ./gradlew assembleDebug"
   },

[/details]

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/auth0-evals/src/evals/quickstarts/expo/scaffold/package.json` around
lines 5 - 10, Remove the obsolete "build" entry from the scripts object in
package.json, leaving the existing start, android, ios, and typecheck commands
unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/auth0-evals/src/evals/quickstarts/expo/graders.ts`:
- Around line 23-27: Replace the fixture-specific notContainsInSource check in
the Expo graders with a source-aware AST or regex validation that rejects
literal clientId values in source files while permitting environment-variable
and configuration references. Keep the existing allowance for app.json and
preserve the grader’s failure behavior and level.
- Around line 3-64: Add Vitest coverage for the grader definitions in
apps/auth0-evals/src/evals/quickstarts/expo/graders.ts (lines 3-64), covering
positive, negative, structural, security, compilation, and judge cases. Also add
Vitest tests for apps/auth0-evals/src/evals/quickstarts/expo/scaffold/App.tsx
(lines 5-26) covering both unauthenticated and authenticated rendering branches,
placing tests in the corresponding tests/ directory.
- Around line 31-36: Update the Expo graders’ matches checks to be file- and
config-node-aware rather than searching the entire workspace text. Require the
react-native-auth0 plugin and customScheme in the relevant source/config, parse
app.json, and verify the plugin object declares both domain and customScheme.
Restrict the Auth0Provider domain check to its opening tag, and add a regression
test under the package’s tests directory covering unrelated mentions.

In `@apps/auth0-evals/src/evals/quickstarts/expo/PROMPT.md`:
- Around line 9-13: Update the Expo task prompt to explicitly require the grader
contract: use react-native-auth0 with Auth0Provider and useAuth0, implement
authorize() and clearSession(), define a customScheme, avoid hard-coding the
client ID, gate rendering on loading state, register the customScheme plugin in
app.json, follow v5 hook/plugin patterns, and display the authenticated profile.

---

Nitpick comments:
In `@apps/auth0-evals/src/evals/quickstarts/expo/scaffold/package.json`:
- Around line 5-10: Remove the obsolete "build" entry from the scripts object in
package.json, leaving the existing start, android, ios, and typecheck commands
unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: f6099d72-426c-4c05-8bde-18bcce3b7b35

📥 Commits

Reviewing files that changed from the base of the PR and between 716a4cb and e8468e4.

📒 Files selected for processing (7)
  • apps/auth0-evals/README.md
  • apps/auth0-evals/src/evals/quickstarts/expo/PROMPT.md
  • apps/auth0-evals/src/evals/quickstarts/expo/graders.ts
  • apps/auth0-evals/src/evals/quickstarts/expo/scaffold/App.tsx
  • apps/auth0-evals/src/evals/quickstarts/expo/scaffold/app.json
  • apps/auth0-evals/src/evals/quickstarts/expo/scaffold/package.json
  • apps/auth0-evals/src/evals/quickstarts/expo/scaffold/tsconfig.json

Comment on lines +3 to +64
export function defineGraders() {
return [
// ── L1: Positive presence (correct SDK and patterns) ──────────────────────
contains('react-native-auth0', 'Uses the react-native-auth0 SDK', GraderLevel.L1),
contains('Auth0Provider', 'Wraps app with Auth0Provider', GraderLevel.L1),
contains('useAuth0', 'Uses the useAuth0 hook', GraderLevel.L1),
contains('authorize', 'Implements login via authorize()', GraderLevel.L1),
contains('clearSession', 'Implements logout via clearSession()', GraderLevel.L1),
contains('customScheme', 'Configures a customScheme for the callback URL', GraderLevel.L1),

// ── L2: Negative / anti-pattern detection ─────────────────────────────────
notContains('@auth0/auth0-react', 'No web React SDK (correct package is react-native-auth0)', GraderLevel.L2),
notContains('@auth0/auth0-spa-js', 'No browser SPA SDK in a native Expo app', GraderLevel.L2),
notContains(
'expo-auth-session',
'Does not fall back to expo-auth-session instead of the Auth0 SDK',
GraderLevel.L2,
),

// ── L3: Security checks ──────────────────────────────────────────────────
notContainsInSource(
'barkbook_client_abc123xyz',
'No hardcoded client ID in source files (ok in app.json)',
GraderLevel.L3,
),

// ── L4: Structural / behavioral correctness ───────────────────────────────
compiles('TypeScript typechecks (tsc --noEmit)', GraderLevel.L4),
matches(
String.raw`react-native-auth0[\s\S]*?customScheme`,
'Registers the react-native-auth0 Expo config plugin with a customScheme in app.json',
GraderLevel.L4,
),
matches(String.raw`<Auth0Provider[\s\S]*?domain`, 'Auth0Provider configured with a domain prop', GraderLevel.L4),
judge(
'Does the code handle the loading state (isLoading from useAuth0) before rendering ' +
'auth-dependent UI? A correct implementation should not render login/logout UI while isLoading is true.',
GraderLevel.L4,
),
judge(
'Does the code wire login and logout correctly for react-native-auth0 on Expo? ' +
'Specifically: authorize() for login and clearSession() for logout, each passing ' +
'{ customScheme: ... } as the second argument, matching the scheme configured in the app.json plugin.',
GraderLevel.L4,
),

// ── L5: Version-specific API correctness ──────────────────────────────────
judge(
'Does the code use the current react-native-auth0 v5 Expo patterns? ' +
'Specifically: the Auth0Provider + useAuth0 hook API (not the legacy imperative Auth0 client class), ' +
'and the react-native-auth0 Expo config plugin in app.json (not manual native iOS/Android edits)?',
GraderLevel.L5,
),

// ── Holistic judge ───────────────────────────────────────────────────────
judge(
'Does the solution correctly integrate Auth0 into an Expo app with the react-native-auth0 SDK: ' +
'Auth0Provider wrapping the app, the useAuth0 hook, authorize()/clearSession() login and logout with ' +
'customScheme, the Expo config plugin registered in app.json, and user profile display guarded by isLoading?',
),
];
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | 🏗️ Heavy lift

Add the required Vitest coverage for both new functions.

  • apps/auth0-evals/src/evals/quickstarts/expo/graders.ts#L3-L64: test grader definitions across positive, negative, structural, security, compilation, and judge cases.
  • apps/auth0-evals/src/evals/quickstarts/expo/scaffold/App.tsx#L5-L26: test unauthenticated and authenticated rendering branches.

As per coding guidelines, every new function and logic change must include or update Vitest tests in the corresponding tests/ directory.

📍 Affects 2 files
  • apps/auth0-evals/src/evals/quickstarts/expo/graders.ts#L3-L64 (this comment)
  • apps/auth0-evals/src/evals/quickstarts/expo/scaffold/App.tsx#L5-L26
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/auth0-evals/src/evals/quickstarts/expo/graders.ts` around lines 3 - 64,
Add Vitest coverage for the grader definitions in
apps/auth0-evals/src/evals/quickstarts/expo/graders.ts (lines 3-64), covering
positive, negative, structural, security, compilation, and judge cases. Also add
Vitest tests for apps/auth0-evals/src/evals/quickstarts/expo/scaffold/App.tsx
(lines 5-26) covering both unauthenticated and authenticated rendering branches,
placing tests in the corresponding tests/ directory.

Source: Coding guidelines

Comment on lines +23 to +27
notContainsInSource(
'barkbook_client_abc123xyz',
'No hardcoded client ID in source files (ok in app.json)',
GraderLevel.L3,
),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

Reject hardcoded client IDs generically, not just the fixture value.

This check only forbids barkbook_client_abc123xyz; a solution can hardcode any other client ID and still pass. Add a source-aware AST or regex check that rejects literal clientId values while allowing environment/config references.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/auth0-evals/src/evals/quickstarts/expo/graders.ts` around lines 23 - 27,
Replace the fixture-specific notContainsInSource check in the Expo graders with
a source-aware AST or regex validation that rejects literal clientId values in
source files while permitting environment-variable and configuration references.
Keep the existing allowance for app.json and preserve the grader’s failure
behavior and level.

Comment on lines +31 to +36
matches(
String.raw`react-native-auth0[\s\S]*?customScheme`,
'Registers the react-native-auth0 Expo config plugin with a customScheme in app.json',
GraderLevel.L4,
),
matches(String.raw`<Auth0Provider[\s\S]*?domain`, 'Auth0Provider configured with a domain prop', GraderLevel.L4),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== files =="
git ls-files | rg 'apps/auth0-evals/src/evals/quickstarts/expo/graders\.ts|apps/auth0-evals/src/evals|grader' || true

echo "== target file outline/contents =="
if [ -f apps/auth0-evals/src/evals/quickstarts/expo/graders.ts ]; then
  wc -l apps/auth0-evals/src/evals/quickstarts/expo/graders.ts
  cat -n apps/auth0-evals/src/evals/quickstarts/expo/graders.ts
fi

echo "== matches implementation =="
rg -n "function matches|const matches|matches\\(" apps/auth0-evals/src -S || true

echo "== quickstart candidates files =="
find apps/auth0-evals -type f \( -name '*.ts' -o -name '*.tsx' -o -name '*.json' \) | sed -n '1,200p'

Repository: auth0/auth0-evals

Length of output: 22963


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== package test files =="
find apps/auth0-evals -path '*tests*' -o -path '*test*' | sed -n '1,200p' || true
find apps/auth0-evals -iname '*grader*test*' -o -iname '*grader*spec*' | sed -n '1,200p' || true

echo "== all quickstarts =="
find apps/auth0-evals/src/evals -maxdepth 5 -type f | sed -n '1,250p'

Repository: auth0/auth0-evals

Length of output: 6568


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== matches implementation =="
cat -n packages/evals-core/src/graders/executors/matches.ts

echo "== text-search-utils =="
cat -n packages/evals-core/src/graders/executors/text-search-utils.ts

echo "== scaffold files =="
cat -n apps/auth0-evals/src/evals/quickstarts/expo/scaffold/app.json
printf '\n--- App.tsx relevant ---\n'
cat -n apps/auth0-evals/src/evals/quickstarts/expo/scaffold/App.tsx | sed -n '1,220p'

echo "== tests mentioning expo/graders/matches =="
rg -n "expo|graders\\.ts|matches\\(|auth0-evals|quickstarts" packages tests apps --glob '*.{ts,tsx,js,mts}' --glob '!apps/auth0-evals/dist/**' -S | sed -n '1,240p'

echo "== package config tests =="
for f in apps/auth0-evals/package.json package.json; do
  if [ -f "$f" ]; then
    echo "--- $f ---"
    jq '.scripts, .devDependencies, .dependencies' "$f"
  fi
done

Repository: auth0/auth0-evals

Length of output: 28077


🌐 Web query:

auth0 react-native-auth0 expo customScheme app.json

💡 Result:

To integrate Auth0 with an Expo application using the react-native-auth0 SDK, you must configure the Auth0 config plugin within your app.json (or app.config.js) file [1][2]. Configuration in app.json Include the react-native-auth0 plugin in your expo.plugins array, providing your Auth0 domain and a customScheme [1][3]. The customScheme must be a unique, all-lowercase string containing no special characters [1][4]. { "expo": { "ios": { "bundleIdentifier": "com.yourcompany.yourapp" }, "android": { "package": "com.yourcompany.yourapp" }, "plugins": [ [ "react-native-auth0", { "domain": "your-tenant.auth0.com", "customScheme": "yourcustomscheme" } ] ] } } Important Requirements 1. Native Identifiers: You must explicitly define bundleIdentifier (iOS) and package (Android) in your app.json [1][5]. These are used by the SDK to generate the necessary callback URLs [5]. 2. Code Usage: The customScheme string configured in app.json must be passed as an option when calling the authorize and clearSession methods in your application code [6][5]. // Example usage await authorize( { scope: 'openid profile email' }, { customScheme: 'yourcustomscheme' }); If a customScheme is not provided in app.json, the SDK defaults to using the bundle identifier or package name suffixed with.auth0 as the URL scheme [2][5]. If you choose to use Android App Links, you may set the customScheme value to "https" [2][3]. Ensure that the customScheme and the callback URLs are correctly registered in your Auth0 Application settings [1][5].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== package manifests =="
for f in package.json apps/auth0-evals/package.json packages/evals-graders/package.json packages/evals-core/package.json packages/evals/package.json; do
  if [ -f "$f" ]; then
    echo "--- $f ---"
    jq '.type, .scripts, .dependencies, .devDependencies, .peerDependencies' "$f"
  fi
done

echo "== read-only regex behavior probe ====="
node - <<'JS'
const patterns = [
  [String.raw`react-native-auth0[\s\S]*?customScheme`, L4_EXPO_APP_TSX_MERGED],
  [String.raw`<Auth0Provider[\s\S]*?domain`, L5_AUTH0_PROVIDER_BAD_WITH_FOLLOWING_DOMAIN],
];
for (const [pat, text] of patterns) {
  const flags = 'im';
  console.log({ passed: new RegExp(pat, flags).test(text), pattern: pat.substring(0, 80) });
}
function L4_EXPO_APP_TSX_MERGED() {
  const app = `
import { react-native-auth0 from '`@auth0/react-native`'; }

Repository: auth0/auth0-evals

Length of output: 3203


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== package manifests =="
for f in package.json apps/auth0-evals/package.json packages/evals-graders/package.json packages/evals-core/package.json packages/evals/package.json; do
  if [ -f "$f" ]; then
    echo "--- $f ---"
    jq '.type, .scripts, .dependencies, .devDependencies, .peerDependencies' "$f"
  fi
done

echo "== read-only regex behavior probe ====="
python3 - <<'PY'
import re
text = 'import { reactNativeAuth0 } from "`@auth0/react-native`";\nconsole.log("customScheme not configured");\nAppJson={plugins:[]}'
pat = r'react-native-auth0[\s\S]*?customScheme'
print('plugin pattern passed:', bool(re.search(pat, text, flags=re.I)))
provider_text = '''<Auth0Provider domain="old.example.com">{/* nothing */}</Auth0Provider>\n<Auth0Provider domain="should-not-count.example.com"/>'''
pat2 = r'<Auth0Provider[\s\S]*?domain'
print('provider pattern passed:', bool(re.search(pat2, provider_text, flags=re.I | re.M)))
print('matches same source false positives:', any(
  re.search(r'react-native-auth0[\s\S]{0,200}?customScheme', text, flags=re.I)
  or re.search(r'<Auth0Provider[\s\S]{0,200}?domain', text, flags=re.I | re.M)
  for text in [
    'import { reactNativeAuth0 } from "`@auth0/react-native`";\nconsole.log("customScheme not configured");\nAppJson={plugins:[]}',
    '<Auth0Provider domain="old.example.com">{/* nothing */}</Auth0Provider>\n<Auth0Provider domain="should-not-count.example.com"/>',
  ]
))
PY

Repository: auth0/auth0-evals

Length of output: 2653


Make the structural checks file- and config-node-aware.

matches tests the entire workspace text, so the current Expo checks can pass from unrelated mentions of react-native-auth0, customScheme, and any later domain. Add explicit source/config checks for react-native-auth0 + customScheme occurrences before relying on this pattern, and parse app.json so the react-native-auth0 plugin object actually declares both domain and customScheme; match the provider’s domain prop on the opening <Auth0Provider> tag instead of the next domain in the source. This also needs a regression test in the package’s tests/ directory.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/auth0-evals/src/evals/quickstarts/expo/graders.ts` around lines 31 - 36,
Update the Expo graders’ matches checks to be file- and config-node-aware rather
than searching the entire workspace text. Require the react-native-auth0 plugin
and customScheme in the relevant source/config, parse app.json, and verify the
plugin object declares both domain and customScheme. Restrict the Auth0Provider
domain check to its opening tag, and add a regression test under the package’s
tests directory covering unrelated mentions.

Source: MCP tools

Comment on lines +9 to +13
## Task
Add Auth0 login to my Expo app.

Domain: dev-barkbook.us.auth0.com
Client ID: barkbook_client_abc123xyz

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== files =="
git ls-files | rg 'apps/auth0-evals/src/evals/quickstarts/expo/(PROMPT\.md|graders\.ts|.*\.md)' || true

echo "== prompt =="
if [ -f apps/auth0-evals/src/evals/quickstarts/expo/PROMPT.md ]; then
  cat -n apps/auth0-evals/src/evals/quickstarts/expo/PROMPT.md
fi

echo "== graders outline/text =="
if [ -f apps/auth0-evals/src/evals/quickstarts/expo/graders.ts ]; then
  wc -l apps/auth0-evals/src/evals/quickstarts/expo/graders.ts
  cat -n apps/auth0-evals/src/evals/quickstarts/expo/graders.ts
fi

echo "== search related quickstarts/graders =="
rg -n "logout|profile|isLoading|customScheme|CustomScheme|useAuth0|react-native-auth0|v5|Quickstart|Domain|Client ID|expo" apps/auth0-evals/src/evals -S || true

Repository: auth0/auth0-evals

Length of output: 31736


Align the Expo prompt with the grader contract.

graders.ts checks for react-native-auth0, Auth0Provider, useAuth0, authorize(), clearSession(), a customScheme, hard-coded client-ID absence, loading-state gating, plugin registration for customScheme in app.json, v5 hook/plugin patterns, and profile display. Update PROMPT.md to explicitly require these so submissions are not task-compliant but fail the grader.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/auth0-evals/src/evals/quickstarts/expo/PROMPT.md` around lines 9 - 13,
Update the Expo task prompt to explicitly require the grader contract: use
react-native-auth0 with Auth0Provider and useAuth0, implement authorize() and
clearSession(), define a customScheme, avoid hard-coding the client ID, gate
rendering on loading state, register the customScheme plugin in app.json, follow
v5 hook/plugin patterns, and display the authenticated profile.

Source: MCP tools

@sanchitmehtagit
sanchitmehtagit merged commit 1a32fea into main Jul 30, 2026
6 checks passed
@sanchitmehtagit
sanchitmehtagit deleted the feat/expo-quickstart-evals branch July 30, 2026 08:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants