RebelMouse Q2 2021 Platform Performance Updates
Q2 of 2021 was a big quarter for the open web. Google delayed their release of SEO ranking by CrUX report, and they changed their method for Lighthouse scoring drastically. Our team was a few steps ahead of these changes, and we were able to update our platform so sites in our network had little, if any, performance interruptions.
We invested over 1,592 hours into our platform in Q2 2021 alone, and all of the sites on our platform received the benefits of these updates. To break it down into large buckets, we invested in the following key areas:
- 538 hours dedicated to new features
- 725 hours dedicated to improving existing features
- 329 hours dedicated to performance and infrastructure updates
Here are the major updates that we've added to the RebelMouse platform in Q2. And don't forget to check out our Q1 updates as well!
Google updated how their PageSpeed Insights scores are calculated by releasing a new version of Lighthouse on June 1, 2021. Lighthouse is a tool built into Google Chrome that lets you know how well your site is performing against Google's standards for a better open web. At RebelMouse, our team keeps up with updates from Google closely, and reads all of their release notes and GitHub updates.
Tweets are a very popular embed for media sites. They can contain lots of information and drive lots of traffic, and we have worked very hard to make it super easy for writers and editors to embed them by simply dropping a link into our Add Media Bar.
But tweets are not all the same size, and because of the way Twitter has coded them, they dynamically change their height as their elements come through, i.e., a photo, video, or screenshot can all change the size. These size changes cause penalties for cumulative layout shift (CLS), one of Google's Core Web Vitals.
We are always introducing new updates to our platform, and we've recently rolled out a platform-wide update that optimizes tweets to dynamically set the height of the tweet embed. To solve this, we do a server-side call when a user embeds the tweet to find the exact height and set it in the embed code. So this new behavior will work for all tweets that get embedded using the URL upload technique described in this post. This update will affect new tweets embedded and moving forward, but not backwards to everything that you've embedded previously.
Our mantra for code follows the famous Mark Twain quote: "If I had more time, this letter would have been shorter." This quarter, we spent significant time further optimizing the main RebelMouse application codebase. Here's what we did:
- Reduced the bundle size from 14 KB (which was good to start with) to 9 KB (which is phenomenal)
- Upgraded from webpack to webpack 5
- Added Preact to our main app
- Optimized the follow and like buttons
- Optimized slideshows
- Reduce boilerplate from transport modules
- Implemented the optimized codebase for logged-in users, making their experience roughly 10x faster
Big New Features
Automated Traffic Splits for A/B Testing
We now support automating traffic splits between different layouts. You can configure this in our Layout & Design Tool to designate what percent of traffic should flow to each layout. The results are tracked through custom dimensions in Google Analytics and our custom Google Data Studio dashboards to show key performance measures on each layout. If you are interested, please ask your account manager for more information.
Being able to track your site performance and users' behavior on your site can be very beneficial in understanding what's effective on a given page. Using Google Tag Manager in conjunction with Google Analytics and RebelMouse's Layout & Design Tool allows you to glean many insights into what's working and, just as importantly, what's not working on your site. Let's start with a common example.
Many sites send out newsletters, and some send out multiple varieties of their newsletters. Let's take this further and imagine a site with several geographic sections, or verticals, on the site. In this scenario, we might have U.S., Europe, and Asia as our general sections. We want to be able to promote specific newsletter pop-ups to our users depending on the section that they land on. If a user lands in the U.S. section, show the U.S.-based pop-up, if they land in the Asia section, show the Asia-based pop-up, and so on.
From within the Layout & Design Tool, you can create divs that follow a specific naming convention to aid in the tracking.
Platform Workflow Updates
- Custom Fields Editable by Users
- Custom fields are now easily editable by users in their profile.
- Add Media Bar Now Supports More File Types
- The Add Media Bar in our Entry Editor allows you to add rich media integrations to every post with just a few clicks. We're pleased to announce that Add Media Bar supports even more file types than before. Using the paperclip icon, you can now choose to upload Excel, PowerPoint, Word, PDF, and/or CSV files.
- Customize Entry Editor Sections
- You can now customize which sections are visible to particular users in Entry Editor. Click here for a full list of our Entry Editor customizations.
- Pagination Support for Archives, Tag, and Section Pages
- Many of the properties within our site network make use of infinite scroll. Google recently stopped supporting indexing of pages that use infinite scroll, so we now have an easy option to combine infinite scroll for users with pagination. This should help Google index your site more efficiently.
- Image Alignment Control in Entry Editor
- There is now the ability to control how your images align in Entry Editor. We released this feature as a test with a few clients, and it will soon be deployed to our full site network. If you are interested in getting early access to this feature, please let your account manager know.
Platform Infrastructure Updates
- Dependabot Enabled for All Microservices
- Dependabot is a tool that creates pull requests to keep dependencies secure and up to date.
- Currently, Dependabot supports Bundler, Cargo, Composer, Docker, Hex, elm-package, git submodule, GitHub Actions, Go modules, Gradle, Maven, npm, yarn, NuGet, and pip. This helps our platform have even more efficiency and reliability.
- Internal DNS Microservices
- Internal DNS is a microservice that implements service discovery and resolves major flaws of hosts Ansible role.
- Per-Rule Custom Responses From Web Application Front-Ends
- Recently, Amazon Web Services (AWS) added custom responses to WAF.
- One day after that release in AWS, we added custom responses to our setup. This update increases our platform's performance and reliability.
- New Cluster of Dedicated Stats Servers on Ubuntu 18.04
- We upgraded the infrastructure significantly to release a dedicated cluster of servers managing stats. This is excellent for the performance of other applications, as well as the performance for stats.
- Distributed Tracing With Sentry and force_tracing Parameter
- All changes are running in production deployments.
- Microservices: We switched from OpenCensus and Jaeger to Sentry tracing, biker, EE, React dashboard, and added front-end tracing.
- Monolith and Express-Based Microservices: We now support get-parameter force_tracing=1 (this forces traces sampler to record transactions with 100% probability). This works both for both front-end and back-end samplers.
- Here are some additional resources about distributed tracing:
- We've significantly amplified the team that works on QA to minimize any bugs found by users, clients, or readers.
- We've upgraded processes so that any client can use the QA feature in Jira for any minor changes to the Layout & Design Tool.
- Regression testing has been updated across all key platform features to ensure better stability as we release new features.
- Regression testing has also been added for our more complex enterprise clients to test custom features in an automated way. This avoids running into any bugs from those new features.
We've added amazing talent to our team in Q2. These new Rebels will help scale our ability to continuously update our platform while delivering as a creative agency.
- Engineering Team
- Gabriela Carrion, Project Manager
- Richard Santana, Back-end Engineer
- Soham Chakraborty, SRE DevOps Engineer
- Client Services/Delivery Team
- Igor Dudnyk, Platform Engineer
- Tatianna Machado, Platform Engineer
- Ana-Maria Iancu, Solutions Architect
- Alejandro Duarte, Technical Account Manager
- Clara Savi, Quality Assurance Engineer
- Natalia Blashchanitsa, Quality Assurance Engineer
- Anzhalika Baradzin, Quality Assurance Engineer
- Anna Maevskaya, Quality Assurance Automations Engineer
- Anton Krylov, Quality Assurance Automations Engineer
- Human Resources
- Mayra Massuda, Head of HR
Minor Bug Fixes and Minor New Features
- SoundCloud embeds now work on AMP
- Images uploaded in Layout & Design Tool can have defined sizes
- Support for "nearby locations"
- Fix for scrolling through comments
- Security prevention for community blog submissions
- Optimized the crop tool in Entry Editor
- Enabled a "Sort by Deadline" feature in the Posts dashboard