JSFiddle - React, Tailwind, and code Playground

HTML

<div class="container">
    <h4>table-bordered with <code>tbody</code> and no content in Firefox</h4>
    <p>There are no borders. However, when you add a row, the tables displays the borders as expected. This only seems to be an issue when using thead + tbody(no content) + tfoot.</p><br>
	<table class="table table-bordered table-striped">
		<thead>
			<tr>
				<th>thead th</th>
				<th>thead th</th>
				<th>thead th</th>
				<th class="col-xs-3">thead th</th>
			</tr>
		</thead>
		<tbody>
		</tbody>
		<tfoot>
			<tr>
				<td>tfoot td</td>
				<td>tfoot td</td>
				<td>tfoot td</td>
				<td><button type="button" class="btn btn-info">Add Row</button></td>
			</tr>
		</tfoot>
	</table>   
</div>

CSS

/* BEGIN NORMALIZE */
/*! normalize.css v3.0.1 | MIT License | git.io/normalize */

/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS text size adjust after orientation change, without disabling
 *    user zoom.
 */

html {
  font-family: sans-serif; /* 1 */
  -ms-text-size-adjust: 100%; /* 2 */
  -webkit-text-size-adjust: 100%; /* 2 */
}

/**
 * Remove default margin.
 */

body {
  margin: 0;
}

/* HTML5 display definitions
   ========================================================================== */

/**
 * Correct `block` display not defined for any HTML5 element in IE 8/9.
 * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox.
 * Correct `block` display not defined for `main` in IE 11.
 */

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
  display: block;
}

/**
 * 1. Correct `inline-block` display not defined in IE 8/9.
 * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
 */

audio,
canvas,
progress,
video {
  display: inline-block; /* 1 */
  vertical-align: baseline; /* 2 */
}

/**
 * Prevent modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */

audio:not([controls]) {
  display: none;
  height: 0;
}

/**
 * Address `[hidden]` styling not present in IE 8/9/10.
 * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
 */

[hidden],
template {
  display: none;
}

/* Links
   ========================================================================== */

/**
 * Remove the gray background color from active links in IE 10.
 */

a {
  background: transparent;
}

/**
 * Improve readability when focused and also mouse hovered in all browsers.
 */

a:active,
a:hover {
  outline: 0;
}

/* Text-level semantics
   ========================================================================== */

/**
 * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
...

JavaScript

$('button').on('click',function(){
	tr='<tr><td>td</td><td>td</td><td>td</td><td><button type="button" onclick="$(this).closest(\'tr\').remove();" class="btn btn-danger">Remove</button></td></tr>';
	$('tbody').append(tr);
});