Hello,
i tried to use a shader on a batchnode, the shader work well but the uniforms are not updated.
when i replace in the shader code, the uniforms by var, the shader work, but when i want update uniforms the update has no effect, with the help of GLProgramState
but when i do the old way :
GLint uniformLocation = glGetUniformLocation(m_prog->getProgram(), “uSize”);
prog->setUniformLocationWith2f(uniformLocation, size.x, size.y);
it work like a charm 
at this moment i work on cocos2dx 3.8.1
is this a bug ?