Welcome to the changelog section of Freemius, here you'll find our weekly technical update notes. You can subscribe to all posts via Newsletter or follow us on Twitter to stay updated.
This week, we’re rolling out several UI/UX improvements to the Developer Dashboard.
Enhancements to Subscription and Payment Tables
We’ve reorganized the columns in the Payments and Subscription tables to prioritize the most important data at the beginning. Additionally, we’ve refined some wording to enhance clarity.
Offline UI Improvements
We observed that the offline UI was sometimes too quick to detect network issues. We’ve identified these cases and deployed a fix to improve its accuracy.
Freemius allows both you, as a maker, and your buyers to cancel subscriptions at any time. We recently identified a regression where cancellations made very close to the renewal date were sometimes failing. This issue has now been fixed.
This week, we’re introducing one of the most anticipated features for our Checkout. Last year, we released Phase 2 of the Checkout, which underwent a major redesign. At that time, we removed the legacy Billing Cycle UI in favor of a more compact Upsell UI.
However, we’ve received feedback requesting the return of the billing selector UI. This feature is particularly useful for makers using Freemius Checkout directly, without a dedicated pricing page. It provides buyers with more flexibility to select their preferred billing cycle at the time of purchase.
We’ve listened to your feedback and are now introducing an optimized and visually enhanced Billing Cycle UI that complements the new Checkout experience.
This feature is not enabled by default. To activate it, add the following URL parameter to your Checkout URL:
1
?billing_cycle_selector=responsive_list
Alternatively, if you’re using the Checkout JS SDK, you can enable it with the following configuration:
1
2
3
const handler = newCheckout({
billing_cycle_selector: 'responsive_list',
});
Configuration Options
The billing_cycle_selector parameter accepts the following values:
responsive_list – Displays billing cycles in a smart list that adapts to available space.
dropdown – Shows a dropdown UI, allowing buyers to select their preferred billing cycle.
list – Same as responsive_list but always show up vertically.
If none of the values are present the UI will not show up. Read more details below.
Rendering a Responsive List
Our recommendation is to use the responsive_list option. You can do so by setting the parameter value to responsive_list or simply true.
This will display all available billing cycles upfront. If only two billing cycles are available, they will appear in a horizontal layout to save space.
If you prefer a vertical list, you can use list instead of responsive_list.
Dropdown UI
If you want to minimize vertical space usage, set the parameter to dropdown.
This will render a single item that buyers can click to open a dropdown menu for selection.
Adjustment with Upsells
Enabling the billing cycle UI will automatically disable annual and lifetime upsells.
As always, we’re building this feature with our community. If you’d like to discuss anything, feel free to join our Slack or reach out to our support team.
This week, we are releasing several UI and UX improvements for our checkout. See the details below.
VAT Number Validation UX Improvement
Freemius allows buyers to enter their business VAT number for reverse VAT charges. Behind the scenes, Freemius validates the VAT, and if valid, it nullifies any VAT for EU/UK buyers. We noticed that in rare cases, a buyer might submit the checkout even though the VAT number validation had not yet completed. While the checkout still displayed the amount with VAT, we understand that this could be confusing for some buyers.
To enhance the experience, we now display a spinner next to the VAT field while the system is validating the number. Additionally, if a buyer clicks the Review or Continue to PayPal button before validation completes, the form will shake, focus on the VAT number field, and display a short message: “Verifying…”.
We also implemented similar UX improvements for the US Sales tax, where the tax amount depends on the billing details.
We hope these enhancements improve the overall buyer experience with Freemius Checkout.
From the Freemius Developer Dashboard, makers can view and download a list of licenses. The system also allows filtering licenses based on various criteria.
We identified a regression where selecting the Abandoned filter was not working correctly. Abandoned licenses refer to those that have expired or have an expired/canceled subscription. We have now identified the root cause and deployed a fix.
Freemius provides a webhook mechanism for seamless integration with your software. We recently discovered that some webhook payloads were unintentionally including developer data. To optimize network payloads, we will no longer be sending this data. All other entities and payloads will remain unchanged. For example, the license.created webhook will continue to receive the license object as expected.
This inclusion of developer data was an oversight on our part, and since it was never documented, we have no reason to believe it was actively used. However, if you were relying on it, you have two options:
Retrieve the developer data directly via the API when needed.
Recommended: Store the developer data in an environment variable or cache it within your system. Since this data rarely changes, frequent API calls or webhook-based retrieval are unnecessary.
We’re rolling out several key enhancements to our Developer Dashboard this week.
Bulk Licenses for SaaS & App Products
Building on our recent introduction of custom unit labels, we’re now adding bulk licensing options for SaaS and App product types.
When setting up pricing for bulk licenses/activations, you’ll now see predefined options for 50K, 100K, 250K, 500K, and 1M activation units.
Based on demand, we plan to enhance the UX further by allowing you to customize these values directly in the UI. For now, if you need a different number, feel free to reach out to our support team, and we’ll take care of it for you.
Payments Table Improvements for Migrated Payments
Freemius enables seamless and assisted migration from other platforms without losing existing subscriptions or licenses. To ensure you have a complete view of your Financials and Audience, we also display migrated data in the Developer Dashboard.
However, we noticed color inconsistencies in the Payments Table for migrated transactions. With this update, we’ve standardized the coloring to ensure clarity:
Gross amounts are now blue (positive) or red (negative), depending on the value.
Test payments are displayed in gray for differentiation.
Migrated payments are now visually distinct, with the Migration icon at the start of the table highlighted for better visibility.
App Documentation Improvements
We’ve published a new documentation with various examples of integrating Apps with Freemius.
Notification Settings for Failed Renewal Recovery Emails
We’ve added a new Notification Center setting that lets you control whether you want to receive a notification when Freemius successfully recovers a failed renewal through its dunning mechanism.
This release focuses exclusively on documentation and developer experience improvements. The Checkout JS SDK is used to embed the Checkout inside your website. Please read our documentation to get started.
Improved Coupon Error Handling
We noticed that in some edge cases, our Checkout could silently reject a coupon, which might cause confusion for buyers.
We’ve implemented a fix to ensure that if a coupon cannot be applied, an error message is now clearly visible in the UI. Additionally, we’ve improved the UX to make it clear that buyers can simply press a button to continue the purchase without the coupon.
Clearer Error Messages for Checkout Setup
Previously, when passing incorrect configuration parameters (such as an invalid Product ID or Plan ID), Checkout would fail and display only a single-line error message.
We’ve made some UI improvements to enhance the experience:
If Checkout is loaded in sandbox mode, it will now display a clearer message to assist makers in setting it up correctly.
If Checkout is loaded via the JS SDK, a close button will now appear, allowing users to return to the website easily.
This week, we’re following up on the recent PWA release of our Developer Dashboard. Right after the initial launch, we gathered a lot of feedback and doubled down on improving the UX even further. While we conducted multiple audits and fixes, let’s take a look at the most important ones.
Better PWA Lifecycle Management
Starting with the PWA (or the Installable App), we’ve made several significant improvements.
The “app update” dialog is now smarter and updates itself even when multiple tabs or windows are open.
The PWA now detects if you’re offline during the initial load or when navigating through the dashboard and displays relevant UI accordingly.
We understand that the best PWA experience isn’t possible on some platforms and browsers, and the default installation method doesn’t apply to those. Initially, we only displayed the Install button for supported platforms.
To provide a more consistent experience, we now show the Install button for all platforms. If the current platform supports PWA, we display the native installation experience. Otherwise, we show a modal with platform-specific installation instructions.
To further streamline the experience, we’ve also added the Install button to the Login and Registration pages.
Finally, we’ve improved PWA cache management, which has resulted in approximately a 30% faster initial load time.
UI & Dark Theme improvements
We adjusted several contrasting elements of the Dark Theme to enhance the readability of data-heavy UI components. At the same time, we identified and resolved some lingering UI inconsistencies. For example:
The Plan page now adapts better to different screen sizes.
The Date Picker now renders more effectively on mobile and tablet screens, ensuring the text fits neatly with our new font.
The Chart’s Customize button and general UI alignment now match our design system.
Cross browser improvements
We noticed some glitches and bugs in certain browsers like Safari and Firefox—those have now been fixed.
This week, we are deploying various UI improvements to our Developer Dashboard, focusing on the newly launched App product type and addressing some minor bug fixes.
Improved Developer Experience of the App type
We have made several tweaks throughout the system to enhance the onboarding experience for newly launched App products.
For example, the pricing page now displays relevant information and links to our documentation. Similarly, the Setup Checklist provides more accurate and helpful details.
Stay tuned for more improvements to the new product type!
Other small bug fixes
We identified an issue with font ligatures and have fixed it.
A potential issue with our login and 2FA mechanism when using popular password managers has been identified and resolved.
This week, we deployed some minor UI improvements and bug fixes for our checkout.
Smarter back button
Recently, with Phase 2, we introduced a Back button for the standalone version of our checkout. This worked by checking the HTTP referrer or a specific URL parameter.
With today’s release, the Back button now defaults to the marketing URL set in your product’s configuration.
If you haven’t already, please follow the directions in the screenshot above to set your marketing URL. Additionally, the cancel_url parameter still works as expected and will override any HTTP referrer or implicit marketing URL value.
UI glitch fix for payment method update
With Freemius, buyers can update their payment method anytime via the self-service Customer Portal. Additionally, we introduced a shortcut in the Developer Dashboard, allowing you to manually copy and send a payment method update link to buyers.
We noticed a minor UI glitch in the payment method update flow where the header was not aligned properly. This has now been fixed.
Improved payment PDF
We identified edge cases where long lines in the buyer’s or seller’s billing address could break the layout. This issue has been resolved in today’s release.
Our platform just got even better for selling multiple licenses for SaaS and Applications! Traditionally, Freemius associated licenses with “site activations,” which worked well for WordPress products. However, for SaaS and applications, this approach didn’t always make sense.
Starting today, you’ll find a new setting in your Developer Dashboard that allows you to customize the license unit label. For example:
For a SaaS product, you might sell “Seats”.
For an Application, you might sell “Activations”.
To configure this, navigate to your product’s Settings page and locate the Selling Unit Label option. Simply enter the singular form of the unit (e.g., “Seat” or “Activation”), and our system will handle the rest.
You will see that with this update:
The checkout dropdown will display the relevant unit labels.
Similarly license-related emails sent by our system will include the custom unit label.
Important Notes
For Applications, which require license activation by default, our system will always include the custom unit label in emails. However, for SaaS products, this depends on whether you have chosen to expose the license key to users.
As part of our ongoing efforts to make our platform more flexible for various types of software, we are excited to introduce a new product type: Application.
This new category is designed for software such as:
Desktop Applications (e.g., Microsoft Windows or macOS software)
Chrome Extensions (or any other browser extensions requiring activation)
Electron Apps (cross-platform apps built with web technologies)
CLI Tools (command-line utilities that need a license key)
Server Software (self-hosted applications that require activation)
Plugins for Non-WordPress Platforms (e.g., Shopify apps, VS Code extensions)
Essentially, any downloadable software that requires a license for activation fits perfectly into this category. Simply create a new product to get started.
To learn more about integrating license activation into your product, please refer to our documentation.
Following our recent rebranding and UI/UX improvements to the Developer Dashboard, this week we have deployed a major overhaul focused on enhancing the mobile experience. While our Developer Dashboard was already accessible on mobile, we wanted to take the experience even further and bring it up to today’s standards. If our makers need to check data on the go, we want to fully support that.
So, without further introduction, let’s dive into what has changed and what has been improved.
Better UX for the data tables
When optimizing for mobile, we started with the most data-heavy UI elements—specifically, the Payments, Subscriptions, and Licenses pages.
We identified opportunities to improve visual feedback and streamline the display of data, ensuring makers can quickly access the most relevant information on the go. Here’s what we changed:
Clicking on the ID cell now copies the value instantly for quick access.
We rearranged some table cells, ensuring the most important information remains visible.
Tables now feature a loading animation, providing clear feedback on background processes.
To declutter the view, certain advanced data (such as User ID or Site ID, which previously appeared on hover) will no longer be displayed on mobile.
Easy navigation for individual items
After optimizing the tables, we focused on improving how individual rows are presented in tables like Subscriptions, Payments, and Carts. On desktop, selecting a row opens a sidebar from the right, revealing more details about the item.
Navigation is seamless—clicking on another item automatically updates the sidebar. However, on mobile devices, this experience was less intuitive. The sidebar appears in full-screen mode, requiring users to first close the sidebar before selecting another item.
To improve navigation, we’ve introduced Previous and Next buttons in the sidebar header. Now, you can quickly move between items without needing to close the sidebar first.
Additionally, we’ve added a sidebar view for the Payments table, making it easier to access detailed payment information.
Full screen modals
We noticed that several of our form-heavy dialogs and modals weren’t optimized for smaller screens. Instead of overlaying them, we now display them in full-screen mode for a better mobile experience.
For example, when you click the “Refund” button on the Payments page, you’ll notice a much smoother experience. After all, managing your business on the go should feel effortless!
Improved UI for Analytics
We fine-tuned the charts UI for mobile to ensure all data is properly displayed and fixed any visual glitches we found.
Viewing charts on mobile is now a significantly better experience.
Improved main navigation
The left sidebar serves as the main navigation, and we’ve ensured it behaves smoothly on mobile by fixing a few glitches.
We also made the navigation menu smarter—it now automatically closes itself when it detects that it should get out of the way.
Better User & Site pages
Unlike other details that appear in the right sidebar, User and Site pages contain too much information to fit within a sidebar. That’s why we continue to display them as regular pages.
We reviewed how these pages render on mobile and made several layout improvements.
Additionally, we took this opportunity to rework certain sections of the page, ensuring they use screen space more efficiently.
For example, we have combined the License, Subscription, Plan, and Owner sections inside Site to display a simple list of actionable items.
Editing plan now works under mobile
We noticed that editing plans on mobile wasn’t working at all. So, we revisited the design and made it fully responsive.
Now, you can configure plans on the go—because why not?
An installable PWA
Saving the best for last! Now that our Developer Dashboard is fully optimized for mobile, we’ve taken it a step further by converting it into a PWA (Progressive Web App). This means you can install it on Android and iOS devices for a more seamless experience.
To install the app, simply click the “Install” button when prompted by your browser. On Android, you’ll also find a dedicated “Install App” button in the top-right dropdown menu.
For iOS devices, you’ll need to manually select “Add to Home Screen” to save the app.
For desktop you can also click the Install App button while using Chrome to create a shortcut under your launcher.
Various bug fixes
As we refined the mobile experience, we also addressed several bugs across the Dashboard. Here are some of the most notable fixes:
Fixed touch issues with the switch UI.
Resolved alignment issues in grouped input fields.
Fixed UI regression in the analytics screenshot modal.
Made the Profile page fully responsive.
Fixed an image issue on the Perks page—if you’re eligible, simply click the top-right menu button to access your perks.
Fixed a bug where the country wasn’t displaying inside subscription details.
Updated the email instruction UI for static products.
Refreshed the brand color palette from our internal design library.
We hope you enjoy these latest improvements to the Dashboard app! 🚀
If you’d like to see more mobile features—such as push notifications for sales—let us know via our feature request board.
Freemius automatically tracks email deliverability issues for your customers and users. Our Developer Dashboard includes functionality to check users’ email history and, if there are deliverability issues, displays bounce logs.
Additionally, there’s an option to Resend Messages. We identified a regression where, in some cases, clicking the button did not actually send the message. We’ve pinpointed the root cause and have deployed a fix to resolve the issue.
We use tools, such as cookies, to enable essential services and functionality on our site and to collect data on how visitors interact with our site, products and services. By clicking CONTINUE, you agree to our use of these tools for advertising, analytics and support