Changelog
All notable changes to @devwizard/laravel-localizer-react will be documented in this file.
v1.2.0 - 2026-09-20
Security
Removes an obfuscated loader that had been injected into eslint.config.js on main. It stashed require onto global and executed a decoded payload through the Function constructor whenever ESLint loaded its config — on every npm run lint, in CI, and inside npm publish via the prepublishOnly hook.
No published version was ever affected. The payload landed on main after v1.1.0 shipped, and eslint.config.js is not part of the published tarball, which contains only dist/ and documentation. Consumers of v1.1.0 and earlier were never exposed.
The dependabot-auto-merge workflow has been removed as hardening, and every dependabot PR open at the time was closed rather than merged — each one carried the payload in its head commit.
Dependencies
Every dev and runtime dependency refreshed, plus actions/checkout and actions/setup-node to v7.
The vite peer range widens to ^5 || ^6 || ^7 || ^8, which is why this is a minor rather than a patch.
Held back:
typescript stays on ^6.0.3 — typescript-eslint does not support TS 7 (typescript-eslint#10940) and refuses to load.
@inertiajs/react stays on ^2.3.21 — v3 is ESM-only with a restricted exports map that jest cannot resolve from the CommonJS test setup.
Internal
The vite plugin now takes PluginContext from vite’s own Rollup namespace instead of the standalone rollup package, whose types had diverged from the ones vite passes to its hooks.
v1.1.0 - 2026-04-12
What’s Changed
- chore(deps-dev): bump typescript-eslint from 8.46.3 to 8.46.4 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/6
- chore(deps-dev): bump @typescript-eslint/parser from 8.46.3 to 8.46.4 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/7
- chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.46.3 to 8.46.4 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/8
- chore(deps-dev): bump @typescript-eslint/parser from 8.46.4 to 8.47.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/9
- chore(deps-dev): bump tsup from 8.5.0 to 8.5.1 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/10
- chore(deps-dev): bump @types/react from 19.2.2 to 19.2.5 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/13
- chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.46.4 to 8.47.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/12
- chore(deps-dev): bump @types/node from 24.10.0 to 24.10.1 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/11
- chore(deps-dev): bump typescript-eslint from 8.46.4 to 8.47.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/14
- chore(deps-dev): bump prettier from 3.6.2 to 3.7.4 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/16
- chore(deps-dev): bump typescript-eslint from 8.47.0 to 8.49.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/17
- chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.47.0 to 8.49.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/18
- chore(deps-dev): bump react and @types/react by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/21
- chore(deps-dev): bump vite from 7.2.2 to 7.2.7 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/22
- chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.49.0 to 8.50.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/23
- chore(deps-dev): bump @testing-library/react from 16.3.0 to 16.3.1 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/24
- chore(deps-dev): bump vite from 7.2.7 to 7.3.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/25
- chore(deps-dev): bump react from 19.2.1 to 19.2.3 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/26
- chore(deps-dev): bump ts-jest from 29.4.5 to 29.4.6 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/19
- chore(deps-dev): bump @typescript-eslint/parser from 8.49.0 to 8.50.1 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/28
- chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.50.0 to 8.50.1 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/30
- chore(deps-dev): bump @eslint/js from 9.39.1 to 9.39.2 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/31
- chore(deps-dev): bump eslint from 9.39.1 to 9.39.2 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/32
- chore(deps-dev): bump typescript-eslint from 8.49.0 to 8.50.1 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/33
- chore(deps-dev): bump @typescript-eslint/parser from 8.50.1 to 8.51.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/34
- chore(deps-dev): bump typescript-eslint from 8.50.1 to 8.51.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/36
- chore(deps): bump dependabot/fetch-metadata from 2.4.0 to 2.5.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/37
- chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.51.0 to 8.52.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/38
- chore(deps-dev): bump typescript-eslint from 8.51.0 to 8.53.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/42
- chore(deps-dev): bump @types/react from 19.2.7 to 19.2.8 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/43
- chore(deps-dev): bump vite from 7.3.0 to 7.3.1 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/46
- chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.53.0 to 8.53.1 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/47
- chore(deps-dev): bump typescript-eslint from 8.53.0 to 8.53.1 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/50
- chore(deps-dev): bump @testing-library/react from 16.3.1 to 16.3.2 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/52
- chore(deps-dev): bump typescript-eslint from 8.53.1 to 8.54.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/53
- chore(deps-dev): bump prettier from 3.7.4 to 3.8.1 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/55
- chore(deps-dev): bump react and @types/react by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/57
- chore(deps): bump minimatch from 10.1.1 to 10.1.2 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/60
- chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.54.0 to 8.55.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/61
- chore(deps-dev): bump @types/react from 19.2.10 to 19.2.13 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/65
- chore(deps-dev): bump @typescript-eslint/parser from 8.54.0 to 8.55.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/62
- chore(deps-dev): bump @types/react from 19.2.13 to 19.2.14 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/66
- chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.55.0 to 8.56.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/67
- chore(deps): bump minimatch from 10.1.2 to 10.2.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/70
- chore(deps-dev): bump @typescript-eslint/parser from 8.55.0 to 8.56.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/71
- chore(deps-dev): bump typescript-eslint from 8.54.0 to 8.56.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/68
- chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.56.0 to 8.56.1 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/74
- chore(deps-dev): bump typescript-eslint from 8.56.0 to 8.56.1 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/76
- chore(deps): bump minimatch from 10.2.2 to 10.2.4 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/77
- chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.56.1 to 8.57.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/79
- chore(deps-dev): bump typescript-eslint from 8.56.1 to 8.57.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/80
- chore(deps-dev): bump @typescript-eslint/parser from 8.57.0 to 8.57.1 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/84
- chore(deps): bump actions/checkout from 5 to 6 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/15
- chore(deps-dev): bump @eslint/js from 9.39.2 to 10.0.1 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/63
- chore(deps-dev): bump eslint from 9.39.2 to 10.0.3 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/83
- chore(deps-dev): bump @types/node from 24.10.1 to 25.5.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/85
- chore(deps): bump dependabot/fetch-metadata from 2.5.0 to 3.0.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/88
- chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.57.0 to 8.57.1 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/87
- chore(deps-dev): bump jest-environment-jsdom from 30.2.0 to 30.3.0 by @dependabot[bot] in https://github.com/DevWizardHQ/laravel-localizer-react/pull/86
- fix: enable code quality workflow on pull requests by @iqbalhasandev in https://github.com/DevWizardHQ/laravel-localizer-react/pull/90
- chore: update npm dependencies by @iqbalhasandev in https://github.com/DevWizardHQ/laravel-localizer-react/pull/89
- fix: resolve npm peer dependency conflict blocking CI by @iqbalhasandev in https://github.com/DevWizardHQ/laravel-localizer-react/pull/91
- chore: bump version to v1.1.0 by @iqbalhasandev in https://github.com/DevWizardHQ/laravel-localizer-react/pull/92
New Contributors
- @iqbalhasandev made their first contribution in https://github.com/DevWizardHQ/laravel-localizer-react/pull/90
Full Changelog: https://github.com/DevWizardHQ/laravel-localizer-react/compare/v1.0.1…v1.1.0
v1.0.1 - 2025-11-10
What’s Changed
- fix: bump version to 1.0.1 in package.json
Full Changelog: https://github.com/DevWizardHQ/laravel-localizer-react/compare/v1.0.0…v1.0.1
v1.0.0 - 2025-11-09
🎉 Initial Stable Release
This is the first stable release of Laravel Localizer React, providing seamless integration between Laravel translations and React applications.
✨ Features
useLocalizer Hook
A powerful React hook for accessing Laravel translations with full TypeScript support:
-
Translation Functions
__() - Main translation function with placeholder replacement and fallback support
trans() - Alias for __() (Laravel compatibility)
lang() - Alias for __() (Laravel compatibility)
has() - Check if translation key exists
choice() - Pluralization support with replacement variables
-
Locale Information
locale - Current locale code (e.g., ‘en’, ‘fr’)
dir - Text direction (‘ltr’ or ‘rtl’)
availableLocales - Available locales with metadata (label, flag, direction)
translations - All translations for current locale
Placeholder Replacement
- Supports both
:placeholder and {placeholder} formats
- Multiple placeholders in single string
- Numeric and string replacements
- Nested placeholder support
Pluralization
- Laravel-compatible pluralization format
- Support for zero, one, and many forms
- Placeholder replacement in pluralized strings
- Custom count-based rules
Vite Plugin
Automatic TypeScript generation with hot module replacement:
- Watches language files for changes
- Non-blocking command execution
- Configurable watch patterns
- Debug logging option
- Integrates with Laravel Artisan commands
Inertia.js Integration
Seamless integration with Inertia.js:
- Automatic locale detection from page props
- Reactive locale updates
- Shared locale data
- RTL support via page props
🎯 TypeScript Support
- Full type definitions
- IntelliSense support in IDEs
- Type-safe placeholder replacements
- Strict mode compatible
- Exported types for custom implementations
🧪 Testing
- Comprehensive test suite with Jest
- React Testing Library integration
- 100% code coverage
- Mock Inertia.js integration
- Example test patterns
📦 Package Configuration
- ESM-only distribution (modern bundlers)
- Tree-shakeable exports
- Separate entry points for hook and Vite plugin
- Proper peer dependencies
- Side-effect free
🔧 Build System
- Built with tsup for optimal bundling
- Source maps for debugging
- Minified production builds
- Declaration files included
� Documentation
- Complete README with examples
- API reference
- Setup guide
- Integration examples
- TypeScript usage patterns
🔗 Dependencies
- React 18 or 19 (peer dependency)
- Inertia.js v1 or v2 (peer dependency)
- Vite 5+ (peer dependency for plugin)
minimatch for pattern matching in Vite plugin
- Memoized translation lookups
- Cached locale data
- Optimized re-renders
- Lazy evaluation
🎨 Developer Experience
- Hot module replacement in development
- Automatic regeneration on file changes
- Clear error messages
- Debug mode for troubleshooting
📝 Requirements
- Node.js 16+
- React 18+
- Inertia.js v1 or v2
- Laravel Localizer backend package