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

🇸🇪 Øredev 2026

🇸🇪 Øredev 2026

Thinking Outside the Box: Alternative Architectures for Modern Web Applications

In a world dominated by traditional architectures, developers often overlook other patterns that could better serve their apps. This talk explores lessons from around the globe and across industries.

First, we’ll explore Mini Apps—born of China’s super apps like WeChat—showing how their dual-thread model and lifecycle design deliver remarkable performance in constrained environments.

Then, we’ll rethink browser apps using the Entity-Component-System (ECS) model from game development, showing how its data-oriented design can address complex state challenges and unlock new levels of performance.

Avatar for Matheus Albuquerque

Matheus Albuquerque PRO

November 04, 2026

More Decks by Matheus Albuquerque

Other Decks in Programming

Transcript

  1. Hej, Malmö! 👋 🇸🇪 THINKING OUTSIDE THE BOX: ALTERNATIVE ARCHITECTURES

    FOR MODERN WEB APPLICATIONS • NOVEMBER 4, 2026.
  2. 𝕏 Matheus Albuquerque ↝ 👨💻 STAFF SWE @ MEDALLIA ↝

    ⚛ CHAIR @ REACT SUMMIT NYC ↝ ⚡ GOOGLE DEVELOPER EXPERT ↝ YTHECOMBINATOR
  3. THIS SESSION PRESENTS… MINI & SUPER APPS ECS ↝ MY

    HISTORY WITH THAT ↝ MY HISTORY WITH THAT ↝ OVERVIEW ↝ OVERVIEW ↝ ARCHITECTURE ↝ ARCHITECTURE ↝ ECOSYSTEM ↝ ECOSYSTEM ↝ WHY DOES IT MATTER? ↝ WHY DOES IT MATTER?
  4. CONTEXT IN CHINA… — DECODING THE WEB IN CHINA FOR

    PEAK WEB PERFORMANCE • JODIE CHAN, 2023
  5. SUPER APPS? ↝ HOSTS TO OTHER APPS THAT RUN WITHIN

    THEM. ↝ THEY'VE TAKEN THE CHINESE MARKET BY STORM. ↝ WECHAT (微信) BY TENCENT, ALIPAY ( 付宝) BY ANT GROUP, BAIDU (百度), BYTEDANCE'S DOUYIN (抖 音 支 TIKTOK (蒂克托克). ) AND
  6. SUPER APPS! 900 MILLION+ 661 MILLION+ Monthly active users engage

    with Monthly active users engage with Mini Programs on WeChat. Mini Programs on Alipay. STATISTA, NUMBER OF MONTHLY ACTIVE USERS OF LEADING MINI- STATISTA, NUMBER OF MONTHLY ACTIVE USERS OF ALIPAY MINI PROGRAM PROGRAM PLATFORMS IN CHINA IN DECEMBER 2024 IN CHINA IN SELECTED MONTHS FROM SEPTEMBER 2020 TO MAY 2024
  7. ARCHITECTURE: TWO THREADS ↝ VIEW LAYER: ONLY DEALS WITH RENDERING

    AND LISTENS TO EVENTS. ↝ LOGIC LAYER: IT PROCESSES DATA, SENDS IT TO THE VIEW LAYER, AND RECEIVES FEEDBACK FROM IT. ↝ AS OPPOSED TO A REGULAR WEB APP, THIS SEPARATION CAN PREVENT EXPENSIVE LOGIC FROM BLOCKING THE RENDERING PIPELINE.
  8. ARCHITECTURE: TWO THREADS VIEW LOGIC WEBVIEW • NATIVE RENDERING JAVASCRIPT

    ENGINE EVENT ↓ DATA ↑ DATA ↓ EVENT ↑ NATIVE ⇅ HTTPS • WEBSOCKET SERVER
  9. ARCHITECTURE: TWO THREADS VIEW LOGIC iOS: WKWebView iOS: JavaScriptCore ANDROID:

    DIFFERENT ANDROID: V8 PROPRIETARY ENGINES (E.G., TENCENT’S X5 OR BAIDU'S T7) DEVTOOLS: CHROMIUM DEVTOOLS: NW.js OR ELECTRON
  10. TEMPLATING ↝ THERE IS USUALLY A MARKUP LANGUAGE WITH A

    TEMPLATE MECHANISM SIMILAR TO HTML. ↝ THE MINIAPP RUNTIME TRANSLATES THE MARKUP LANGUAGE INTO HTML OR NATIVE CODE. ↝ EACH PAGE IS RENDERED IN A DIFFERENT WEBVIEW BUT ALL WEBVIEWS SHARE THE IMAGE CACHE.
  11. WXML wxml <view wx:if="{{view == 'one'}}">One</view> <view wx:elif="{{view == 'two'}}">Two</view>

    <view wx:else="{{view == 'three'}}">Three</view> page.js Page({ data: { view: "three", }, > - - - - ! }); / < / TEMPLATING: PRIOR ART VUE.JS
  12. SCRIPTING ↝ A SUBSET OF JS NOT TO BE CONFUSED

    WITH IT. ↝ NO SUPPORT FOR: eval(), new Function(), document, window, STANDARD ES MODULES, AND OTHERS. ↝ SOME HOSTS PROVIDE BUILT-IN POLYFILLS TO MITIGATE CERTAIN INTEROPERABILITY ISSUES.
  13. STYLING ↝ DIALECTS OF CSS THAT EXTEND IT WITH RESPONSIVE

    PIXELS. ↝ STYLES CAN BE: ↝ IMPORTED WITH AN @IMPORT RULE. ↝ DECLARED INLINE, WITH INTERPOLATION.
  14. SNAPSHOTS ↝ A PRE-RENDERING PROCESS ON SOME PAGES IN THE

    CLOUD TO GENERATE AN INTERMEDIATE, COMPRESSED FORMAT. ↝ THE MINIAPP ENGINE LOADS, PARSES AND RENDERS THE SNAPSHOT. ↝ E.G.: 50K JS SOURCE ⇢ 3K SNAPSHOT.
  15. VIRTUAL DOM ↝ THE PAGE RENDERING OF MINIAPPS OFTEN USES

    VDOM. ↝ SOME MINIAPP ENGINES USE WEBASSEMBLY TO IMPLEMENT THE CORE LOGIC OF VDOM AND MODIFY THE JS ENGINE TO ENHANCE THE PERFORMANCE OF CALLS BETWEEN JS AND WEBASSEMBLY.
  16. SKYLINE + GLASS-EASEL: OVERVIEW ↝ WECHAT’S NEWER RENDERING ENGINE. ↝

    DESIGNED TO BE FASTER AND MORE EFFICIENT THAN THE TRADITIONAL WEBVIEW-BASED ENGINE. ↝ REPLACES THE LEGACY ARCHITECTURE WITH A MUCH MORE STREAMLINED RENDERING PIPELINE TO ACHIEVE NATIVE-LIKE PERFORMANCE.
  17. SKYLINE + GLASS-EASEL: OVERVIEW ↝ A NATIVE RENDERING ENGINE WITH

    ITS OWN COMPONENT SYSTEM (GLASS-EASEL) INSTEAD OF EMBEDDING A SYSTEM BROWSER. ↝ LAYOUT, STYLE, AND COMPOSITING ARE HANDLED INSIDE THE ENGINE, NOT IN A BROWSER PROCESS. ↝ PAGES SHARE ONE RENDERING ENGINE INSTANCE INSTEAD OF SPINNING UP A NEW WEBVIEW PER PAGE.
  18. const { runOnUI } wx.worklet function someWorklet(greeting) { 'worklet' console.log(greeting)

    } JS Thread someWorklet('hello') UI Thread = / runOnUI(someWorklet)('hello') / / / SKYLINE + GLASS-EASEL: WORKLETS
  19. SKYLINE + GLASS-EASEL: WORKLETS const { runOnJS, runOnUI } wx.worklet

    function someFunc(greeting) { console.log('hello', greeting); } function someWorklet() { 'worklet' runOnJS(someFunc)('skyline') } = runOnUI(someWorklet)()
  20. WHY DOES IT MATTER? — HIGH RESPONSE RATE AND LOW

    COST OF WECHAT-BASED DATA COLLECTION OF INFANT AND YOUNG CHILD FEEDING DATA IN RURAL QINGHAI PROVINCE, CHINA
  21. “This attitude does not only work in the context of

    the game industry, though. Any other industry with strong architectural requirements can be a source of inspiration and knowledge for us and help us write better code on the web” An Actor, a model and an architect walk onto the web... • Surma
  22. CPUs ARE FAST ↝ BASIC MATH CAN BE DONE IN

    A FEW CYCLES. ↝ COMPLEX MATH REQUIRES A FEW MORE CYCLES—BUT IT’S STILL OK. ↝ SIMD MAKES THE THROUGHPUT EVEN BETTER BY PROCESSING MULTIPLE VALUES IN THE TIME IT TAKES TO DO A SINGLE INSTRUCTION.
  23. MEMORY IS NOT AS FAST ↝ CPUS CAN ONLY OPERATE

    ON DATA THAT IS PHYSICALLY CO-LOCATED. ↝ EITHER IN A REGISTER OR IN THE L1 CACHE. ↝ EVERYTHING ELSE NEEDS TO BE LOADED FIRST.
  24. MEMORY IS NOT AS FAST CPU MEMORY 4 NS ⇆

    0.5 NS ⇆ 100 NS ⇆ L2 CACHE L1 CACHE
  25. MEMORY IS NOT AS FAST ↝ MEMORY ACCESS IS SLOW.

    ↝ CACHING CAN ALLEVIATE MOST OF THE LATENCY IF THE CPU CAN PREDICT THE ACCESS PATTERN—USUALLY, THE SIMPLE ONES. ↝ LINEAR PATTERNS ARE USUALLY GOOD. ↝ RANDOM PATTERNS ARE USUALLY BAD.
  26. DATA-ORIENTED DESIGN ↝ A COLLECTION OF TECHNIQUES TO ANALYZE THE

    ACCESS PATTERNS OF THE DIFFERENT KINDS OF DATA AND SELECT DATA STRUCTURES THAT OPTIMALLY LEVERAGE THE UNDERLYING HARDWARE. ↝ THE OPTIMIZATIONS ARE OFTEN RELATED TO OPTIMIZING USAGE OF THE CPU CACHE, LIMITING LOADING/STORING TO RAM (CACHE MISSES), AND USAGE OF SIMD INSTRUCTIONS.
  27. DATA-ORIENTED DESIGN: AOS ⨯ SOA type Entity { position: {

    x: number; y: number }; velocity: { x: number; y: number }; hitPoints: number; }; const entities: Entity[] [ { position: { x: 0, y: 0 }, velocity: { x: 1, y: 1 }, hitPoints: 100 }, { position: { x: 10, y: 5 }, velocity: { x: -1, y: 0 }, hitPoints: 80 }, = = . . . / / ];
  28. const positions new Float32Array([0, 0, 10, 5 / /]); const

    velocities new Float32Array([1, 1, -1, 0 / /]); const hitPoints new Int16Array([100, 80 / Entity i const i /]); index in all arrays 0; console.log(positions[i * 2], positions[i * 2 + 1]); console.log(velocities[i * 2], velocities[i * 2 + 1]); * * . / . . / . . . * * * . . . * = = = = = console.log(hitPoints[i]); / / DATA-ORIENTED DESIGN: AOS ⨯ SOA x, y
  29. DATA-ORIENTED DESIGN: AOS ⨯ SOA ARRAY OF STRUCTURES STRUCTURE OF

    ARRAYS ✅ EASY TO READ, WRITE, AND MODEL FOR US. ✅ EXCELLENT DATA LOCALITY. ✅ ENTITIES ARE INTUITIVE BUNDLES. ✅ CACHE-FRIENDLY + SIMD ACCELERATION POSSIBLE. ❌ POOR DATA LOCALITY. ✅ PARALLELIZABLE: SYSTEMS OPERATE ON “COLUMNS” INDEPENDENTLY. ❌ ITERATING OVER MILLIONS SCALES BADLY. ❌ LESS INTUITIVE FOR DEVS USED TO OBJECTS. ❌ HARD TO PARALLELIZE BECAUSE DATA IS INTERLEAVED. ❌ HARDER TO DEBUG AN ENTITY.
  30. DATA-ORIENTED DESIGN: AOS ⨯ SOA ARRAY OF STRUCTURES STRUCTURE OF

    ARRAYS ✅ EASY TO READ, WRITE, AND MODEL FOR US. ✅ EXCELLENT DATA LOCALITY. ✅ ENTITIES ARE INTUITIVE BUNDLES. ✅ CACHE-FRIENDLY + SIMD ACCELERATION POSSIBLE. ❌ POOR DATA LOCALITY. ✅ PARALLELIZABLE: SYSTEMS OPERATE ON “COLUMNS” INDEPENDENTLY. ❌ ITERATING OVER MILLIONS SCALES BADLY. ❌ LESS INTUITIVE FOR DEVS USED TO OBJECTS. ❌ HARD TO PARALLELIZE BECAUSE DATA IS INTERLEAVED. ❌ HARDER TO DEBUG AN ENTITY.
  31. ARRAY OF STRUCTURES UNITS 0 ⇢ 2 X Y dX

    dY HP X Y dX dY HP X Y dX dY HP HP X Y dX dY HP HP X Y dX dY HP UNITS 3 ⇢ 5 X Y dX dY HP X Y dX dY UNITS … ⇢ N X Y dX dY HP X Y dX dY
  32. ARRAY OF STRUCTURES: DAMAGE UNITS 0 ⇢ 2 HP HP

    HP HP HP HP HP UNITS 3 ⇢ 5 HP UNITS … ⇢ N HP
  33. STRUCTURE OF ARRAYS POSITIONS X Y X Y X Y

    X Y X Y X Y X Y dX dY dX dY dX dY HP HP HP HP HP HP VELOCITIES dX dY dX dY dX dY dX dY HIT POINTS HP HP HP HP HP HP HP HP
  34. STRUCTURE OF ARRAYS POSITIONS THREAD A X Y X Y

    X Y X Y X Y X Y dX dY dX dY dX dY HP HP HP HP HP HP VELOCITIES THREAD B dX dY dX dY dX dY HIT POINTS THREAD C HP HP HP HP HP HP
  35. DATA-ORIENTED DESIGN: MINDSET ↝ SMALL LOOPS THAT OPERATE ON ARRAYS

    OF FIELDS. ↝ MINIMIZE THE AMOUNT OF DATA IN CACHE THAT ISN’T READ OR WRITTEN DURING THE UPDATE. ↝ SEVERAL TRANSFORMS CAN RUN IN PARALLEL ON THE SAME LOGICAL OBJECT IF THEY DON’T SHARE FIELDS.
  36. DATA-ORIENTED DESIGN: MINDSET ↝ COULD INDICES REPLACE REFERENCES? ↝ COULD

    A FLAT ARRAY REPLACE A COLLECTION OF OBJECTS? ↝ ARE WE CACHING SOMETHING THAT SHOULDN'T BE EXPENSIVE? ↝ ARE WE ORGANIZING DATA FOR DEVELOPERS OR FOR THE OPERATIONS WE ACTUALLY PERFORM?
  37. ARCHITECTURE ↝ ENTITIES: UNIQUE IDENTIFIERS WITH ZERO OR MORE COMPONENTS

    THEY CAN CHANGE DYNAMICALLY. ↝ COMPONENTS: PLAIN DATATYPES WITHOUT BEHAVIOR. ↝ SYSTEMS: FUNCTIONS MATCHED WITH ENTITIES THAT HAVE A CERTAIN SET OF COMPONENTS.
  38. ARCHITECTURE GREAT ↪ QUERYING AND ITERATING SETS OF ENTITIES LINEARLY.

    ↪ DYNAMICALLY CHANGING COMPONENTS AT RUNTIME. ↪ GENERALLY GOOD FOR MULTITHREADING DUE TO THE SEPARATION OF DATA AND BEHAVIOR. NOT GREAT ↪ QUERIES OR OPERATIONS THAT REQUIRE HIGHLY SPECIALIZED DATA STRUCTURES, SUCH AS BINARY TREES OR SPATIAL STRUCTURES.
  39. ARCHITECTURE GREAT ↪ QUERYING AND ITERATING SETS OF ENTITIES LINEARLY.

    ↪ DYNAMICALLY CHANGING COMPONENTS AT RUNTIME. ↪ GENERALLY GOOD FOR MULTITHREADING DUE TO THE SEPARATION OF DATA AND BEHAVIOR. NOT GREAT ↪ QUERIES OR OPERATIONS THAT REQUIRE HIGHLY SPECIALIZED DATA STRUCTURES, SUCH AS BINARY TREES OR SPATIAL STRUCTURES.
  40. DESIGN & IMPLEMENTATION ↝ WHEN DOES DATA NEED TO BE

    ACCESSED/MUTATED? HOW OFTEN DOES THIS HAPPEN? ↝ WHICH DATA IS ACCESSED/MUTATED TOGETHER? ↝ WHAT IS THE CARDINALITY OF THE DATA? ↝ HOW MANY INSTANCES OF THE DATA WILL EXIST?
  41. DESIGN & IMPLEMENTATION SPARSE TABLE-BASED ↝ STORES EACH COMPONENT IN

    ITS ↝ STORES ENTITIES IN TABLES, OWN SPARSE SET, WHERE THE WHERE COMPONENTS ARE COLUMNS ENTITY ID SERVES AS THE KEY. AND ENTITIES ARE ROWS. ↝ FAST ADD/REMOVE OPERATIONS. ↝ FAST TO QUERY AND ITERATE.
  42. DESIGN & IMPLEMENTATION BITSET-BASED REACTIVE ↝ STORES COMPONENTS IN ARRAYS

    ↝ USES SIGNALS RESULTING FROM AND USES A BITSET TO ENTITY MUTATIONS TO KEEP INDICATE IF AN ENTITY HAS A TRACK OF WHICH ENTITIES SPECIFIC COMPONENT. MATCH SYSTEMS/QUERIES.
  43. CODE DATA COUPLING… CODE COUPLING ↝ MIXING UP CONCERNS. ↝

    BAD FOR MAINTAINABILITY. ↝ OFTEN SEEN AS AN ISSUE. DATA COUPLING ↝ MIXING UP DATA SLICES NOT ACCESSED BY THE SAME CODE. ↝ BAD FOR DATA SHARING. ↝ NOT OFTEN SEEN AS AN ISSUE.
  44. CODE DATA COUPLING… CODE COUPLING ↝ MIXING UP CONCERNS. ↝

    BAD FOR MAINTAINABILITY. ↝ OFTEN SEEN AS AN ISSUE. DATA COUPLING ↝ MIXING UP DATA SLICES NOT ACCESSED BY THE SAME CODE. ↝ BAD FOR DATA SHARING. ↝ NOT OFTEN SEEN AS AN ISSUE.
  45. THINKING OUTSIDE THE BOX: ALTERNATIVE ARCHITECTURES FOR MODERN WEB APPLICATIONS

    #0 Don't take fast networks, CPUs and RAM for granted.
  46. THINKING OUTSIDE THE BOX: ALTERNATIVE ARCHITECTURES FOR MODERN WEB APPLICATIONS

    #1 Software development continually goes through cycles…
  47. THINKING OUTSIDE THE BOX: ALTERNATIVE ARCHITECTURES FOR MODERN WEB APPLICATIONS

    Software development continually #1 goes through cycles… What’s di erent now? What great ideas have ff turned into lost art?
  48. […] “While browsing HackerNews, I sometimes get the feeling that

    every developer out there is working for FAANG, as there are always posts from those people doing some hyped stu . Or you might think that PHP is never used nowadays because whenever it’s mentioned, everyone is hating on it in the comments.” […] f — The silent majority • Vadim Kravcenko, 2022
  49. […] “But let’s be straight, that’s like 1% of all

    of the developers out there — the rest of them are just lurking and coding with their language of choice and being content with it. Be it Fortran, COBOL, Perl, or PHP.” […] — The silent majority • Vadim Kravcenko, 2022
  50. THINKING OUTSIDE THE BOX: ALTERNATIVE ARCHITECTURES FOR MODERN WEB APPLICATIONS

    It all sounds incredibly complex! #2 You don’t need to know all of that to be productive building User Interfaces.
  51. THINKING OUTSIDE THE BOX: 🌶 ALTERNATIVE ARCHITECTURES FOR MODERN WEB

    APPLICATIONS Fundamentals matter #3 more in the AI era . Agents can automate coding but only engineers understand ff tradeo s.
  52. THINKING OUTSIDE THE BOX: ALTERNATIVE ARCHITECTURES FOR MODERN WEB APPLICATIONS

    Agents can automate coding but only engineers who #3 understand memory, scheduling, rendering, and other computer science fundamentals can decide what should be optimized.
  53. THINKING OUTSIDE THE BOX: ALTERNATIVE ARCHITECTURES FOR MODERN WEB APPLICATIONS

    The quality of our engineering decisions depends partly on the #4 range of ideas we've encountered, the alternatives we've explored, and our ability to recognize what works in a particular context.