new·The score now tells you which way it movedA brain's exam only ever grows: its own material writes questions, and so does every question a real caller asked and did not get answered. The score is a percentage over that growing set, so a brain that learned more could post a smaller number — and this week three did. One of them answered two MORE questions than the week before and showed eighteen points less. Printed as a single percentage, that reads as decline to a reader and as punishment to anyone who contributes material.all news →
mozg.beta
Sign in

Expo & React Native · all subjects

out of scope

21 notes, read out of this brain and free to use. Each one was extracted from a source and is re-checked against its exam.

Copy Markdown dropdown for single pages

A Copy Markdown option is available in a dropdown menu at the top of any documentation page. This button allows quick copying of a single page's markdown content for use with chat interfaces.

Per-page markdown access method

Every documentation page has a lightweight markdown version accessible by appending either /index.md or .md to the page URL. Both URLs serve the same file. For example, https://docs.expo.dev/develop/development-builds/introduction/index.md and https://docs.expo.dev/develop/development-builds/introduction.md both serve the same content. This method is useful when you want to give an AI agent context about a specific topic or page without overwhelming it with the full HTML of that page.

Documentation index file for LLMs

Expo supports the llms.txt initiative to provide documentation for large language models. The /llms.txt file is approximately 54 kB and lists every documentation page with a link to its markdown version and a short description. An AI agent can use it to discover the relevant pages for a task and then fetch only those pages, instead of loading the complete documentation into its context window.

Expo support channels overview

GitHub issues are for bug reports only. General questions about Expo and its services should be asked on the Expo Forums at forums.expo.io. For dedicated support including root cause analysis for Expo-related bugs and guaranteed response times, use the professional support offering at expo.io/support. For general help building apps, contact one of the trusted consultants listed at expo.io/consultants.

Expo documentation is built with Next.js and served at docs.expo.dev

The Expo documentation is a Next.js application accessible at https://docs.expo.dev/. The source is in the docs directory of the expo/expo repository. Documentation can be run locally with pnpm install and pnpm dev on port 3002.

Documentation sections cover Home, Guides, EAS, Reference, and Learn

The Expo documentation is divided into five main sections. Home provides a guided path from starting a project to deploying to app stores. Guides contains general purpose and fundamental guides about how Expo works. EAS provides detailed documentation for all EAS services. Reference contains detailed reference documentation for all Expo APIs and modules. Learn contains tutorials and guides for learning Expo and React Native.

Documentation pages support metadata in frontmatter

Each markdown page can include metadata in frontmatter delimited by --- at the top of the file. Supported metadata fields are: title (page heading and search results), description (search results and social media), hideFromSearch (hide from Algolia), hideInSidebar (hide from sidebar), hideTOC (hide table of contents), sidebar_title (sidebar display name), maxHeadingDepth (max TOC heading level, default 3), isNew (show new badge), isDeprecated (show deprecated badge), isAlpha (show alpha badge), searchRank (0-100 relevance, default 5), searchPosition (Algolia position, default 50), hasVideoLink (show video link icon), and cliVersion (for CLI badge).

Every documentation page is served as both HTML and markdown

Published Expo documentation pages can be retrieved as markdown using four methods: 1) Send Accept: text/markdown header to the canonical URL, 2) Append .md to the URL, 3) Request /slugname/index.md directly, 4) Follow the <link rel="alternate" type="text/markdown"> discovery link in the page head. The markdown is generated at build time via scripts/generate-markdown-pages.ts and served with Content-Type: text/markdown via a Cloudflare worker.

Documentation uses Algolia for search with version filtering

Algolia is the search provider for Expo docs. Search results are filtered by version tag. Unversioned pages use version tag 'none', versioned pages use SDK version (e.g., v51.0.0), and pages with hideFromSearch: true frontmatter do not have a version tag. The facet filter is set to [['version:none', 'version:{version}']].

Prose linting uses Vale based on Expo's writing style guide

Run pnpm lint-prose to lint documentation for style and grammar based on Expo's writing style guide using the Vale linter. The Vale binary is auto-installed during pnpm install. To disable Vale for specific content, use {/* vale off */} and {/* vale on */} comment delimiters.

Code blocks support dynamic variable substitution

Fenced code blocks in documentation support dynamic variable substitution using {{variableName}} syntax. Variables replaced at render time from sdk-versions.json include: {{iosDeploymentTarget}}, {{androidVersion}}, {{compileSdkVersion}}, {{targetSdkVersion}}, {{reactNativeVersion}}, {{reactVersion}}, {{xcodeVersion}}, {{nodeVersion}}, {{expoSdkVersion}}, and {{expoSdkMajorVersion}}.

Terminal component for shell command snippets

Use the Terminal component to make shell commands copy/pasteable in documentation. Props include: cmd (required, string array with $ for commands, # for comments, empty strings for spacing), cmdCopy (optional, overrides auto-generated copy text), title (optional, overrides 'Terminal' header), browserAction (optional, object with href and label for launch button), hideOverflow (optional boolean to prevent horizontal scrollbars), and className (optional utility classes).

Code block title and parameter syntax

Code blocks support titles and parameters after the language identifier. Syntax: ```js myFile.js or ```js Title for a code block. Parameters like collapseHeight are added with pipe separator: ```js myFile.js|collapseHeight=600. The collapseHeight parameter (number, default 408) sets custom height for automatic code block collapsing.

SnackInline component for runnable examples

The SnackInline component renders instantly-runnable Snack examples in docs. Import from ~/components/plugins/SnackInline. Props: label (example label), dependencies (array of package names). Use /* @info text */ ... /* @end */ for hoverable info text and /* @hide visible content */ ... /* @end */ to hide content in docs while keeping it in Snack.

Tabs component for multiple code variants

Use the Tabs component (imported from ~/ui/components/Tabs) to show multiple ways of doing something. Each Tab has a label prop. Components must not be indented or they will not parse correctly.

Prerequisites component for setup checklists

Use the Prerequisites component (from ~/ui/components/Prerequisites) to list requirements when a guide depends on specific environment setup. It renders as a collapsible block. Each requirement uses a Requirement child component with a title prop. Pass open prop to Prerequisites to expand by default.

Four types of callouts in documentation

Markdown blockquotes support four callout types: normal (no prefix) for notes requiring attention, > **info** for informative callouts demanding attention, > **warning** for warnings and deprecation messages, > **error** for errors and breaking changes, and > **important** for important information about packages, services, or tools.

Step component for procedural guides

Use the Step component (from ~/ui/components/Step) for procedural guides. Each step has a label prop. Import: import { Step } from '~/ui/components/Step'.

ContentSpotlight component for images and component previews

ContentSpotlight renders images or component previews. For component previews use variant="component" with required aspect prop ("landscape" for 540px wide 3:2, or "portrait" for 220px wide 9:16 phone-shaped mocks). Props: variant (default "screenshot"), aspect (required for variant="component"), src (required light-theme image path), darkSrc (optional dark-theme image), alt (required alt text). Place expo-ui component assets under /public/static/images/expo-ui/<component>/.

VideoBoxLink component for YouTube videos

The VideoBoxLink component (from ~/ui/components/VideoBoxLink) references videos from Expo's YouTube channel. Required props: videoId (YouTube video ID from URL), title. Optional prop: description.

Troubleshooting overview page structure

The Expo troubleshooting documentation is organized into sections: Error and warnings, Runtime issues in development and production, Expo Router, Push notifications, and EAS. Each section contains links to specific troubleshooting guides.

Give your agent this brain