← Back to archive

Repo of the Day

onejs/one

Published: Oct 14, 2024

Open repository ↗

One is a new React framework that makes cross-platform simple. Target web and native with just Vite. Looks really awesome

Summary

One is a Vite plugin for building a single React codebase that targets both the web (React DOM) and React Native. It is written in TypeScript and focuses on unified routing across the two platforms, with the repository tagged as a local-first project.

What it is useful for

  • Cross-platform React work where the same components, screens, and navigation should run in a browser and on iOS/Android through React Native, avoiding parallel web and native codebases.
  • Teams that want one routing layer instead of maintaining separate navigation logic for web and native targets.
  • Developers who prefer Vite as the build tool and want a single plugin entry point rather than juggling two separate toolchains.
  • Local-first application patterns, as indicated by the repository topics.

How engineers can use it

  • Add the plugin to a Vite configuration so that a project's React components and routes resolve for both the web target and the React Native target from a single source.
  • Author screens and components using React APIs that are compatible with both DOM and React Native primitives, then let the plugin handle the platform-specific bundling.
  • Define routes once and rely on the unified router to drive navigation on each platform, so a link or deep link behaves consistently across web and mobile.
  • Consult the documentation site at https://onestack.dev for full installation, configuration, and routing examples, because the GitHub README is currently a placeholder that only links out and does not document setup steps, commands, or API usage.

Documented limitations and caveats

  • The GitHub README is explicitly a stub ("We'll get this filled out properly soon"), so all setup, configuration, and API details must be taken from the external documentation site rather than the repository's README.
  • The license field is reported as NOASSERTION; the supplied metadata does not state a license, so engineers should verify terms before using the project in production.
  • No version numbers, release cadence, or compatibility notes (such as supported Vite, React, or React Native versions) are provided in the supplied data, so those should be confirmed on the docs site or in package.json before adoption.