I noticed this when trying to make a database call in the before_template_render hook (to conditionally set a token if a row exists). To reproduce: $ echo "my custom error message" > views/error.tt --------- package App; use Dancer ':syntax'; set show_errors => 0; set error_template => 'error.tt'; hook before_template_render => sub { die; }; get '/' => sub { template 'index.tt'; }; true; --------- It can be resolved by adding a simple check inside Dancer::Template::Abstract::apply_renderer() : --------- @@ -73,9 +73,13 @@ sub apply_renderer { ($tokens, undef) = _prepare_tokens_options($tokens); + my $is_error_template + = $view eq Dancer::Config::setting('error_template') ? 1 : 0; + $view = $self->view($view); - Dancer::Factory::Hook->execute_hooks('before_template_render', $tokens); + Dancer::Factory::Hook->execute_hooks('before_template_render', $tokens) + unless $is_error_template; --------- Is it worth making a PR for this? -- Alex