Ekte årsaker og konkrete løsninger. AI optimaliserer for en fungerende demo, ikke et produksjonssystem. Med 15–30 stille arkitekturbeslutninger per feature med ~70% nøyaktighet hver, er sannsynligheten for at ALLE er korrekte praktisk talt null.
«Det fungerer på maskinen min» er den eldste vitsen innen programvareutvikling. Med AI-genererte apper er det ingen vits — det er standardtilstanden. AI tenker ikke på produksjon. Den vet ikke hva en lastbalanserer, tilkoblingspool eller hemmelighetsbehandler er. Den ser bare én ting: din lokale kontekst, din fil, ditt forsøk på å kjøre den.
Når AI bygger en feature, tar den 15–30 stille arkitekturbeslutninger: hvilken database, hvordan koble til et API, hvor lagre nøkler, hvordan håndtere feil. Hver beslutning har omtrent 70% sjanse for å være korrekt. Men for at hele featuren skal fungere i produksjon, må alle beslutninger være korrekte. Sannsynligheten? Med 20 beslutninger: 0.7^20 = 0.08%. Praktisk talt null.
Denne artikkelen dekker de seks vanligste grunnene til at AI-apper fungerer lokalt og krasjer i produksjon — med konkrete eksempler og løsninger. Hvis du bygger med Cursor, Bolt, Lovable, Replit eller et annet AI-verktøy, er denne guiden for deg.
Dette er den mest åpenbare og samtidig vanligste årsaken til produksjonsfeil: konfigurasjon som bare fungerer lokalt. .env-filen din på laptopen har ekte API-nøkler, korrekte URL-er, fungerende hemmeligheter. I produksjon? Plassholdere, manglende variabler eller helt andre adresser.
AI tenker aldri på konfigurasjonshåndtering — den ser bare lokal kontekst. Når den genererer kode som kobler til et API, skriver den http://localhost:3000 direkte i koden. Når den trenger en API-nøkkel, oppretter den en variabel med en standardverdi. Når den bygger en database-URL, hardkoder den tilkoblingsstrengen.
Typiske problemer:
http://localhost:3000/api i stedet for en miljøvariabel. Fungerer lokalt, peker ingensteds i produksjon..env-fil. Du må sette variabler i hostingpanelet ditt (Vercel, Railway, Render).http://, produksjon krever https://. Å blande protokoller forårsaker nettleserblokkering (mixed content) og CORS-feil.Din lokale .env har ekte nøkler. Produksjon kan ha plassholdere, feil URL-er eller manglende hemmeligheter. AI tenker aldri på konfigurasjonshåndtering — den ser bare lokal kontekst.
Eksternaliser ALL konfigurasjon. Hver URL, hver nøkkel, hver hemmelighet bør komme fra en miljøvariabel — aldri fra kildekode. Bruk en hemmelighetsbehandler (f.eks. Doppler, AWS Secrets Manager, Vercel Environment Variables). Opprett en .env.example-fil med navnet på hver påkrevd variabel (uten verdier) og legg den til i repoet som dokumentasjon.
AI elsker SQLite. Den er enkel, krever ingen server, det er bare en fil. Perfekt for en prototype. Problemet? Serverløse plattformer (Vercel, Netlify Functions, AWS Lambda) støtter ikke SQLite fordi hver forespørsel kan treffe en annen instans — det finnes ikke noe delt filsystem.
Men databasen er ikke bare motoren. Det er et helt sett med antakelser AI gjør stille:
AI bruker SQLite fordi den ikke krever noen server. Men serverløse plattformer bryter SQLite — hver forespørsel kan treffe en annen instans uten delt filsystem. Spørringer som fungerer på 50 rader tar 30 sekunder på 50 000 uten indekser.
Bruk PostgreSQL eller MySQL i produksjon. Konfigurer tilkoblingspooling (PgBouncer, Supabase har det innebygd). Legg til indekser på kolonner brukt i WHERE og JOIN. Planlegg en migrasjonsstrategi — bruk et verktøy som Prisma Migrate, Drizzle eller vanlige SQL-filer med versjonering. Modifiser aldri produksjonsskjemaet manuelt.
En Georgetown CSET-studie fant at 45% av AI-generert kode inneholder sikkerhetssårbarheter. Dette er ikke et marginalt problem — det er nesten halvparten av all kode. Og kode som «fungerer» på localhost trenger ikke være sikker.
En skanning av 5 600 vibe-kodede apper avslørte over 2 000 høyrisikobrister og over 400 eksponerte hemmeligheter. Plattformen Moltbook eksponerte 1,5 millioner API-nøkler — Row Level Security på Supabase ble aldri aktivert. Lovable hadde invertert tilgangskontroll over 170 produksjonsapper (CVE-2025-48757): autentiserte brukere ble blokkert mens uautentiserte fikk full tilgang.
Problemer jeg ser regelmessig:
45% av AI-kode inneholder sikkerhetssårbarheter. Skanning av 5 600 vibe-kodede apper: 2 000+ høyrisikobrister, 400+ eksponerte hemmeligheter. Lovable hadde invertert tilgangskontroll over 170 produksjonsapper.
Kjør en OWASP Top 10-gjennomgang. Aktiver Row Level Security på Supabase. Valider alle inputs på serversiden (stol aldri på klienten). Skann repoet ditt etter eksponerte hemmeligheter (bruk gitleaks eller trufflehog). Legg til rate limiting på alle offentlige endepunkter. Flytt API-nøkler fra frontend til backend.
Applikasjonen din fungerer for de første 100 forespørslene. Forespørsel nummer 1 001 forårsaker en krasj — alle databasetilkoblinger er uttømt. Hvorfor? Fordi AI aldri lukket dem. Hver forespørsel åpnet en ny tilkobling, men ingen frigav den.
Det samme gjelder filhåndtak, WebSocket-lyttere, timere og abonnementer. AI oppretter ressurser men frigir dem ikke. På localhost legger du ikke merke til det fordi serveren startes på nytt hvert par minutt og tilbakestiller alt. I produksjon kjører serveren kontinuerlig — og ressursene tar slutt.
Enda verre er stille feil:
try/catch-blokker — betaling feiler, webhook avfyres ikke, men brukeren ser ingen feil. Data forsvinner stille.Databasetilkoblinger som aldri lukkes. Filhåndtak som blir stående åpne. WebSocket-lyttere som aldri ryddes opp. Fungerer for de første 100 forespørslene — forespørsel 1 001 krasjer fordi alle tilkoblinger er uttømt.
Legg til error boundaries på frontend (React: ErrorBoundary). Legg til en global feilbehandler på backend (process.on('uncaughtException')). Distribuer strukturert logging (Sentry, LogRocket, Pino). Lukk databasetilkoblinger etter bruk (eller bruk tilkoblingspooling). Rydd opp lyttere og timere i useEffect cleanup. Belastningstest — å sjekke at det fungerer én gang er ikke nok.
Dette er ikke teoretiske trusler. Dette er hendelser som allerede har skjedd:
t3.micro koster annerledes enn r5.4xlarge. Kostnadsskalering er noe AI aldri tenker på.plan i stedet for price), doble belastninger i 2 uker før noen la merke til det.AI lovet 10x-utviklere. I stedet: juniorer ble promptingenjører, seniorer ble kodevaskere. Kostnaden for å fikse AI-kode overstiger ofte kostnaden for å skrive den fra bunnen av.
Mønsteret gjentar seg: AI genererer kode som ser bra ut. Den består kodegjennomgang (fordi den er lesbar). Den består tester (fordi den tester den lykkelige stien). Så eksploderer den i produksjon fordi ingen sjekket ytelse under belastning, feilhåndtering, sikkerhet eller infrastrukturkostnader.
Før du ruller ut applikasjonen din, gå gjennom disse punktene. Hvert uoppfylt punkt er en potensiell produksjonsfeil. Denne sjekklisten ble bygd fra dusinvis av AI-apprevisjoner jeg har utført for kunder.
Fordi localhost er et perfekt miljø: same-origin (ingen CORS), null nettverkslatens, dev-modus maskerer advarsler, du er den eneste brukeren (ingen race conditions, ingen belastning). I produksjon er hvert av disse vilkårene annerledes — og hvert av dem kan forårsake en feil.
Manglende miljøvariabler og hardkodet konfigurasjon. Det er trivielt, men det står for hoveddelen av «fungerer lokalt, feiler i produksjon»-problemene. .env-filen din har nøkler — produksjonsserveren har det ikke. AI hardkoder URL-er i kildekoden i stedet for å bruke miljøvariabler.
Enkelt spørsmål: hvis du ikke kan svare på «hva skjer når X feiler?» for hver kritisk sti, er appen din ikke klar. Hva skjer når databasen er utilgjengelig? Når Stripe-API-et returnerer en feil? Når 100 brukere klikker «Kjøp» i samme sekund? Hvis du ikke har svar — har du arbeid å gjøre.
Vanligvis ikke. Start med en revisjon. Identifiser kritiske mangler (sikkerhet, database, konfigurasjon). Fiks dem punkt for punkt. En fullstendig omskriving gir bare mening når arkitekturen er fundamentalt feil — men i de fleste tilfeller kan du fikse eksisterende kode iterativt uten å tape arbeidet som er gjort så langt.
Plattform er ikke lik produksjonsklar. Vercel og Netlify er flotte hostingverktøy, men hosting alene er ikke «produksjon». Du trenger fortsatt riktig CORS-konfigurasjon, overvåkning, feilhåndtering, sikkerhet, en skikkelig database og belastningstesting. «Deploy»-knappen er begynnelsen, ikke slutten.
Vi hjelper deg identifisere og fikse hvert av disse problemene. Revisjon, fiks, distribusjon — fra prototype til produksjon.
Bestill en gratis samtale →