How many libraries is too much before there is a performance issue? We are using Paragraphs module to allow for selecting of up to 15 different Paragraph Types. As part of this, each one requires its own CSS and JS since they are vastly different. We already have a common set of CSS and JS that can be shared (25% overall), but there is a large percentage (75%) that is unique to each Paragraph Type. 

We were able to combine lots of the CSS and JS, which resulted in the creation of 10 libraries and 1 general library to help with the management of these types. We are concerned that if we add more Paragraph Types the number of libraries could increase to anywhere between 20-30 as newer Paragraph Types are needed. 

How many libraries is too much for a custom subtheme before it cause a performance issue (if any)? 

Since there is no extra preprocessing needed per Paragraph Type, we simply add them using the {{ attach_library('mytheme/name') }} in twig templates. The only hook that is used is the one to add the general library. 

mytheme is a subtheme and is set as default and enabled

Examples:

paragraph--carousel.html.twig

{# this is the paragraph type specific library #}
{{ attach_library('mytheme/carousel') }} 

&lt;div class="carousel__wrapper"&gt; 
  &lt;div class="carousel__title"&gt; {{ content.field_title }} &lt;/div&gt;
  &lt;div class="carousel__subtitle"&gt; {{ content.field_sub_title }} &lt;/div&gt;
  &lt;div class="carousel__text"&gt; {{ content.field_description }} &lt;/div&gt;
  &lt;div class="carousel__image"&gt; {{ content.field_image }} &lt;/div&gt;
  &lt;div class="carousel__dots"&gt; &lt;/div&gt;
&lt;/div&gt;


paragraph--jump-menu.html.twig

{# this is the paragraph type specific library #}
{{ attach_library('mytheme/jump-menu') }} 

&lt;div class="jmenu__wrapper"&gt; 
  &lt;div class="jmenu__tab"&gt; {{ content.field_title }} &lt;/div&gt;
&lt;/div&gt;


mytheme.module

function mytheme_preprocess_paragraph(&amp;$variables) {
  // Add general library for paragraphs.
  $variables['#attached']['library'][] = 'mytheme/global';
}
In Drupal, the best way to do your CSS is to keep it componentalized, and attach the CSS using #attached directly to the item to which it belongs. This way, the CSS is only ever attached when needed, and if a user overrides the render array further down the pipeline, removing the element to which the assets are attached, the assets will not be attached to the page, including unnecessary CSS.

Then you turn on CSS aggregation (or even better, use the ADVAGG module), and Drupal will handle the heavy lifting, aggregating the files as needed for the page.

So the answer to your question is that there aren't too many libraries. What is more important is effective management of the CSS/JS you are attaching.