Files
oxc-guard 0389c4010e release(crates): oxc v0.146.0 (#25912)
### 🚀 Features

- 83cb516 minifier: Improve negation of expressions in boolean context (#25755) (Armano)

### 🐛 Bug Fixes

- 134fb22 isolated-declarations: Preserve unresolved parameter types (#25909) (Dunqing)
- 526c2b3 codegen: Remove deprecated test APIs (#25889) (camc314)
- 344a9b2 codegen: Align enum template sourcemaps (#25872) (camc314)

### ⚡ Performance

- 5ef0c93 minifier: Unwrap all unary exprs without creating dummy expressions (#25891) (Armano)
- 8783524 packages/codegen: Remove loop from `growMappingBuffer` (#25886) (overlookmotel)
- b6b14c0 packages/codegen: Remove redundant branch (#25885) (overlookmotel)
- be6adf0 packages/sourcemap: Make `location` passed to `recordSourceMapping` always a number (#25884) (overlookmotel)
- f720f15 packages/codegen: Take named-mapping only code off hot path in `recordSourceMapping` (#25883) (overlookmotel)
- a734af5 packages/codegen: Remove redundant setting of `last` in `printImportAttributes` and `printIf` (#25882) (overlookmotel)
- c6e44c6 packages/codegen: Combine 2 writes in `printJSXElement` (#25881) (overlookmotel)
- 8801662 packages/codegen: Remove redundant mapping from `printParams` (#25880) (overlookmotel)

### 📚 Documentation

- 5ad330e packages/codegen: Reformat comments (#25876) (overlookmotel)
2026-08-19 08:29:51 +00:00
..
…
…
…
…

Oxc Relay Transform

Native Node.js bindings for Oxc's Rust port of the Relay transform (babel-plugin-relay / @swc/plugin-relay).

The API follows oxc-transform: pass a filename, source text, and optional options to either transformSync or transform. graphql tagged template expressions are replaced with references to the artifact files generated by relay-compiler; everything else — including TypeScript and JSX syntax — is preserved untouched, so the output composes with any downstream toolchain.

import { transformSync } from "oxc-transform-relay";

const result = transformSync("src/Component.tsx", "const data = graphql`query FooQuery { id }`;");

console.log(result.code);
// import _FooQuery from "./__generated__/FooQuery.graphql.js";
// const data = _FooQuery;

errors contains every diagnostic reported by parsing and the transform; when it is non-empty, code is empty.

Options

  • artifactDirectory — directory relay-compiler emits all artifacts to (its artifactDirectory setting). When set, artifacts are imported via a relative path computed lexically from the file being transformed, so pass the filename and directory either both absolute or both relative to the same base directory. When unset, artifacts are imported from the __generated__ directory next to the file being transformed.
  • language — "typescript", "javascript" (default), or "flow". Artifacts are imported as Name.graphql.ts for "typescript" and Name.graphql.js otherwise.
  • eagerEsModules — emit a hoisted default import per graphql tag (default, matching babel-plugin-relay since Relay v17) instead of an inline require() call (@swc/plugin-relay and Next.js behavior).
  • lang, sourceType, sourcemap — configure the surrounding Oxc parse/codegen pipeline, as in oxc-transform.

Limitations

Compared to babel-plugin-relay: no development-mode artifact hash validation, no jsModuleFormat: "haste", no isDevVariableName, and the GraphQL definition name is extracted textually (like @swc/plugin-relay) rather than by parsing the document, so documents are not validated.