// the find
sebastienros/fluid
Fluid is an open-source .NET template engine based on the Liquid template language.
Fluid is a .NET Liquid template engine built on top of the Parlot parser — no regexes, just a proper CST. It's designed for situations where you need to hand templates to non-developers safely, like Shopify-style storefronts or email builders, and you need to do it in a .NET stack.
The security model is the main feature worth calling out: nothing is accessible in a template unless you explicitly register it via MemberAccessStrategy, so user-supplied templates can't reflect their way to your internals. Async filter support is real and baked in at the API level, not bolted on — templates can await DB queries without blocking threads. The parser exposes a proper CST and visitor/rewriter infrastructure, so you can analyze or transform templates before they run, which most template engines don't offer at all. NativeAOT + trimming support with source-generated member accessors is genuinely useful for anyone publishing self-contained binaries.
The security model is a double-edged sword: every .NET type you want to use in a template requires explicit registration, which creates friction and confusion for straightforward use cases where you just want to dump a model into a template. The README is v2 beta documentation but the NuGet still shows a stable 1.x path, so it's unclear what you should actually ship in production. The Liquid language itself is the ceiling — if you need conditionals beyond basic comparisons, real functions, or template inheritance beyond include/render, you're fighting the language spec. The custom tag/block grammar extensibility via Parlot is powerful but the documentation stops well short of complex cases, so you'll be reading parser source code.