Why frontend frameworks need hydration