Loading...
Loading...
Ossido is developed in the open under the ossido-labs organization on GitHub. Contributions of every size are welcome - a typo fix in these docs, a bug report, a new feature, or a whole crate. This page covers the toolchain, building from source, the checks to run, and how to get a change merged.
Ossido spans two ecosystems in one project:
ossido, ossido_ssr, ossido_cli, ossido_macros, ossido_internal).@ossido-labs/*
(the router, UI kit, MDX integration, the React/Vite plugin, and the ESLint
plugin). See the Package ecosystem.Pick the repository for the piece you want to change from the ossido-labs org.
You'll need both toolchains, since a change often touches the Rust and the TypeScript sides together:
cargo, plus the rustfmt and clippy
components: rustup component add rustfmt clippy.The first build compiles ossido_ssr (which builds V8), so expect it to take a
while cold - subsequent builds are incremental.
Fork the repository you want to work on, then clone your fork:
Build and test the Rust workspace with cargo:
To try framework changes in a real app, point that project's Cargo.toml at your
local checkout and install the CLI from source, so ossido dev / ossido build
run your version:
# in your test project's Cargo.toml
ossido = { path = "../ossido/crates/ossido" }
Match the style of the surrounding code, and make sure every check passes before you open a pull request. On the Rust side:
On the JavaScript/TypeScript side the repos use oxlint and oxfmt, plus tsc
for type-checking:
main with a short, descriptive name.Small, self-contained PRs are easier to review and land faster. For a large or cross-cutting change, open an issue first to agree on the approach.
Open an issue on the relevant repository. A good bug report includes:
ossido --version, rustc --version, bun --version;For a feature, describe the problem you're trying to solve before the proposed solution - it helps us find the smallest change that fits the framework.
This site is itself an Ossido app, so improving the documentation is one of the
easiest ways to contribute. Each page is an MDX file under
src/routes/documentation/<slug>/page.mdx (the folder name is the URL slug), and
pages are registered in src/content/docs.ts - add your topic to a group there
and it appears in the sidebar and on the index automatically. See
MDX for the authoring conventions.
Back to Internals · Return to the documentation index