Client-side reactive templates