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. [![@pocketjs/framework](https://img.shields.io/npm/v/%40pocketjs%2Fframework?label=%40pocketjs%2Fframework)](https://www.npmjs.com/package/@pocketjs/framework) [![@pocketjs/cli](https://img.shields.io/npm/v/%40pocketjs%2Fcli?label=%40pocketjs%2Fcli)](https://www.npmjs.com/package/@pocketjs/cli) [![license: MIT](https://img.shields.io/badge/license-MIT-blue)](./LICENSE) [![Discord](https://img.shields.io/badge/Discord-Join-5865F2?logo=discord&logoColor=white)](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. A wall of PocketJS software: music, deep-zoom graphics, messaging, a digital character, galleries, DevTools, dashboards, media, and a café app, alongside OpenStrike, Pocket Voxel and Pocket Figma on PSP, including Motion Lab studies credited to yui540 ## 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 `