After spending the last couple of years on major version 1.0 of our Mobify Platforms SDKs, we’re excited to officially announce the arrival of the next major version, v2.0. All major versions of Mobify’s SDKs are tied to supporting a specific deployment mode, and v2.0 is no exception.
In 2016, Mobify launched a mobile progressive web app (PWA) solution which was powered by the Mobify Tag along with the first version of our SDKs (v0.x).
In 2018, Mobify added two new key features to our SDKs: support for server side rendering (SSR), and support for responsive layouts so that customers could launch a full PWA storefront across mobile, tablet, and desktop. These were added to the v1.x of our SDKs, which supported both tag-based mobile PWAs and full front-end PWAs.
Now we’re launching v2.0 of our SDKs, which will be fully dedicated to supporting full front-end PWA storefronts. With all of our learnings to date built into it, v2.0 aims to provide the best possible developer experience.
Why a major version bump?
v2.0 of Mobify’s SDKs had two primary goals:
- Cleanly separate SDKs for Mobify-tag powered projects and full front-end projects, allowing independent iteration and maintenance.
- Modernize and optimize the developer experience for full front-end projects.
To accomplish both of these goals, we had to make a number of breaking changes from v1.x of our SDKs. Within minor version releases at Mobify, we’ve typically restricted ourselves from making breaking changes to ensure easier upgrade paths for our developers. In addition, v2.0 also brings with it significant architectural changes along with a set of new features.
What does v2.0 mean for v1.x?
With the release of v2.0 of Mobify’s SDKs, we will be discontinuing any feature development for v1.x of our SDKs. v1.x of our SDKs however will continue to receive critical bug fixes and patches on a case by case basis, while any new SDK features will default to v2.0 and beyond.
That being said, in 2020 and beyond Mobify will be shifting its focus to developing features that will work for all projects, regardless of the SDK versions projects are using. This means that our focus will be investing more in our Application Delivery Network, which enables us to add features to any sort of projects rather than focus on features that can only be consumed through a SDK.
What’s in v2.0?
All of the changes and updates we’ve made for v2.0 can be mapped to three different focus areas.
Ecosystem – How might we provide developers a modern developer experience while they leverage the Mobify Platform?
Tag Separation – How might we cleanly separate features and libraries for Mobify-tag powered projects and full front-end projects?
Simplified Starting Point – How might we ensure Mobify developers have a frictionless experience when starting new projects with the Mobify Platform?
Server Side Rendering (SSR)
Note: We’ve previously covered the new SSR architecture that v2.0 will be shipping with. Check that out in our previous blog post.
V2.0 will be shipping with a brand new SSR architecture, Node SSR. Node SSR aims to provide developers with a new SSR environment that is both familiar and modern. To that point, Node SSR uses a standard Node.js and Express.js environment which:
Uses widely known and highly adopted industry skills in React SSR and Express.js
Node SSR closely follows how React conventionally handles SSR through the usage of their renderToString() function. Developers well-versed in conventional server side rendering with React and who are familiar with Express will feel right at home with Node SSR.
Unlocks the ability to use any Node.js package to extend app server functionality
The App Server in v2.0 has been reworked to become a standard express server. Doing this has made it trivial for developers to use any Express.js middleware, or even any Node.js package of their choosing to enhance their App Server functionality.
Provides a frictionless experience in using the full React ecosystem
As Node SSR uses conventional React SSR practices, developers will easily be able to find all the resources they’ll need to be successful with SSR in their projects. Node SSR moves us closer to a typical React ecosystem, resulting in our own libraries working better with other third party libraries in a React ecosystem.
React Router v5.0
Mobify projects have always shipped with React Router as its default routing library. For a majority of v1.x’s life span, projects were shipped specifically with React Router v3. This unfortunately resulted in developers having to use an outdated version of React Router for a good majority of the year.
For v2.0, projects will now ship with React Router v5 by default. Both v4.0 and v5.0 of React Router bring in many new useful features, including the heavily requested ability to use regular expressions within route paths.
Tag Separation Changes
As v2.0 is fully dedicated to supporting full front-end projects, we’ve removed a number of obsolete features and libraries that aren’t relevant for full front-end projects, and also simplified key areas of friction. These features and libraries include:
In v2.0, Analytics Manager has been removed in favour of its successor, Analytics Integrations.
In v2.0, Integration Manager has been removed in favour of its successor, Commerce Integrations.
The iframe bridge is incompatible with v2.0, and we ultimately made the decision to not refactor it to work for v2.0. The library never met Mobify’s performance standards, resulting in its removal for v2.0.
Mobify Command Line Interface (CLI)
We’ve observed that Mobify’s CLI has been difficult to work with, and isn’t heavily used throughout our projects. We’ll be revisiting creating a new Mobify CLI tool in the future.
Mobify Test Framework
The Mobify Test Framework was designed for developers to use in order to simplify the set up of automated Lighthouse and Nightwatch tests for their Mobify projects. Both libraries have recently been updated to make this use case easy, resulting in decreased value for the framework and its removal for v2.0.
In an effort to provide more flexibility and freedom to our developers, we’ve completely decoupled v2.0 of our SDKs away from Redux. See below for a deeper overview of why we moved away from Redux.
Non-PWA Push Notifications
Mobify previously offered web push notifications as a standalone product. The product is scheduled to be sunset at the end of June, and all traces of it have been removed from v2.0.
Simplified Starting Point Changes
From v1.12.0 of Mobify’s SDKs up to v2.0, Mobify projects were generated as monorepos that were managed by the tool lerna. This was originally done with the intention of making it easier to work with multiple packages within one repository. We’ve observed that this change has made it more difficult for developers to manage their projects, and recognize that lerna isn’t as widely understood and adopted as a lot of the other tools and libraries in our tech stack. v2.0 projects will no longer be set up as monorepos, and will no longer be using lerna.
Simplifying Webpack Configs
Webpack configs are traditionally very complicated and difficult to follow and configure. Mobify’s own webpack config that ships with our projects are no exception, and have been a common source of frustration among developers.
For v2.0, we’ve simplified this workflow by first moving our webpack config into our SDKs rather than inside of our starter project, and enabled on projects a simplified method in editing and extending the default webpack config.
Since Mobify ventured into the PWA space, we’ve often recommended Redux to be paired with React as the default state management library. For v2.0 we’re adapting our stance due to developer feedback and changes in the React ecosystem, where there’s recently been backlash against complex state management libraries. Many of the key features we’ve used Redux for have now also been cherry picked into React’s core, such as the Context API and React Hooks
In v2.0 we’ll be shipping our starter projects to be purely using React by default, and will strictly be using React to replace the lost functionality provided by Redux. Mobify’s SDKs have also been completely decoupled from Redux. Developers will have the freedom to use any state management library of their choice.
Bonus: Dev Center – v2.0’s New Documentation System
The release of v2.0 will also feature a new documentation system that will launch alongside it: The Dev Center. The Dev Center will be the host of all of our platform’s v2.0 documentation, and features a revamped information architecture, a new and improved search experience, and a modern user interface. You can see this live now at https://dev.mobify.com
Looking for more?
Still looking for more information on the v2.0 SDKs launch? Stay tuned for new v2.0 documentation that’ll cover some of the new key features and concepts that are part of v2.0.
Additionally, feel free to reach out to our support team with any questions you may have or to get connected directly to a Mobify team member.