angularangular-materialangular-cliprimengbootstrap-5

UI framework for Angular 12 project


We are going to create a new project on Angular 12. I need suggestions to choose the UI framework.

We have options of Bootstrap 5, Angular Material, and primeNg.

I have done the below research:

Bootstrap 5 is good for beginner developers, and responsive, but not useful to create any complex components. Developers have to do it manually.

Angular Material is good for theming, and providing good widgets but does not have any type of inbuilt chart and responsive support.

PrimeNg is good for simple and complex components which provides all types of widget charts, complex grids, tabs. It has all the packages, responsiveness. But, it does not provide any customization.

This is what I have done analysis.

Our requirement is that we do not want to create unnecessary complex component so that we can focus on data which support ready-made components and want to avoid multiple libraries. We will require the support of i18n and accessibility feature support as well.

Any recommendations or suggestions would be really appreciated.


Solution

  • I have used all 3 libraries you mention and others. My thoughts on your observations.

    Bootstrap - waste of space, very old-school and boring looking. It's grid system made it famous but CSS grid now means it's redundant.

    Angular Material - Professional components but customization and overly complex markup can become a real pain. For example, if you want to add custom buttons in the datepicker modal then you need a degree and 2 days to add them! If you are doing nothing outside the norm then it's bearable.

    primeng - Nice lib and easy to integrate with but little customization is available. Also, components can be inconsistent. For example, one may require you to style the width with CSS and the next one provides a width input property. Also, upgrading between versions can really break the look and feel of your app.

    As much as I hate it (and I really do) and am really peeved that the top Angular lib is so painful to work with (really painful), and due to lack of decent competition, I would recommend Angular Material.

    However, if you want some other ideas then look at Rising Stars.

    In particular, NG-ZORRO, is pretty popular. However, for me personally, it suffers similar issues to primeng.

    All in all, a component lib should meet most your needs. However, there's always going to be something extra wacky that you need to implement and for these one-offs an additional lib that specializes in that specific area is usually a must.