Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building an extensible platform with UI extensions

Avatar for Bruno Aybar Bruno Aybar
November 14, 2025
6

Building an extensible platform with UI extensions

What's the difference between building an SDK (allowing others to use your code) and building an extensible platform (allowing others to run their code in your platform)? . As any product scales, users will demand niche features, tweaks, and integrations. How can you make everyone happy without derailing your roadmap?

This talk is a case study of how Shopify is solving this problem by "letting them code their own solution" . Our goal: create "injected UI that is indistinguishable from Shopify's native content on all platforms" .

Avatar for Bruno Aybar

Bruno Aybar

November 14, 2025
Tweet

Transcript

  1. 󰠁 SDK 1 use SDK 2 SDK 3 Building SDKs:

    Allowing other apps to integrate our code
  2. 󰠁 < some custom code > execute Building an extensible

    platform: Allowing other apps to run their code in our platform
  3. A platform that provide you all the tools and APIs

    that allow you to seamlessly extend its capabilities Extensible platform
  4. - Farhan Thawar, 2020 React Native is the Future of

    Mobile at Shopify Public blog post: https://shopify.engineering/react-native-future-mobile-shopify
  5. 💻 Let's implement all these cool features that our users

    will love! 󰞥󰞏󰟦󰲿 This app is perfect, it's exactly what I need
  6. 💻 Let's implement all these cool features that our users

    will love! 󰞥󰞏󰟦󰲿 This app is perfect, it's exactly what I need 󰟱 I need you to build this other feature before using your app
  7. 💻 Let's implement all these cool features that our users

    will love! 󰞥󰞏󰟦󰲿 This app is perfect, it's exactly what I need 󰞥 So this new feature is in your roadmap, but I need it now
  8. 💻 Let's implement all these cool features that our users

    will love! 󰞥󰞏󰟦󰲿 This app is perfect, it's exactly what I need 󰟦 You have the feature I need - but I need you to tweak it a bit…
  9. 💻 󰞥󰞏󰟦󰲿 This app is perfect, it's exactly what I

    need 󰟱 So this new feature is in your roadmap, but I need it now How do I make everyone happy? 󰟦 You have the feature I need - but I need you to tweak it a bit…
  10. More configurations? (product implications) 💻 How do I make everyone

    happy? Custom build? (ops implications) Losing those clients? (financial implications)
  11. 💻 Let's allow them to code their own solution <

    codebase > 󰠁 < some custom code > render & execute
  12. 💻 Let's allow them to code their own solution <

    codebase > 󰠁 < some custom code > render & execute Goal: "injected UI that is indistinguishable from Shopify's native content on all platforms"
  13. 💻 How to run external code? What about Security? Tooling?

    Versioning? Publishing? < codebase > 󰠁 < some custom code >
  14. • Customize their frontend (Shopify Liquid) • Customize their backend

    code (Shopify Functions) • Write a custom app (Shopify Apps) • ✨ UI extensions✨ Step #1 Choosing the layer of extensibility ❌ ✅ ✅
  15. • Design System components: • To achieve "UI that is

    indistinguishable from Shopify's native content" • Host app API's: • To access local storage • To make network requests • To listen to app events Step #2 Provide developer-friendly APIs
  16. Step #3 Establishing surface areas • Being extensible does not

    mean giving up control of the experience • Establish: • extension points (surface areas) • navigation rules
  17. • Building on top of remote-ui (github repo) • written

    in Typescript • allows remote rendering of UI elements in the main thread • iframes / webview did not accomplish that goal Step #4 Building the rendering engine
  18. • Shopify CLI tool to upload scripts to the platform

    Step #5 Provide developer-friendly tools
  19. • Decoupled system, on multiple layers • Developer-friendly APIs •

    Comprehensive documentation Building an extensible platform requires…
  20. • React Native offers some interesting multiplatform opportunities. • Extensible

    platforms can be an amazing competitive advantage, but require a lot of development and architectural effort. Conclusions