Flash messages not working as expected

I've been trying to implement flash messages in an app I'm
building but running into a few fundamental issues.
I'm using native PHP sessions, so I start the session with
session_start().
I then set a message using the flash command.
$app->flash('error', 'This is a test error');.
I tried to access this via a twig template - and nothing. I have
not been able to find a good explanation on how I should be
accessing the variables via twig - so I tried everything. {{
flash.error }} and {{ error }} and even
{{ slim.flash.error }}.
I was getting nothing - so I decided I would check the session
variable in PHP to see what was going on.

And I could see that it is getting written. What seemed odd
though - is it only appears in the session variable on refresh. If
I change the text, reload the page, the session variable holds the
previous data. It's only on refresh that it is updated. So I tried
using flashKeep. Nothing is written into that session variable -
ever.

So I'm completely stumped - any ideas on what might be happening
here?

I should add - I believe the $app->flash('var',
'message'); method will set the variable for the next
request (so it will be available for a redirect) - that PROBABLY
explains the reload behaviour. So using
$app->flashNow (which would be for the current
request) would seem to be the go - but it just trashes the
slim.flash SESSION array - leaving it empty.