Compiler
gt-next’s Rust-based SWC plugin.
Compiler
gt-next includes a Rust-based SWC plugin that performs build-time analysis to catch common translation errors and optimise performance.
Features
Dynamic Content Detection
Identifies unwrapped dynamic content in translation components:
// ❌ Invalid - dynamic content not wrapped
<T>Hello {userName}</T>
// ✅ Valid - dynamic content wrapped in variable component
<T>Hello <Var>{userName}</Var></T>Function Call Validation
Detects non-literal arguments passed to translation functions:
const t = useGT();
// ❌ Invalid – template literals and concatenation
t(`Hello ${name}`)
t("Hello " + name)
// ✅ Valid – string literals with variable substitution
t("Hello, {name}!", { name })Compile-time Hash Generation
Precomputes translation hashes for better runtime performance:
// Input
<T>Hello world</T>
// Output (when enabled)
<T _hash="a1b2c3d4">Hello world</T>Configuration
Configure the SWC plugin in your next.config.js:
import { withGTConfig } from 'gt-next/config';
export default withGTConfig(nextConfig, {
locales: ['en', 'es'],
swcPluginOptions: {
logLevel: 'silent', // Control warning output
compileTimeHash: false, // Enable hash generation
},
});Options
-
logLevel: Controls the warning output level'silent'- No warnings (default for production)'error'- Show as build errors'warn'- Show as warnings (default for development)'info'- Show info‑level messages'debug'- Show all debug information
-
compileTimeHash: Enables compile‑time hash generationfalse- Disabled (default)true- Generate hashes at build time for better performance
Limitations
The SWC plugin processes files individually and cannot detect violations in re‑exported components:
// File A: export { T as Translate } from 'gt-next'
// File B: import { Translate } from './A'
<Translate>Hello {name}</Translate> // Won’t be detectedHow is this guide?