As frontend development continues to evolve, it's important to consider whether we're moving forward or just going backwards. While TypeScript has been a major step forward since its release in 2012, only Angular has embraced strongly-typed frontend applications. The use of TypeScript interfaces and models generated from API specifications is crucial in building full-fledged business applications.

However, the frontend landscape is cluttered with React-like libraries and frameworks, each with their own set of challenges. While Angular provides a clear direction for structuring components and preventing CSS bleeding/overwriting, implementing event-driven programming with RxJs can be challenging in React. The implementation often involves the use of state management and custom hooks, leading to unnecessary boilerplate code and nested components.

Furthermore, the trend of putting JavaScript and HTML in one file can make code messy, and many React clone developers are reinventing the wheel by creating their own common functionalities without best practices. This results in import hell, unintended code duplication, and ignoring NPM audit errors.

Rather than building the next React clone, it's time for frontend developers to establish best practices, embrace TypeScript, reduce boilerplate code, and avoid inventing the wheel again. Angular sets a good example of a coherent approach to development, and we should strive for similar consistency in the frontend landscape.