Shopify Scripts vs Functions: kort fortalt
Debatten om Shopify scripts vs functions handler ikke længere om hvilken teknologi du foretrækker, men om en migrering du skal planlægge. Shopify Scripts var i mange år måden at tilpasse kurv, fragt og betaling på i checkout, men de bygger på en ældre arkitektur, der er på vej ud. Shopify Functions er afløseren, og de udvider hvad du kan tilpasse, både i checkout og bredere i storefront.
Den vigtigste praktiske pointe er, at de to teknologier godt kan køre samtidigt i samme butik i en overgangsperiode. Det betyder, at du ikke behøver at rive alt op på én gang. Du kan migrere logik gradvist og lade eksisterende Scripts fungere, indtil den tilsvarende Function er bygget, testet og rullet ud.
Hvad er forskellen på en Function og et Script?
Forskellen er arkitektonisk, ikke kun kosmetisk. Shopify Scripts var sandkasse-kode skrevet i Ruby, der kørte i checkout og var afgrænset til netop kurv-, fragt- og betalingstilpasninger. Shopify Functions skrives derimod af udviklere i sprog som JavaScript, TypeScript eller Rust og kører direkte i Shopifys egen infrastruktur. De er ikke en tredjepartsapp lagt udenpå, men små kodestykker, der udvider butikkens funktionalitet indefra.
Spørger man konkret hvad forskellen er på en scriptfil og en functionfil, ligger svaret i hvordan de pakkes og deployes. Et Script var en isoleret kodeblok knyttet til checkout. En Function bygges som en del af en app, versioneres og udrulles gennem Shopifys udviklingsværktøjer. Det giver mere kontrol, bedre performance og en model, der spiller sammen med moderne checkout extensibility.
Hvad skal migreres, og i hvilken rækkefølge
Start med at lave en oversigt over al jeres eksisterende Script-logik. I praksis falder den oftest i tre grupper: rabatlogik, fragtlogik og betalingstilpasninger. Rabatter er som regel det første, vi flytter, fordi Shopify Discount Functions giver et modent og fleksibelt grundlag for mængderabatter, kampagner og tier-baserede priser uden tunge apps.
Derefter tager vi fragt- og betalingstilpasninger, for eksempel skjul af bestemte forsendelsesmetoder eller betalingsmuligheder under givne betingelser. For hver regel vurderer vi, om den kan oversættes en-til-en til en Function, eller om logikken bør tænkes anderledes for at udnytte den bredere rækkevidde, Functions tilbyder. Hvis et Script ikke umiddelbart kan erstattes, lader vi det køre videre, til erstatningen er klar.
Hvad er begrænsningerne ved Functions i Shopify?
Functions er kraftfulde, men de er ikke en åben dør til alt. De kører inden for Shopifys egne rammer med faste input og output, og de er bygget til hurtige, deterministiske beslutninger. Det betyder, at de ikke er stedet til langvarige kald til eksterne systemer eller tung databehandling. Skal logikken hente data fra et eksternt ERP eller PIM i realtid, kombinerer vi typisk en Function med andre dele af platformen frem for at presse alt ind i selve Functionen.
Der er også grænser for, hvor stor og kompleks en enkelt Function må være, og hvor lang tid den må bruge på at eksekvere. I praksis er det sjældent en reel forhindring for veldesignet logik, men det stiller krav til, at koden er målrettet og effektiv. Vores erfaring er, at de fleste begrænsninger forsvinder, når man designer logikken med platformen i stedet for imod den.
Sådan griber Mercive migreringen an
Hos Mercive ser vi mange brands, der har akkumuleret Script-logik over flere år, ofte uden samlet dokumentation. Vi starter derfor altid med en kortlægning: hvad gør hvert Script, hvilken forretningsregel ligger bag, og er reglen overhovedet stadig relevant. En migrering er en god anledning til at rydde op i regler, ingen længere bruger.
Derefter bygger vi Functions som en del af en custom app, så logikken er versioneret, testbar og let at vedligeholde. Vi kører nye Functions parallelt med eksisterende Scripts, verificerer adfærden i checkout og skifter først helt over, når vi er sikre på resultatet. Den fremgangsmåde betyder, at jeres kunder aldrig oplever forskellen, mens I får en løsning, der er klar til fremtidens checkout extensibility.
Sådan kan Mercive hjælpe
Vil du arbejde videre med det her, kan du læse mere her:

