
What I like most about PrimeNG is how much time it saved me. I used it to build an internal tool at my previous company where employees log their hours, track tasks, and manage their learning, and almost every UI piece I needed was already there. The Table component alone did so much of the heavy lifting, with sorting, filtering, pagination, and inline editing built in, which was perfect for timesheet and task views. The Calendar, Dropdown, MultiSelect, and Dialog components made the forms quick to build, and things like the ProgressBar and Tabs worked nicely for the learning section.
It also fits into Angular really naturally. The components feel like they were made for Angular, the documentation has clear examples for almost everything, and I could usually copy a demo, tweak it, and move on. Performance was good even with large tables of employee data, especially with lazy loading and virtual scrolling. And since it's free and open source, it was an easy choice for an internal product where we didn't want to spend on licensing. Review collected by and hosted on G2.com.
My biggest complaint is that PrimeNG doesn't always feel developer friendly. There are a lot of directives to remember, and the naming conventions were confusing. Some things are components (p-button) while others are directives on native elements (pButton, pInputText), and names like OverlayPanel or InputSwitch weren't intuitive, which is probably why PrimeNG later renamed several of them. Customizing table templates meant using pTemplate with string names like "header" and "body", so a typo just silently broke things instead of giving a clear error.
Integration and onboarding took more effort than I expected. PrimeNG's versions are tied closely to Angular's, so you can't upgrade one without the other, and every major release seems to rename components or change the theming system. Setting up a new project also means pulling in several separate pieces, like themes, PrimeIcons, and PrimeFlex, and the docs always show the latest version, so examples often didn't match the version we were on. For new developers on the team, it took a while to learn which patterns were current and which were outdated. Styling was also a struggle, since matching our design meant overriding CSS with ::ng-deep and high-specificity selectors.
Support is the other gap. Community help through GitHub and forums can be hit or miss, and only the latest version gets free bug fixes. If you stay on an older version for stability, which is common for internal tools like ours, you need a paid LTS license to keep getting patches. It's still a great library for building quickly, but it takes patience to maintain over time. Review collected by and hosted on G2.com.