Toolbelt: A New Jetpack-Inspired Plugin with a Focus on Speed and Privacy

Toolbelt plugin banner

WordPress theme and plugin developer Ben Gillbanks is building a Jetpack alternative with an emphasis on speed, simplicity, and privacy. Toolbelt is a new, lightweight plugin that offers a collection of functionality that is commonly-used on WordPress sites. Currently available modules include features like breadcrumbs, browser native lazy loading, a Portfolio custom post type, related posts with images, responsive video, static social sharing, and more.

Gillbanks runs Pro Theme Design, a commercial WordPress theme shop, and has sold themes on WordPress.com for the past seven years. He likes the idea of Jetpack and all of his commercial themes support it, but a desire to deliver more performant and sustainable sites drove him to create Toolbelt. He’s working on a new free theme called Jarvis that will be released on WordPress.org with full Toolbelt compatibility.

“With my new theme I wanted to make something that was fast, private, and accessible. Inspired by people like Jack Lenox with Susty (and his talk at WordCamp Europe), I wanted to make something more sustainable. In testing my theme on my personal site I found that Jetpack was slowing it down. So I started rebuilding the features I wanted to use as an optimized plugin.”

Toolbelt currently includes more than a dozen modules, offered in a format similar to Jetpack but with a dramatically stripped down management interface in the admin. All modules are disabled by default so users can turn on only the ones they need.

The settings page includes a column that transparently displays the page impact for several of the modules, as high performance is one of Gillbanks’ chief goals for the plugin.

“I had been testing my theme on a dev server and it was getting a score of 99 or 100 – but when I added it to my personal site the score dropped,” he said. “It took me a while to realize the problem was Jetpack, and once I had disabled Jetpack my score went up to 99 or 100 again. So now, each time I add a feature, I test the site to make sure I am maintaining the performance I am testing my site, with each feature and – hopefully – keeping the score nice and high.”

Although Toolbelt borrows a lot of code from both Jetpack and the Machete plugin, Gillbanks made some deliberate choices in favor of performance when loading the code for the modules:

  • Doesn’t use jQuery or any other javascript framework. All javascript is vanilla js, and minified.
  • Minifies all assets (JS and CSS)
  • Loads all assets inline. They are already small, and loading them directly on the page means there are no server requests.
  • Only loads things when they are needed. JS and CSS are only loaded for activated modules.
  • No options. There’s only one database option, and that’s an array that stores what modules are active.
  • Uses the minimum code possible. Minimum Javascript and PHP. Less code means more speed, and fewer bugs.

Toolbelt’s Approach to Privacy: No Phoning Out, No User Tracking

Privacy is one of the most important aspects of the plugin for Gillbanks, who is English and has to deal with GDPR and EU cookie laws. Toolbelt does not phone out for any of its features, nor does the plugin share data with third parties or use standard social sharing JavaScripts. It also does not track usage or add any comments to the site’s HTML.

“One of the downsides of Jetpack is that it relies on the wordpress.com servers, including hosting images and content on their site,” Gillbanks said. “Things like Related Posts sync the blog post data to their servers so it can be searched and filtered.”

The privacy choices built into Toolbelt may limit Gillbanks’ ability to reproduce certain features that rely on third-party servers, such as visitor stats, downtime monitoring, and image CDN.

“I’m not sure if I’ll add these features, or partner with privacy focused third party services,” Gillbanks said. “I must admit I’d really like to add the stats so I’m hoping I can find someone to work with.”

Toolbelt is heavily inspired by Jetpack but Gillbanks said he doesn’t plan to rebuild all of its features. He is starting with the easier ones and focusing on the ones he wants to use. He also doesn’t have plans to monetize it anytime soon.

“I’m open to adding premium features in the future, but if I do I won’t start charging for anything that is currently free,” he said. “For the time being I just want to keep adding more modules and making something that I find useful.”

Gillbanks is currently working on improving Toolbelt’s cookie consent bar to build a method for having it allow an ‘accept’ and ‘decline’ option, so that tracking is only enabled when users press the accept button. This assists those who want to follow GDPR guidelines more strictly. The current implementation automatically links to the site’s privacy policy page if the user has it setup in their site settings.

Toolbelt doesn’t have any settings, besides what modules are active on the site, but Gillbanks has created a collection of actions and filters that allow developers to customize things for clients/ themes. The documentation is available on GitHub, where users can also submit issues and feature requests.

Would you like to write for WP Tavern? We are always accepting guest posts from the community and are looking for new contributors. Get in touch with us and let's discuss your ideas.

23 Comments


  1. and it was getting a score of 99 or 100

    What was this on? Google Pagespeed Insights?

    Report


  2. Looks great, Ben – thanks for making this contribution. You might want to check out Fathom Analytics by Paul Jarvis for a privacy-first approach to stats/analytics: https://usefathom.com

    Report


    1. Hey Chris, thanks for the info. I’ve actually emailed Paul about this.

      Once Fathom has an API I hope to add support for it. They already have an official plugin, but I’d like to add a bit more information – like the Jetpack stats widget.

      There’s also Simple Analytics and Plausible. I hope to add support for all of them so you can pick the one you want to use.

      Report


    1. Thanks Álvaro – I’d love to hear what you think! :)

      Report


  3. “Page Impact” column 👏👏👏

    This should be the new standard for all WordPress themes & plugins.

    If this data was added to the wp.org repo, it could completely change the landscape… for the better.

    Report


    1. I got the idea from the Machete plugin but made it a bit more prominent.

      I think it’s a good reminder of what you are opting in to.

      Report


    1. I’ve had it in my head that I should make a simpler Jetpack plugin for years.

      There’s a few other reasons. Some of the modules co-operate with others. For example, by default the projects post type displays has related posts enabled.

      And the new, free, theme I am working on supports every single one of the features. I have them all enabled on my personal site.

      And Jetpack.

      The plugin does not load any of the code unless the module is enabled.
      As seen here: https://github.com/BinaryMoon/wp-toolbelt/blob/master/index.php#L23-L43

      So apart from disk space the modules don’t take up any processing power if they aren’t turned on.

      Report


      1. I don’t like this approach at all.

        Have you considered unhooking them where possible, storing them in separate repositories and simply have the big super plugin there to combine them together?

        This would allow people to use the individual components, without having to install the rest of them.

        Report


      2. Hey Ryan – sorry to hear you don’t like the approach I am taking.

        I have not considered splitting the project up into smaller repositories. It’s an interesting idea, and probably possible, but it’s a lot easier for me to manage one thing. I’d need to have loads of instances of my gulp scripts, and npm packages and whatnot. This just seems a lot simpler, and that’s what I like.

        The project is GPL though and I wouldn’t have a problem with someone taking out the bits they like and making their own thing with it.

        Report


      3. One of the implications of all-in plugins is the security of site – code should not be active to be exploited, it is enough it’s there, sitting in dormant mode.

        That’s why it would be a better approach to have plugin shell with the ability to download the parts you want to use.

        Thank you!

        Report


  4. Hi Ben. I am definitely interested in testing this out as I built themes; just installed it on one now to try it out. There is one very important module missing though (unless I missed it somehow), is the ability to publish widgets on select pages/posts/taxonomies, etc. Jetpack has the Widget Visibility, although it’s not 100% and for one part.

    I will add additional comments to github for it.

    Looks promising though!

    Report


  5. Ben, would you advise using your plugin with Jetpack, replacing just a few features of the latter? I’m interested in testing just the Related Posts and the Static social sharing features, at the moment.
    Thanks,

    Mario

    Report


    1. Hi Mario

      I am currently running Jetpack and Toolbelt together. They work together just fine.

      I hope to eventually replace all the Jetpack features I use with Toolbelt so I can remove Jetpack, but that will probably take quite a while.

      Report


  6. Optimization matters a lot!

    As much as I like being able to optimize things, there’s always limits to what should be available.

    Why? I mean, I get your point where people need to understand that Jetpack was slowing their websites down and with Toolbelt features that they provide modules to use as an optimized plugin. Optimization is choices, not options. And I agree with that.

    However I want to say “Congratulations to you on taking this excellent initiative and successful launch of the plugin”.

    Report

Comments are closed.