Skip to content
react-mediadrop
Esc
navigateopen⌘Jpreview
On this page

Contributing

How to contribute to react-mediadrop

Thanks for your interest in contributing to react-mediadrop.

Install & verify

pnpm install
pnpm lint && pnpm typecheck && pnpm test && pnpm build && pnpm size

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.

Was this page helpful?