ngx-bootstrap vs ngx-popperjs
Angular UI Component Libraries Comparison
1 Year
ngx-bootstrapngx-popperjsSimilar Packages:
What's Angular UI Component Libraries?

Both ngx-bootstrap and ngx-popperjs are libraries designed to enhance Angular applications by providing reusable UI components and utility functions. ngx-bootstrap offers a comprehensive set of Bootstrap components that are Angular-friendly, allowing developers to easily integrate Bootstrap's styling and functionality into their Angular projects. On the other hand, ngx-popperjs focuses on providing a robust positioning engine for tooltips and popovers, leveraging the capabilities of Popper.js to manage the placement of elements in relation to others, ensuring they are always visible and correctly aligned. Together, these libraries can significantly improve the user interface and user experience of Angular applications by providing ready-to-use components and precise positioning capabilities.

Package Weekly Downloads Trend
Github Stars Ranking
Stat Detail
Package
Downloads
Stars
Size
Issues
Publish
License
ngx-bootstrap317,0455,5282.89 MB5752 months agoMIT
ngx-popperjs15,65266253 kB0a month agoMIT
Feature Comparison: ngx-bootstrap vs ngx-popperjs

Component Availability

  • ngx-bootstrap:

    ngx-bootstrap provides a rich set of components such as modals, alerts, buttons, dropdowns, and more, all designed to work seamlessly with Angular. This library allows developers to leverage Bootstrap's styling while adhering to Angular's component architecture, making it easier to create responsive and visually appealing applications.

  • ngx-popperjs:

    ngx-popperjs does not provide UI components but focuses on the logic for positioning elements. It allows developers to create their own tooltips, popovers, and dropdowns with precise control over their placement, which is essential for dynamic interfaces where elements may change position.

Customization

  • ngx-bootstrap:

    With ngx-bootstrap, customization is straightforward as it follows Bootstrap's conventions. Developers can easily override styles and modify component behavior through Angular's input properties and CSS classes, allowing for a high degree of flexibility while maintaining a consistent design language.

  • ngx-popperjs:

    ngx-popperjs offers customization primarily through its API, allowing developers to define placement options, modifiers, and event listeners. This flexibility is beneficial for creating unique positioning behaviors but may require more effort to integrate with existing UI components.

Integration with Angular

  • ngx-bootstrap:

    ngx-bootstrap is specifically built for Angular, ensuring that all components are optimized for Angular's change detection and lifecycle hooks. This integration allows for smoother performance and easier debugging within Angular applications.

  • ngx-popperjs:

    ngx-popperjs can be integrated into Angular applications but requires additional setup to manage the lifecycle of poppers. Developers need to ensure that poppers are created and destroyed appropriately, which may add complexity compared to using a fully integrated library.

Performance

  • ngx-bootstrap:

    Performance is generally good with ngx-bootstrap, as it leverages Angular's change detection efficiently. However, developers should be mindful of the number of components rendered at once, as excessive use can lead to performance bottlenecks, especially in large applications.

  • ngx-popperjs:

    ngx-popperjs is highly performant for positioning, as it efficiently recalculates positions on window resize or scroll events. It minimizes reflows and repaints, making it suitable for applications where tooltips or popovers are frequently displayed.

Learning Curve

  • ngx-bootstrap:

    The learning curve for ngx-bootstrap is relatively low for developers already familiar with Bootstrap. The documentation is comprehensive, making it easy to get started with integrating Bootstrap components into Angular applications.

  • ngx-popperjs:

    The learning curve for ngx-popperjs may be steeper, especially for developers unfamiliar with the concept of positioning libraries. Understanding how to effectively use the API and manage popper instances can take some time, but the flexibility it offers is valuable for complex UI requirements.

How to Choose: ngx-bootstrap vs ngx-popperjs
  • ngx-bootstrap:

    Choose ngx-bootstrap if you need a wide range of pre-built Bootstrap components integrated with Angular, especially if you are already familiar with Bootstrap's design principles and want to maintain a consistent look and feel across your application.

  • ngx-popperjs:

    Choose ngx-popperjs if your primary requirement is to manage the positioning of tooltips, popovers, or dropdowns in a precise manner. It is ideal for applications that require dynamic positioning based on user interactions or viewport changes.

README for ngx-bootstrap
ngx-bootstrap

ngx-bootstrap

The best way to quickly integrate Bootstrap 5 Bootstrap 4 Components with Angular

Note: ngx-bootstrap for Bootstrap 3 is still available but is no longer maintained or updated. development

npm latest version npm next version
npm version npm downloads
slack

Links

Table of contents

  1. Getting Started
  2. Usage & Demo
  3. Supporting
  4. Installation
  5. Compatibility
  6. Troubleshooting
  7. Contributing
  8. Credits
  9. License
  10. Valor Can Help

Getting Started

ngx-bootstrap provides Bootstrap components powered by Angular, so you don't need to include original JS components.

Check our Getting started guide if it's your first project with Angular Bootstrap.

Usage & Demo

Bootstrap components for Angular applications, dozens of demos and API documentation could be found here: https://valor-software.com/ngx-bootstrap/.

Supporting ngx-bootstrap

ngx-bootstrap is an Open Source (MIT Licensed) project, it's an independent project with ongoing development made possible thanks to the support of our awesome backers. If you also would like to show support or simply give back to Open Source community, please consider becoming a backing sponsor of ngx-bootstrap on OpenCollective.

All donated funds are managed transparently on OpenCollective and will be used solely for compensating work and expenses for contributors. Valor Software employees and contractors are not eligible for use of these funds.

What's in it for you? Proper recognition and exposure of your name/logo/website on our page. Our main sponsors will be presented under this section! Be the first!

Installation

You can see the below simple example working on StackBlitz

Angular CLI way

Use the Angular CLI ng add command for updating your Angular project.

ng add ngx-bootstrap
Manual way

Install ngx-bootstrap from npm:

npm install ngx-bootstrap --save

Add wanted package to NgModule imports:

import { TooltipModule } from 'ngx-bootstrap/tooltip';

@NgModule({
  ...
  imports: [TooltipModule,...]
  ...
})

Add component to your page:

<button type="button" class="btn btn-primary"
        tooltip="Vivamus sagittis lacus vel augue laoreet rutrum faucibus.">
  Simple demo
</button>

You will need to add bootstrap css: This can be done with the css file directly in the index.html, or alternatively through a styles import in the angular.json file or via styles.scss import. However the latter two options require additionally installing bootstrap via npm.

  • Bootstrap 5
<!--- index.html -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
  • Bootstrap 4
<!--- index.html -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2">

Setting up the bootstrap version manually

As you may know ngx-bootstrap supports several bootstrap.css versions at the same time and has automatic tool to guess current used version of library, but if this guess fails you can specify version of bootstrap.css manually.

Sometimes, your project might contain some library that could interfere with the bootstrap framework, or you might have a customized version of bootstrap. The consequence is that the process of determining bootstrap version might be failed, which can break the UI. In that case, we can still set the bootstrap version manually in the bootstrapping component (i.e. AppComponent):

import { setTheme } from 'ngx-bootstrap/utils';

@Component({...})
export class AppComponent {
  constructor() {
    setTheme('bs5'); // or 'bs4'
    ...
  }
}

How to build lib for development

First time:

git clone https://github.com/valor-software/ngx-bootstrap.git
cd ngx-bootstrap
npm ci
npm run build
npm start

Compatibility

The only two dependencies are Angular and Bootstrap CSS. Here is the version compatibility list:

| ngx-bootstrap | Angular | Bootstrap CSS | |---------------|-----------------|----------------| | 18.x.x | 18.x.x | 5.x.x or 4.x.x | | 12.x.x | 17.x.x | 5.x.x or 4.x.x | | 11.x.x | 16.x.x | 5.x.x or 4.x.x | | 10.x.x | 15.x.x | 5.x.x or 4.x.x | | 9.0.0 | 14.x.x | 5.x.x or 4.x.x or 3.x.x | | 8.0.0 | 12.x.x - 13.x.x | 5.x.x or 4.x.x or 3.x.x | | 7.1.0 | 11.x.x - 12.x.x | 5.x.x or 4.x.x or 3.x.x | | 7.0.0 | 11.x.x - 12.x.x | 3.x.x or 4.x.x | | 6.0.0 | 9.x.x - 10.x.x | 3.x.x or 4.x.x | | 5.6.x | 7.x.x - 9.1.0 | 3.x.x or 4.x.x | | 5.0.0 - 5.6.0 | 7.x.x - 8.x.x | 3.x.x or 4.x.x | | 4.x.x | 6.x.x - 7.x.x | 3.x.x or 4.x.x | | 3.x.x | 6.x.x - 7.x.x | 3.x.x or 4.x.x | | 2.x.x | 2.x.x - 4.x.x | 3.x.x or 4.x.x | | 1.x.x | 2.x.x | 3.x.x or 4.x.x |

Troubleshooting

So if you are in trouble, here's where you can look for help.

The best place to ask questions is on StackOverflow (under the ngx-bootstrap tag) where there is a strong community of individuals asking and answering questions.

You can also join our Slack channel and link your stackoverflow question there. But try to avoid asking generic help questions directly on Slack since they can easily get lost in the chat. You can also search among the existing GitHub issues.

If none of the above helped, please feel free to open a new issue.

Contribution

All contributions very welcome! And remember, contribution is not only PRs and code, but any help with docs or helping other developers to solve issues are very appreciated! Thanks in advance!

Please read our contribution guidelines.

Credits

Crossbrowser testing sponsored by Saucelabs Saucelabs

License

MIT

Valor Software Can Help

At Valor Software our people are not resources, our people are human beings, helping to create a better world through our efforts and knowledge. We are here to assist you with your project. We have a wonderful, ever-growing team that is ready and able. If you're looking for someone to guide you and your team please feel free to reach out to us on our site or at sales@valor-software.com, we would love to chat.