Case Study

SocialCode

SocialCode combines audience data, insights, creative and measurement to drive superior performance for leading brands. As the first-ever Facebook Ads API partner, SocialCode pioneered digital-first marketing, combining institutional media buying expertise, proprietary tech and creative service.

Challenge

SocialCode has a unique "micro apps" setup, which comes with unique challenges like managing common dependencies across apps, enforcing coding standards, and avoiding duplication. With different teams in charge of each app, it is common to use different approaches, and make different decisions on whether to hand roll something or use an Ember addon. It also makes keeping all apps on the latest Ember version a challenge.

Solution

We started by moving common dependencies to a common addon, and ensuring all apps adhered to the same standards by enforcing the latest eslint-plugin-ember rules. We also migrated all the code to use the new modules syntax, and new testing syntax, and updated apps to the latest Ember version to make sure we were on the latest and greatest of everything.

There was quite a lot of custom code hanging around, in the SocialCode apps, that could be replaced with some addons that did not exist when the apps were created. We refactored large chunks of code to use these addons, such as a refactor from a custom select to ember-power-select, and other similar refactors, to reduce the amount of in house code that needed to be maintained, and improve the stability of the apps going forward.

Outcome

With dependencies moved to a common Ember addon, it is easier to ensure all apps are using the versions of these dependencies that they intended. It also helps ensure updating dependencies to new versions, and updating the code to use these new versions, is isolated to just one location, instead of searching all the apps for their usage.

Removing custom, hand rolled, implementations, for things like dropdowns, and replacing them with Ember addons, reduces the burden of maintaining several internal implementations, and leverages the Ember community to ensure the code remains up to date.

With all the apps on the latest Ember standards, future updates to new Ember versions will be easier, as the diffs will be smaller, and ember-cli-update will be able to automatically update things, without conflicts.

SocialCode Audience Intelligence Platform