07/01/2025
- Discord's Rejse med React Native: En Succesfuld Transformation
- Begyndelsen: Fra Første Dag med React Native
- Strategisk Start: iOS Først, Android Senere
- Et Lille, Men Slagkraftigt Team
- Hastighed og Effektivitet: At Bevæge Sig Hurtigt
- Læring og Tilpasning til Udfordringer
- At Holde Fast i React Native
- Hvad er Nyt hos Discord?
- Indvirkning på Discord's Mobile App Strategier
- Hvorfor Vælge React Native Udviklere?
- Konklusion
- Ofte Stillede Spørgsmål (FAQ)
Discord's Rejse med React Native: En Succesfuld Transformation
Discord, den populære kommunikationsplatform elsket af gamere og fællesskaber verden over, har gennemgået en bemærkelsesværdig teknologisk udvikling. En af de mest markante ændringer har været dens strategiske brug af React Native til sin iOS-applikation. Denne artikel dykker ned i, hvordan Discord's satsning på React Native har været afgørende for deres succes, fra at opnå millioner af brugere til at opbygge et lille, men yderst effektivt udviklingsteam. Vi vil udforske de fordele, udfordringer og læringspunkter, der har formet Discord's mobile strategi.

Begyndelsen: Fra Første Dag med React Native
Discord var blandt de allerførste applikationer, der blev bygget med React Native, lige fra teknologiens spæde start. Tilbage i 2016 delte de deres første års erfaringer med teknologien. Tre år senere stod det klart, at React Native havde vist sig at være utroligt succesfuldt for Discord, og havde været en drivkraft bag deres iOS-brugeradoption, der skød op fra nul til millioner. React Native gav dem mulighed for hurtigt at genbruge kode på tværs af platforme og opbygge et lille, men slagkraftigt team. Samtidig lærte de at tilpasse sig de uundgåelige udfordringer, uden at gå på kompromis med den samlede produktivitet.
Strategisk Start: iOS Først, Android Senere
Discord prøvede React Native allerede den dag, teknologien blev frigivet. De valgte bevidst at vente med at bygge deres iOS-app, da de vidste, at React Native ville blive annonceret på React.js Conf i 2015. Ligeledes afprøvede de React Native den dag, det blev frigivet til Android. De blev positivt overraskede over, hvor nemt og hurtigt de kunne få deres omfattende iOS-app til at køre på Android – det tog kun to dage, og det virkede. Dog stoppede de hurtigt igen, da de identificerede forskellige problemer, såsom dårlig ydeevne for touch-events og manglende 64-bit support. De fortsatte med at følge React Native på Android ved at observere mange andre apps og blogindlæg, men der var ingen fundamentale forbedringer, der overbeviste dem om at prøve igen.
Selvom React Native ikke var ideel til Android på det tidspunkt, indså de, at det ville være perfekt til iOS. Selvom det kan virke mærkeligt at vælge React Native kun til én mobilplatform, især da React Native handlede om at "lære én gang for mobil i stedet for to gange", gav det dem mange fordele:
- Kodegendannelse: React og Flux udgør deres web-frontend teknologistak. Derfor kan de nemt genbruge næsten al forretningslogik (f.eks. stores og biblioteker) og en stor del af deres frontend-værktøjer og infrastruktur (f.eks. eslint, prettier og flow) fra web til iOS.
- Fokus på iOS: Det tillod deres React Native-ingeniører at fokusere på en førsteklasses iOS-app uden at skulle være dygtige til Android-platformen.
Et Lille, Men Slagkraftigt Team
Discord's iOS-app har millioner af daglige aktive brugere og en imponerende rating på 4,8 stjerner baseret på over 240.000 anmeldelser. Alt dette er opnået med et team på kun to ingeniører! React Native har gjort det muligt for dem at holde deres team lille og effektivt, samtidig med at de opretholder Discord's værdier:
- Læring og Udvikling: De skaber fantastiske muligheder for læring og vækst. En af udviklerne startede som native iOS-udvikler, mens den anden havde en webudviklingsbaggrund. Ligesom mange andre ingeniører hos Discord var de begge motiverede til at træde ud af deres komfortzoner, lære en ny platform og blive mere alsidige ingeniører.
- Kodegendannelse på Tværs af Platforme: De deler så meget kode som muligt uden at gå på kompromis med brugeroplevelsen. Frontend-ingeniører ejer deres funktioner på tværs af web- og iOS-platforme gennem genbrugelig kode.
Ligesom deres iOS-team trives Discord ved at lære, vokse og udnytte ekspertise hver dag. Som et resultat er de utroligt stolte af deres imponerende ingeniør-til-bruger-forhold hos Discord – 40 ingeniører til over 130 millioner brugere.

Hastighed og Effektivitet: At Bevæge Sig Hurtigt
React Native har muliggjort en hurtigere iteration af UI-komponenter. Uden at dykke dybt ned i appen kan de bruge Storybook til hurtigt at rendere "dumme" komponenter, der ikke håndterer intern state, med mock props. Ved at bruge de samme værktøjer kan de hurtigt følge webteamet, der oprindeligt adopterede Storybook. Sammen med hot reloading accelererer Storybook dramatisk deres UI-udviklingscyklus. Deres designere kan endda nemt finjustere styling direkte i Storybook.
Nemmere React Native Opgraderinger
Det var smertefuldt og tidskrævende at opgradere deres React Native-fork, som de brugte til at rette specifikke fejl i deres use cases. I dag er udgivelserne mere stabile. Hvor det før tog dage, tog det dem for nylig kun få timer at opgradere deres fork til version 0.55 fra 0.53. Dog opgraderer deres webteam normalt React og/eller andre delte afhængigheder hurtigere end iOS-teamet. At være på forskellige versioner af delte frameworks kan forårsage uventede problemer, der fører til tidskrævende undersøgelser. For eksempel stødte iOS-appen på et øjeblikkeligt crash i en fuld udgivelse, selvom den kørte fint lokalt. Efter at have undersøgt commits på master, viste det sig, at webpack 4-opgraderingen, som kun var til web, brød iOS-builden på grund af delte basiskonfigurationer. De var dog i stand til at lære af disse problemer og anvende viden på deres infrastruktur, hvilket i sidste ende gavnede alle teams.
Over-the-Air (OTA) Patches
For nylig var de i stand til hurtigt at implementere en fejlretning til kameraer efter udgivelse og springe godkendelsesprocessen over. De kan ikke engang tælle, hvor mange OTA'er de har sendt. Ved at få mere spillerum for fejl kan ingeniører sende ofte med tillid og undgå koordinationsproblemer, hvilket frigør alle.
Læring og Tilpasning til Udfordringer
Som enhver teknologi er React Native ikke perfekt, men det begejstrer dem at se Facebook og fællesskabet arbejde aktivt på at forbedre eller eliminere dets svagheder, såsom storskala-rearkitektur og bedre flow-type dækning. React Native er bestemt et revolutionerende og hurtigt skiftende framework, så de udfordringer, de står over for i dag, er ret forskellige fra dem, de stod over for for tre år siden. For eksempel, mens de lærte at genbruge frontend-værktøjer, startede de med React Native Webpack Server, men efter et år fandt de ud af, at den var opgivet. De endte med en ikke-triviel migration til Haul for React 16.

Top 5 Udfordringer med React Native og Deres Løsninger
Her er fem centrale udfordringer, Discord stødte på, og hvordan de overkom dem:
- Umodne Lange Lister: Umodne lange lister har været et velkendt problem fra dag ét. Uden tvivl stødte de på det samme problem i deres kernekomponent: chatvisningen. Alternativt bruger de UITableView for glat scrolling-ydeevne og dynamiske cellehøjder. Desuden styres deres chatvisning i vid udstrækning af JavaScript. Den beregner alle datakilder i JavaScript, sender dem til Objective-C som egenskaber, render hele tabelvisningen i Objective-C via Yoga direkte (samme layoutmotor som React Native bruger) og sender endelig events tilbage til JavaScript for brugerinteraktioner. Det er værd at nævne, at denne chatvisning er den eneste native visning, de har hidtil, hvilket betyder, at de hundredvis af andre React Native-komponenter, de har, er i stand til at levere en tilfredsstillende 60fps ydeevne.
- Opdateringer med Høj Prioritet: Facebook løser dette problem ved at omstrukturere trådningsmodellen. Det vil blive muligt at kalde synkront ind i JavaScript på enhver tråd for opdateringer med høj prioritet. De fandt også en hurtig løsning til UI-opdateringer med høj prioritet, mens de arbejdede på synkron animation af tastaturlayout. Alle tastaturlayout-løsninger er en ramme bagud, når de starter med at lukke tastaturet, og resulterer derfor i et mærkbart mellemrum mellem TextInput og tastaturet. Efter forskellige løsningsforsøg som InputAccessoryView fandt de til sidst en måde at "portalere" React Native-komponenten ind i native iOS-visningshierarkiet og dermed håndtere tastaturopdateringer med høj prioritet synkront i native. De vil detaljere dette yderligere i et senere blogindlæg.
- Kræver Kendskab til Native Platform: I React Native-verdenen vil en webudvikler tage meget længere tid om at lykkes end en native udvikler. Det meste af tiden har det været en glidende sejlads at arbejde med React Native. Dog støder man sommetider på meget specifikke native tekniske detaljer eller finder sig selv i at arbejde på OS-specifikke funktioner som share-udvidelsen på iOS. Webudviklere vil sandsynligvis tage længere tid at lære og nogle gange have brug for hjælp fra ingeniører med native erfaring. Men når de først har lært og vokset, kan de dele værdifuld information på tværs af frontend-platforme og hjælpe med at holde deres teams små og effektive.
- Opstartsforsinkelse: Time to Interaction (TTI) er et nøgleaspekt af, hvordan en bruger opfatter en apps ydeevne. TTI for deres iOS-app er mærkbart længere end andre konkurrerende messaging-apps skrevet i native kode. Da React Native indlæser og parser al JavaScript-kode før udførelse, får man en opstartsforsinkelse baseret på bundtstørrelsen. I deres tilfælde er der en opstartsforsinkelse på cirka 1,5 sekund for at indlæse et 15 MB bundt på en iPhone X. Heldigvis har Facebook dokumenteret "unbundling" til kun at indlæse nødvendige dele af bundtet til opstart og gradvist indlæse mere efter behov via deres packager. Haul, deres React Native packager-erstatning for webpack, understøtter dog endnu ikke "unbundling"/code splitting. De ville ønske, at React Native var mere "webpack-venlig" ud af boksen; de vil uundgåeligt have brug for, at deres frontend-infrastruktur-ingeniører bygger dette internt.
- Begrænset Indsigt i Facebook: I React Native-repoet ser de sommetider "hot issues" med begrænset respons fra Facebook. Manglende indsigt i en så stor virksomhed kan medføre frustration, når så mange mennesker er afhængige af deres open source-bidrag. På den anden side tvinger det dem til at dykke ned i kernen af kildekoden for at finde frem til problemet, hvilket uden tvivl er en af de bedste måder at lære en open source-platform på. Ved at forstå React Native-platformen dybt var de i stand til at vedligeholde en fork, der retter fejl for deres egne use cases og genbruger deres kernemoduler. For eksempel genbruger deres UIImageView, til avatars og/eller emojis i native chat, RCTImageLoader for konsekvent caching.
At Holde Fast i React Native
React Native er et fantastisk framework, der bygger bro mellem web og mobil. Hos Discord har det givet dem utrolig effektivitet. Det giver dem mulighed for at skrive genbrugelig kode, lære af hinanden og bevæge sig hurtigt med et to-personers team. Selvom der er reelle smertepunkter og udfordringer, opvejer de samlede gevinster betydeligt omkostningerne, hvilket motiverer dem til fortsat at investere i platformen.
Hvad er Nyt hos Discord?
Siden Discord blev lanceret i 2015, er dets popularitet vokset markant over de seneste par år. Med 150 millioner månedlige aktive brugere er det en populær social medie-app blandt gamere, der giver dem mulighed for at kommunikere med andre via tekst, tale og video. Discord har annonceret, at de vil bringe nogle store forbedringer til deres Android-app. Appen skifter til React Native-udviklere for at forbedre kvaliteten af opdateringer og brugergrænseflademønstre. Som et resultat kan brugerne modtage hurtigere app-opdateringer og bedre brugeroplevelser. Nøglehøjdepunkter ved Discord-opdateringen inkluderer:
- Strømlinet og konsistent oplevelse på tværs af alle platforme.
- Hurtigere udgivelsescyklusser for nye funktioner.
Indvirkning på Discord's Mobile App Strategier
React Native bruges bredt i populære mobilapps som Instagram, Shopify, Tesla og Pinterest. Discord har brugt dette framework til sin iOS-app. Skiftet til React Native på Android gør Discord mere konsistent på tværs af iOS, Android og desktop. Det betyder, at designet af appen på Android vil ligne desktop- eller iOS-versionen meget tættere. Som Discord-embedsmænd udtaler: "React Native giver os mulighed for at strømline og konsolidere vores processer, hvilket hjælper vores ingeniører med at arbejde mere effektivt og udsende opdateringer hyppigere, især nu hvor teamet ikke længere vil bruge så meget tid på at vedligeholde forskellige kodelinjer til forskellige enheder." React Native er et godt valg, når det kommer til at strømline app-udviklingsprocesser og hjælpe udviklere med at arbejde effektivt. Derudover er der ikke behov for at bruge meget tid på at vedligeholde forskellige kodelinjer til forskellige enheder.
Hvorfor Vælge React Native Udviklere?
Her er yderligere grunde til, at React Native-appudviklere er et givende valg for mobilappudvikling:
- Global Anvendelse: Ved at forestille sig en Android-mobilapp kan man regne med den problemfri implementering af forskelligartet funktionalitet, der følger med et app-udviklingsfirma. Dette gør det muligt at skabe alle typer mobilapps, hvad enten det er simple event-apps eller multifunktionelle sociale netværk.
- Enkelt Kodelinje: En anden grund til, at React Native er et godt valg, er, at det bygger bro mellem web UI-komponenter og deres native modstykker. Det kræver ikke to forskellige udviklingsteams til to forskellige platforme. Der er heller ingen grund til at synkronisere funktioner og layouts. Ansæt blot React Native-appudviklere og skab en enkelt kodelinje, der fungerer på både Android og iOS.
- Hurtigere og Billigere Udvikling: Sammen med muligheden for at skabe en enkelt kodelinje til alle platforme og realisere en række originale koncepter. Disse udviklere giver virksomheder mulighed for at bygge to versioner af appen samtidigt til begge platforme. Som et resultat resulterer parallel brug af kode i reduktion af udviklingsomkostninger og fremskyndelse af udviklingsprocessen.
- Kendt Programmeringssprog: Selvom en frontend-udvikler aldrig har brugt React Native, kan de kickstarte udviklingsdelen med lidt selvstudie. Dette skyldes, at React Native-apps kræver mindre specialiseret viden, især hvis dit team kan programmere i JavaScript og React.js. Alt, hvad det kræver, er lidt Googling for at vide, hvilke webkomponenter der svarer til hvilke mobilkomponenter.
- Uovertruffen Brugeroplevelse: Der er nok virksomhedshistorier at lytte til, når man tager de første skridt med React Native-udviklere. Teknologien eller frameworket er i stand til at levere nye funktioner hurtigere end native værktøjer. Takket være Hot reloading bliver det muligt at tilføje ændringer uden at forstyrre appens arbejdsgang.
Konklusion
Fra Facebook til Airbnb bruger alle React Native til deres mobilapps. Og Discord er ingen undtagelse. Når alt kommer til alt er disse apps nemme at skrive, sparer tid for app-udviklere og reducerer omkostninger for projektledere. Derudover er der ingen grund til at håndtere to separate kodelinjer til Android og iOS.
Ofte Stillede Spørgsmål (FAQ)
Q1. Hvorfor har jeg brug for React Native?
Hvis du ønsker at bygge mobilapps primært på native platforme, så har du brug for React Native. Det vil give dig mulighed for at levere en native, tilpasset brugeroplevelse uden at bekymre dig om komplekse kodelinjer og platforme.

Q2. Er det en god mulighed for startups?
React Native er valget af framework for mange virksomheder, fra teknologigiganter til unge startups. Hvis du skal lancere en startup, så kunne React Native være det rette sted at bygge din forretningsapp. Det er hurtigt, billigt og nemt at bruge.
Q3. Kan jeg migrere en eksisterende app til React Native?
Ja, det kan du! Som et erfarent React Native-appudviklingsfirma tilbyder vi migrationsservices, der vil give dig mulighed for at migrere din eksisterende app til React Native.
Discord fortsætter med at innovere og udnytte React Native til at levere en enestående brugeroplevelse på tværs af platforme. Deres rejse er et vidnesbyrd om kraften i dette framework og potentialet for at opbygge effektive, skalerbare og brugercentrerede applikationer.
Hvis du vil læse andre artikler, der ligner Discord: Succesen med React Native, kan du besøge kategorien Teknologi.
