#4723·Twig

New "spaceless" alternative mode where whitespace is opt-in with `{#+`.

Author: donquixoteCreated Dec 11, 2025Updated Feb 4, 2026

Current situation

Currently, adding a - to a twig tag causes whitespace removal. E.g. {#- some comment #}, here whitespace is removed before but not after the comment.

Without the -, a single whitespace between twig tags is removed, but a double line break \n\n is not.

Proposal

I would like to propose a new mechanism that turns this around.

We introduce a new mode-switching twig tag {% spaceremoved %}, which would typically be placed at the top of a template. (I would call it "spaceless" but that term now has a history. Open to suggestions.)

This allows to opt-in to this mechanism per template or per snippet, thus avoiding BC problems.

When this mode is enabled:

  • A twig tag without - is treated as if it had -. E.g. {# some comment #} is treated like {#- some comment #}.
  • A twig tag with + is treated like a regular tag without -. So, {#+ some comment +#} is treated like {# some comment #}.

Example

twig
{% spaceremoved %} 
hel {# remove space before and after #} lo {#+ keep space before #} world

This is equivalent to

twig
hel {#- remove space before and after -#} lo {# keep space before -#} world

which prints as

hello world

See also

I found

  • #4442, which discusses the same problem, but does not propose this specific solution.