Skip to main content
Thanks for your interest in contributing to react-mediadrop.

Install & verify

This is exactly what CI runs.

Scope

Check the Roadmap and the scope reference before adding a feature — it’s the authoritative “what’s real” list. Don’t build around something listed as not implemented; raise it instead.

Architecture non-negotiables

  • The core engine stays framework-free with zero runtime dependencies.
  • Retry/backoff lives in one place (withRetry) and is never duplicated per transport.
  • Every transport stays thin — no retry, no concurrency logic of its own.
See Upload and Writing a custom transport for why this matters.

Style

Biome (pnpm format) formats and lints. No comments beyond what explains a non-obvious why (a hidden constraint, a workaround, something that would surprise a reader) — code should read clearly enough not to need a what comment.

Tests

Real regressions, not padding — new tests should exercise an actual race/edge case (cancel-vs-resolve races, retry exhaustion, reentrancy) the way the existing suite does, not just happy-path smoke tests.

Opening a pull request

Maintainers branch directly off latest main. Outside contributors fork the repo first, then branch off their fork’s main. If the change is user-facing (bug fix, feature, behavior change), run pnpm changeset and commit the generated file — changesets/action reads these to version and changelog the next release. Skip it for docs-only or internal changes. Open the PR against main. If it’s your first PR here, its CI run won’t start until a maintainer manually approves it — standard GitHub protection for first-time contributors on public repos, a one-time step. Merging requires 1 approving review and all 4 CI checks (lint, typecheck, test, build) passing. main has a linear history — merges are squash or rebase only, never merge commits.
Issue and PR templates, a vulnerability-reporting process, and a Code of Conduct already exist in the repo. There’s no CLA yet.