# 02 · Development framework

https://exo.now/docs/stack/framework

> Every Exo app is written in strict TypeScript with React, on Next.js for the web and Expo for mobile. One opinionated path.



<StackFacts dimension="02 · Development framework" platforms="[&#x22;nextjs&#x22;, &#x22;typescript&#x22;, &#x22;react&#x22;]" status="Proposed (2026-10-02), pending team confirmation. Exo itself already runs on it; the repository contract still allows other frameworks until this is confirmed." />

## What it is [#what-it-is]

The framework dimension answers: what is every app written in? One answer for every app:
**TypeScript, React, and Next.js** for the web, and the same TypeScript and React on Expo for
mobile ([Deploy](./deploy.mdx)). There is no second path: no Svelte, Remix, Vue, or Angular.

One path means code, components, agents, and people move between apps without relearning a
stack, and every Exo service (EXO Verify, Exo Analyze, Exo Key, the design system) is built and
tested for exactly one target.

## Platform [#platform]

* **Next.js** (MIT, Vercel) for web apps: routing, server rendering, and API routes. Exo runs on
  Next.js 16.2 and React 19.2.
* **TypeScript** (Apache-2.0, Microsoft), strict mode, for all application code. JavaScript
  application sources are disabled (already required by the repository contract).
* **React** (MIT, Meta) for UI, shared by web (Next.js) and mobile (Expo / React Native).

All three are open source. Developers use them directly. Exo does not wrap or rename them.

## Boundary and replaceability [#boundary-and-replaceability]

* The framework is a convention, not a hosted service, so there is no account, key, or bill.
* Next.js runs on any OCI host: Exo apps build to a standard container
  ([Deploy](./deploy.mdx)) and do not depend on Vercel.
* Replacing the framework is a portfolio-wide migration, not a per-app choice. That is the point
  of an opinionated stack.
* **Open change:** the [repository contract](../../../docs/repository-contract.md) currently says
  "Application framework choice remains independent". It changes to Next.js + TypeScript + React
  once the team confirms this page.

## Cost notes [#cost-notes]

* License cost: **$0** (MIT and Apache-2.0).
* The cost of one path is the alternatives given up: a team that prefers Svelte or Remix must
  build outside Exo.

## Status [#status]

* **Live:** Exo, Construct, and the portfolio web apps already use Next.js, TypeScript, and React.
* **Proposed:** making it mandatory for every Exo app (pending team confirmation, 2026-10-02).
