Skip to content

March 2026 Recap

← Back to blog
March 2026 Recap

March 2026 Recap

March was a huge month for Varlock! Thanks to everyone who discovered, tried out, and shared Varlock with the world. Special thanks for all of the new contributions and feedback from the community.

scott-tweet Be like Scott!

πŸ”§ Core Improvements

March included a large set of core changes across features, reliability, and DX (including improvements in varlock@0.7.0).

Features

  • Single-file ESM and TypeScript plugins - Plugin authors can now write single-file plugins in .mjs and .ts (in addition to .js/.cjs). See the plugin guide.
  • Explicit plugin imports - Plugins now import plugin directly from varlock/plugin-lib, with better compatibility across regular installs and Bun-compiled binaries.
  • varlock typegen command - Added environment-independent type generation as a first-class command. See varlock typegen docs.
  • ifs() function and improved remap() - New Excel-style conditional function plus positional arg pairs for remap(). See ifs() docs and remap() docs.
  • @setValuesBulk(enabled=...) - Bulk value loading can now be conditionally enabled. See @setValuesBulk() docs.
  • Custom env load path via package.json - More flexible loading behavior for app/workspace setups. See varlock.loadPath docs.
  • Plugin standard variable detection - Plugins can declare expected env vars to surface better wiring warnings.
  • Relaxed header divider requirement - Header comment blocks no longer require a trailing divider before first config item. See root decorator header docs.

Fixes and Reliability

  • Import condition correctness - @import(enabled=...) and @disable now correctly see values from auto-loaded files such as .env, .env.local, and env-specific variants.
  • Shell output safety - varlock load --format shell now safely escapes special characters to avoid shell expansion/injection issues.
  • Plugin loading stability - Multiple fixes for plugin loading in SEA binaries, Windows file URL handling, and monorepo/workspace resolution.
  • Container and runtime resilience - Fixed crashes when config directories are not writable (common in containers/Kubernetes) and added XDG_CONFIG_HOME support.
  • CLI behavior consistency - Improved invalid load path handling (CliExitError), corrected printenv positional argument resolution, and fixed telemetry-disable messaging.
  • Docker on Alpine - Added required runtime libraries to avoid startup failures.
  • Runtime edge-case fixes - Addressed issues like deferred auth/error handling in plugin resolution and patchGlobalResponse behavior impacting fetch checks.

Developer Experience

  • Bun/runtime checks - Enforced minimum Bun version checks at runtime and improved version-check behavior.
  • Type generation polish - Added a ts-nocheck directive to generated type output. Thanks @developerzeke.
  • Improved docs/help quality - Lots of docs updates and integration guidance improvements, including the direnv integration docs and the CLI reference.

πŸš€ New Integrations and Plugins

The Varlock ecosystem grew this month with new integrations and plugins, plus major updates to existing ones:

🌐 Content Highlights

We loved seeing strong community engagement this month:

πŸ’¬ Community

We’re always looking for feedback and ideas. Join our growing community:

  • Discord - Chat with us and other users.
  • GitHub Discussions - Suggestions, questions, and feature ideas.
  • GitHub - Star the project and follow us on GitHub.
  • X - Follow us on X.
  • Bluesky - Follow us on Bluesky.
← Back to blog