# Overview

How React Native, Expo Desktop, and Spark runtimes fit together.

Source: https://legend.so/spark/overview/

Legend Spark: Experimental — not for production.

These guides cover source SDK APIs; the published preview can differ. [Check release status.](https://legend.so/spark/limitations/)

Legend Spark adds native desktop capabilities and a managed development workflow to React Native and Expo Desktop. Build React Native screens, use native windows, menus, dialogs, and files, and edit JavaScript with Fast Refresh.

The public package is `@legendapp/spark`; the CLI is `spark`. The single package includes its private implementation modules. Application code imports capability paths such as `@legendapp/spark/files` rather than installing internal `@legendapp/spark-*` packages.

## [How the pieces fit](https://legend.so/spark/overview/#how-the-pieces-fit)

-   **React Native** renders native interfaces. Application JavaScript runs in Hermes.
-   **Expo** supplies mobile/web tooling and selected library backends.
-   **Expo Desktop** creates projects and generates native desktop hosts.
-   **Spark** supplies desktop APIs, native compatibility checks, runtime selection, and build/packaging orchestration. Expo CLI owns Metro and the development terminal.

Node 24.19.0 or newer runs the tooling. For app consumers, npm, pnpm, Yarn, and Bun are package-manager choices; Bun is optional. The source checkout requires the pinned Bun version; see [source setup](https://legend.so/spark/getting-started/#contributing-build-spark-from-source). Neither Node nor Bun is embedded in the application.

## [Three runtime choices](https://legend.so/spark/overview/#three-runtime-choices)

| Runtime | Native contents | JavaScript |
| --- | --- | --- |
| Spark Runner | Shared SDK development profile | Metro / Fast Refresh |
| Custom development build | SDK plus app-specific native dependencies/configuration | Metro / Fast Refresh |
| Standalone macOS application | Production-selected native modules | Embedded bundle |

Start with a compatible Runner. Adding native dependencies, helper executables, or native configuration can require a custom build. Compatibility checks include SDK, architecture, and native signatures. JavaScript-only changes do not require rebuilding.

## [Platform scope](https://legend.so/spark/overview/#platform-scope)

| Target | Available workflow | Limits |
| --- | --- | --- |
| macOS 14+, Apple Silicon | Runner, custom development, standalone builds and packaging | Primary target; experimental |
| macOS 14+, Intel x64 | Architecture selection across builds, Runner registration/downloads and packaging | Native builds and runtime behavior still need validation; published Runner is ARM64 only |
| Windows 11, x64/ARM64 | Local Runner and custom development builds | Native builds and runtime behavior still need validation; no production packaging or hosted Windows Runner |
| iOS / Android / web | Expo workflows and selected shared API/UI adapters | Desktop APIs do not imply mobile/web support |
| Linux / Mac App Store | Outside the supported workflow | No support claim |

The source targets Expo SDK 54, React Native 0.81, and Expo Desktop `1.0.0`. See [status and limitations](https://legend.so/spark/limitations/) for platform and feature restrictions.

## [Application architecture](https://legend.so/spark/overview/#application-architecture)

For Electron migrations, replace DOM/CSS screens with React Native screens and browser/main-process integrations with supported capabilities. Spark has no Electron compatibility layer. An optional [WebView](https://legend.so/spark/integrations/) can host selected web content.

[Helper processes](https://legend.so/spark/integrations/) run app-supplied executables. Independent background Hermes heaps use `@react-native-runtimes/core` directly; they remain inside the app process and end when it quits.

## [Explore](https://legend.so/spark/overview/#explore)

-   [Getting started](https://legend.so/spark/getting-started/): create, run, and build a macOS app from npm.
-   [Development](https://legend.so/spark/development/) and [configuration](https://legend.so/spark/configuration/): runtimes, Expo integration, and native changes.
-   [API guide](https://legend.so/spark/reference/): every public capability and shared contracts.
-   [Native UI](https://legend.so/spark/ui/), [AI execution](https://legend.so/spark/ai/), and [examples](https://legend.so/spark/examples/).
-   [Packaging and updates](https://legend.so/spark/distribution/) and [migration](https://legend.so/spark/migration/).

[LLM documentation index](https://legend.so/spark/llms.txt) · [Complete LLM documentation](https://legend.so/spark/llms-full.txt)

[View Markdown](https://legend.so/spark/overview.md)[Report a documentation correction](https://github.com/LegendApp/legend-docs/issues/new?title=Docs%3A+Overview&body=Page%3A+https%3A%2F%2Flegend.so%2Fspark%2Foverview%0A%0AWhat+is+incorrect+or+missing%3F%0A%0AExpected+behavior+or+supporting+source%3A%0A)
