PocketJS
**Create UI on every screen you love.** Build apps for your favorite devices,
from a PSP to your desktop, with familiar JavaScript components and a compact
native runtime.
[](https://www.npmjs.com/package/@pocketjs/framework)
[](https://www.npmjs.com/package/@pocketjs/cli)
[](./LICENSE)
[](https://discord.gg/cTce4eXzSK)
[Website](https://pocketjs.pocket.nexus) ·
[Playground](https://pocketjs.pocket.nexus/playground/) ·
[Documentation](https://pocketjs.pocket.nexus/docs/overview/) ·
[Blog](https://pocketjs.pocket.nexus/blog/) ·
[Changelog](https://pocketjs.pocket.nexus/changelog/) ·
[Discord](https://discord.gg/cTce4eXzSK) ·
[X](https://x.com/pocket_js)
Applications are written in TypeScript with Solid, Vue Vapor or Octane
components, which all render to **one native tree**. A QuickJS guest runs the
application, and a Rust core performs flexbox layout and draws every pixel **in
one thread inside one process**. There is **no DOM, no CSS engine and no
WebView**. PocketJS is a [Pocket Nexus](https://pocket.nexus) project.
## In this repository
Beside the PocketJS runtime, this repository holds the technology that Pocket
projects build on:
| | What it is | Entry point |
| --- | --- | --- |
| **PocketJS** | The application runtime: TypeScript components, a QuickJS guest and a Rust core that lays out and draws every pixel | This README · [pocketjs.pocket.nexus](https://pocketjs.pocket.nexus) |
| **Pocket3D** | A hardware-native 3D stack: device kernels for GXM, GE and PICA200, and the mechanisms that purpose-built 3D engines share | [`pocket3d/`](./pocket3d/README.md) · [3d.pocket.nexus](https://3d.pocket.nexus) |
| **MicroTS** | An ahead-of-time compiler from TypeScript views and models to Rust, in development | [`microts/`](./microts/README.md) · [microts.pocket.nexus](https://microts.pocket.nexus) |
## Contents
- [In this repository](#in-this-repository)
- [Familiar tools](#familiar-tools)
- [Smooth motion](#smooth-motion)
- [Small footprint](#small-footprint)
- [Replay every frame](#replay-every-frame)
- [Apps and games](#apps-and-games)
- [Choose your screen](#choose-your-screen)
- [Made with PocketJS](#made-with-pocketjs)
- [Get started](#get-started)
- [Ahead-of-time compilation](#ahead-of-time-compilation)
- [Working on PocketJS](#working-on-pocketjs)
- [Documentation](#documentation)
- [Sponsors and Pocket Nexus](#sponsors-and-pocket-nexus)
## Familiar tools
Three TypeScript framework adapters target the same native tree and run on the
same QuickJS guest. The choice changes application code and nothing below it.
| Framework | State primitives | Source forms |
| --- | --- | --- |
| **Solid** | `solid-js` | TSX |
| **Vue Vapor** | `vue` | TSX and `