It seems to me that it's already as easy as it can be. res.locals is for local variables related to the response to the current request. If your response is a redirect, then that is the end of the response and the locals go away. The browser will then make a second request (for the redirected address), and your app will then deliver a second response, which could have its own locals. HTTP is not stateful -- there is no relationship between one request and the next. Any such relationship we create in our applications is a fiction held together by a unique ID sent as a cookie, a mechanism which is commonly called a session. If you want variables to persist from one request to another, put them in the session. If you don't want to manage this yourself, use a module that does, like presumably connect-flash.