Skip to content

Drop jQuery 1.9.1 + Bootstrap 3.3.6 JavaScript (#1288) - #1295

Merged
jonfroehlich merged 1 commit into
masterfrom
1288-drop-jquery-bootstrap-js
Jun 15, 2026
Merged

Drop jQuery 1.9.1 + Bootstrap 3.3.6 JavaScript (#1288)#1295
jonfroehlich merged 1 commit into
masterfrom
1288-drop-jquery-bootstrap-js

Conversation

@jonfroehlich

Copy link
Copy Markdown
Member

Capstone of Track A (#1288 / #1253). Removes the jQuery 1.9.1 and Bootstrap 3.3.6 <script> tags from base.html — they're now unused.

Why this is safe now

With the navbar (#1290), scrollspy (#1291), citation popover (#1292), and carousel (#1293) all converted to vanilla JS, nothing in the frontend uses jQuery or Bootstrap JS anymore. Verified on master after those merges:

  • 0 $(...) / jQuery calls in our JS.
  • 0 inline $() blocks in any template.
  • 0 Bootstrap-JS data-api attributes (data-ride/data-spy/data-slide-to/data-toggle="collapse"/modal/tab/tooltip/dropdown) — the only remaining data-toggle="popover" is an inert selector for the vanilla popover (Bootstrap popovers have no data-api).
  • base.html was the only template that loaded these libraries.

What changes

  • Remove the jQuery 1.9.1 and Bootstrap 3.3.6 JS <script> tags from base.html.
  • Tidy a now-stale comment in project-sidebar-sticky.js.

Bootstrap CSS stays (bootstrap.min.css) — only the JavaScript is removed. The grid/CSS migration is the separate Track B.

Payoff

  • Drops ~70KB of CDN JS (jQuery ~33KB + Bootstrap JS ~37KB, minified) from every page.
  • Removes jQuery 1.9.1 (2013), which has known XSS vulnerabilities.
  • The frontend is now jQuery-free and Bootstrap-JS-free.

Verification

All pages return HTTP 200 with no jquery/bootstrap*.js in served HTML and bootstrap.min.css still present (/, /publications, /awards, /people, /projects, /news, a project page). Each interactive component was verified in-browser in its own PR; this PR is the first time they run with the libraries fully absent, so a final in-browser smoke-check of navbar + citation popover + carousel is worthwhile before merge.

Closes #1288. Refs #1253.

Final step of Track A (#1253). With the navbar (#1290), scrollspy (#1291),
citation popover (#1292), and carousel (#1293) all converted to vanilla JS,
nothing in the site's frontend uses jQuery or Bootstrap's JS any longer
(verified: zero `$(...)` calls, zero Bootstrap data-api attributes besides the
inert `data-toggle="popover"` selector). This removes the two now-unused CDN
script tags from base.html:

  - jQuery 1.9.1 (2013; known XSS issues)
  - Bootstrap 3.3.6 JS

Bootstrap's CSS (bootstrap.min.css) stays — only the JavaScript is removed;
the grid/CSS migration is the separate Track B.

Also tidied a now-stale comment in project-sidebar-sticky.js (the rest of the
codebase no longer uses jQuery).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jonfroehlich
jonfroehlich merged commit d36c05f into master Jun 15, 2026
1 check passed
jonfroehlich added a commit that referenced this pull request Jun 15, 2026
Bumps ML_WEBSITE_VERSION 2.4.0 -> 2.5.0. Marks the completion of Track A
(#1288): the frontend is now jQuery-free and Bootstrap-JS-free. Navbar (#1290),
citation popover (#1292), and carousels (#1293) rewritten in vanilla JS; dead
scrollspy (#1291), jQuery UI, jQuery Easing, and back-to-top removed
(#1289/#1290); jQuery 1.9.1 + Bootstrap 3.3.6 JS script tags dropped (#1295).
Bootstrap CSS unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jonfroehlich jonfroehlich mentioned this pull request Jun 15, 2026
20 tasks
@jonfroehlich
jonfroehlich deleted the 1288-drop-jquery-bootstrap-js branch June 22, 2026 20:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Track A: Drop jQuery 1.9.1 + Bootstrap 3.3.6 JavaScript (vanilla replacements)

1 participant