Repository navigation
chore(deps): update dependency @inlang/paraglide-js to v3 - #1230
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/major-inlang-packages
branch
2 times, most recently
from
November 4, 2026 08:32
2e0d3d7 to
b6c4f45
Compare
renovate
Bot
force-pushed
the
renovate/major-inlang-packages
branch
from
November 5, 2026 18:00
b6c4f45 to
3f4a7b0
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^2.26.0→^3.0.0Release Notes
opral/paraglide-js (@inlang/paraglide-js)
v3.1.0Minor Changes
4687696: Include shared bundle descriptions in generated JavaScript JSDoc and TypeScript declarations. Description edits refresh generated documentation, multiline guidance is escaped safely, and descriptions stay out of runtime message metadata and translated text.Description ingestion requires the coordinated inlang SDK 4.2 release and description-capable format plugins. Formats without native metadata use the SDK-managed project companion file.
v3.0.0Major Changes
f65ba59: Remove theadditionalFilescompiler option in Paraglide JS 3. Custom files and overrides of generated files are no longer supported through this option. Existing JavaScript configurations using it fail with migration guidance instead of silently dropping those files.Remove
additionalFilesfrom your compiler, bundler plugin, orparaglide.config.*options. Keep framework helpers and message re-export wrappers in your application source, outside Paraglide's generated output directory. Manage extra assets, metadata, and source maps through your own build tooling. Paraglide continues to generate declarations for its own output whenemitTsDeclarationsis enabled.Allow Paraglide JS 3 in the framework helper packages’ peer dependency ranges.
The CLI emits declarations by default (use
--no-emit-ts-declarationsto disable them). Init explicitly enables declaration emission in generated Vite integrations, compile scripts, and its initial compilation, and no longer reads or changestsconfig.jsonto enableallowJs. The programmatic compiler and bundler plugin option default remainsemitTsDeclarations: false.Use the SDK catalog entry point directly, removing the older SDK database-loading fallback and compatibility detection. Remove the unused deprecated
NodeishFilesystemtype. The publiccreateParaglide()API remains available.05a3e17: RemoveexperimentalMiddlewareLocaleSplittingfor Paraglide v3, including its compiler option, runtime message tracking, and middleware HTML script injection. Generated runtimes no longer exporttrackMessageCallorexperimentalMiddlewareLocaleSplitting, and async local storage no longer tracks message calls.Per-locale builds are the recommended way to ship only the active locale's messages. Remove
experimentalMiddlewareLocaleSplittingfrom your configuration and useexperimentalPerLocaleBuild: truefor supported Vite applications. Per-locale builds require full-document navigation when switching locales and a deployment that selects the matching locale output. See the per-locale build guide for framework and deployment constraints.eb5dc1d: AddoutputStructure: "virtual-modules"and make it the default for the Viteintegration in development and production. Keep public
runtime/message entry points on disk, combine message declarations, and serve
individual message implementations virtually. Safe static message imports avoid
loading the complete message barrel while preserving per-message tree shaking.
This layout requires the Vite plugin. Select
outputStructure: "message-modules"or
"locale-modules"explicitly for physical message files, standalone Nodescripts or grouped output. CLI and other bundler defaults remain unchanged.
Minor Changes
f09ced5: Require SDK 4.1.0 and use its statefulcreateCatalogLoader()for directory compilation. Reuse the loader throughpreviousCompilation, apply complete reset/update batches, and replace the unreleased snapshot catalog integration. ExistingcompileProject(),compileCatalog()and offline plugin caches remain supported.Reuse unchanged generated output and hashes. With the default one-message-per-module layout, translation and input edits compile only changed bundles. Settings, plugin, key-set, option and shared-layout changes use the full emitter as needed; unchanged catalogs reuse output for all layouts. Serialize concurrent compiles and invalidate consumed loader state and disk hashes after publication failures so retries restore missing files. Invalidate Vite's transform cache before error-recovery reloads to serve fresh translations.
Retain opt-in
messageModuleSizegrouping formessage-modulesoutput, including--message-module-sizein the CLI. Groups preserve named exports, input types, metadata, documentation, and per-message tree shaking. The default remains one message per file; import grouped messages throughmessages.jsbecause grouping changes direct generated module paths.565b11b: Generate.d.tsfiles directly whenemitTsDeclarationsis enabled, removing TypeScript compiler analysis and the optional TypeScript peer dependency. TypeScript is no longer required to generate declarations.On a synthetic project with 6,400 messages and three locales, declaration generation takes 23 ms for
message-modulesand 26 ms forlocale-modules, compared with 2.22 s and 2.54 s through TypeScript 7 (about 99% less time). The TypeScript 5 path takes 3.48 s and 20.03 s, respectively. These are medians of three runs on Node.js 22 and measure declaration generation only, excluding project loading, JavaScript generation, and final output writes.Generated declarations preserve boolean literals and common
typeofcomparisons forisServer. Other custom expressions have typeany, allowing bundler-specific expressions without analyzing JavaScript.506efa1: Add a bundler-independentisDevelopmentcompiler expression for runtime diagnostics. Vite uses its resolved development/production mode; other bundler plugins default fromNODE_ENV. Standalone compilation can disable diagnostics withisDevelopment: "false"or--is-development false.Make locale-specialized override warnings development-only and allow unused cookie-pattern setup to be tree-shaken. Keep the shared
globalThis.__paraglideruntime object initialized for backward compatibility and future runtime behavior.Patch Changes
0d500bb: Readwindow.location.hrefingetLocale()only when a route strategy or theurlstrategy needs it. Every message call resolves the locale, and each read ofwindow.location.hrefserializes the URL;getLocale()read it up to three times per call.4bdad54: Give every message and local variable its own identifier in the generated code. Keys that map to the same module id, likea.banda_b, no longer overwrite each other: the key that is that id keeps it, and the others get an escaped id such as$a$2e$b. Messages named_index,evalorarguments, a formatted message namedregistry, and local variables namedi,String,classora-bno longer break the output. In grouped output, ids are unique within a shard, and the declaration barrel exports a type name two shards share under each key's escaped name. The registry is imported as__paraglideRegistry. Keys that don't collide keep their file, export and type names.9a44eb7: WithoutputStructure: "message-modules"and one message per module,messages/_index.d.tsdeclares every message itself instead of re-exporting one declaration file per message, so TypeScript reads one declaration file formessages.js. The per-message declarations remain for direct imports.b2db911: Read existing output files concurrently when hashing the output directory. An unchanged start of the bundler plugins with physical output, and a CLI compile into an existing output directory, no longer read thousands of message modules one at a time.dcac182: Escape line breaks in the quoted string literals the compiler emits, such as formatter option values and.localliterals. A literal containing a line break made the generated module fail to parse.87d1360: Allow message-body inlining in per-locale builds usingoutputStructure: "message-modules", reducing generated client code while retaining locale selection, fallback behavior, and override warnings.49ff68f: Look up locales intoLocale()by their lowercased form instead of lowercasing every configured locale on each call. Calls that resolve their locale through the runtime's strategies paid onetoLowerCase()per configured locale before the active one. The configured locales are treated as immutable, as their readonly type states.9436403: Grouped message modules (messageModuleSizeabove 1) no longer export their shared helper types. Every shard declared__ParaglideOptions,__ParaglideMessageand__ParaglideOptionalMessage, somessages.jsexported them: a module that re-exportedmessages.jsbeside another export of those names failed with TS2308, and with two or more shardsmessages/_index.js(withcheckJs) andmessages/_index.d.ts(withskipLibCheck: false) failed because theirexport *exported the same names from every shard. The helpers are now declared once, inmessages/_shard_types.jsand.d.ts, which the barrel does not re-export, and each shard imports them type-only.4737859: Write catalog and option strings into generated code so they keep their exact value. An input name or match key containing*/no longer ends the generated JSDoc.localStorageKey,cookieNameandcookieDomainmay contain quotes, backslashes,$&or text of the runtime template, like<cookie-domain>. The fallback of an untranslated key with an apostrophe no longer breakslocale-modulesoutput. Markup options and attributes named__proto__are own properties of.parts()objects, and formatter options with a namespace or a dash, likeu:locale, compile.2b999e4: Declarations that hold many messages in one file (messages.virtual.d.ts, andmessages/_index.d.tsand the per-locale files oflocale-modules) now refer to the runtime'sMessageMetadataandMessageParttypes through private shared aliases instead of animport("…")type per message. TypeScript locates eachimport()type by walking the file from its first statement, so creating the program took time quadratic in the number of messages.6f5ccc4: Read the locale of the default URL pattern from the URL thatextractLocaleFromUrl()already parsed, instead of parsing it a second time.localizeHref()andlocalizeUrl()extract the locale of every link they localize.7525f9c: Rewriteconst { key } = m(and other object patterns that read the namespace whole) and fully static template-literal keys such asm[`key`]to direct virtual message imports. Before, both kept the whole message barrel: in development every message module loaded, and a production build that destructuredmbundled the entire catalog.7bcdae7: Rewrite the_unref(m).keyreads that compiled Vue templates use (production builds inline the template into<script setup>) to direct virtual message imports. Vue'sunref(x)returnsx.valueonly whenx.__v_isRef === true; every export of the message namespace is a message function, so none can betrue,unref(m)ism, and these reads are static. Before, a Vue component that usedmin its template kept the whole message barrel, and the production build bundled every message.e32ee1e: Update every Vite environment when virtual messages change. A custom environment, such as a framework's runnable server environment, kept serving the previous translations after a catalog edit, because only the client and SSR module graphs were invalidated. Each environment's module graph is now invalidated and its hot channel notified, once. Vite 5, which has no environment API, keeps the previous behavior.v2.29.3Patch Changes
d34c86c: Stop the bundler plugins from rewriting unchanged output when a watch event arrives beforebuildStartor after a failed compile. Such a recompile now starts from the hashes of the output on disk, asbuildStartdoes, so it writes only the files that differ. Previously it rewrote every generated file, and in Vite each rewritten message module became another watch event: withmessage-modulesand a few thousand messages, a dev server could stay busy for minutes after startup.Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.