# Loke Development Loke Development is a small software studio in Sweden. Loke builds websites, web apps, full-stack systems, ecommerce sites, CMS-driven sites, AI tools, mobile apps, desktop apps, browser extensions, and the integrations around them. The useful test is simple: does the thing make someone's work easier or make a product clearer? Work is planned in small pieces, checked in public when that makes sense, and kept understandable after launch. Loke can start from a rough idea, take over an existing codebase, or help find the next sensible fix. ## Good fits - A company site or landing page that needs a clearer path to contact or sign-up. - A CMS-driven site that needs better structure, speed, accessibility, or SEO. - A web app, dashboard, backend, or integration that needs to move from idea to a usable first release. - An AI feature or workflow where the task, limits, and human checks are clear. - A small app, browser extension, tool, or automation that removes repeated work. ## Start here - Services: https://loke.dev/services - Work: https://loke.dev/projects - Tools: https://loke.dev/tools - Writing and guides: https://loke.dev/blog - About Loke Development: https://loke.dev/about - Developer notes and public JSON endpoints: https://loke.dev/developers - Contact: https://loke.dev/contact ## Machine-readable resources - Agent guide: https://loke.dev/llms.txt - Markdown home summary: https://loke.dev/index.md - OpenAPI document: https://loke.dev/openapi.json - Sitemap: https://loke.dev/sitemap.xml For a project inquiry, use https://loke.dev/contact or email hello@loke.dev. ## Topics - [Package management and CI](https://loke.dev/topics/package-management-ci): Practical guidance for reliable dependency management, package-manager upgrades, lockfiles, and CI safeguards. - [Performance](https://loke.dev/topics/web-performance): Measured guidance for faster sites: loading, rendering, caching, Core Web Vitals, and resilient delivery. - [Platform and cloud](https://loke.dev/topics/platform-cloud): Practical guides to cloud platforms, deployments, caching, edge runtimes, and reliable production operations. - [TypeScript and validation](https://loke.dev/topics/typescript-validation): Patterns for safer TypeScript systems, validation, and dependable application boundaries. - [Web frameworks](https://loke.dev/topics/web-frameworks): Version-aware troubleshooting and implementation guidance for modern web frameworks and their application patterns. ## Recent writing - [Fix Slow Next.js Server Actions and Data Fetching](https://loke.dev/blog/fix-slow-nextjs-server-actions-data-fetching): Find why a Next.js App Router page or Server Action feels slow, then fix waterfalls, duplicate queries, uncached fetches, and slow post-action refreshes. - [Fix Next.js Hydration Errors in Production Without Guessing](https://loke.dev/blog/fix-nextjs-hydration-errors-production): A practical way to find the first server and browser difference behind a Next.js hydration error, with fixes for dates, browser APIs, HTML nesting, and extensions. - [Fix Next.js 16.3 standalone output failing on Vercel](https://loke.dev/blog/fix-nextjs-16-3-next-server-nft-enoent-vercel): A hands-on fix for the Next.js 16.3 ENOENT trace-file error on Vercel, with checks for Docker and self-hosted standalone builds. - [Run TypeScript 7 Without Breaking typescript-eslint](https://loke.dev/blog/typescript-7-typescript-eslint-side-by-side): Fix TypeScript 7 ESLint peer conflicts and Cjs crashes by running TypeScript 7 beside the TypeScript 6 compatibility API, with a verified npm setup. - [Next.js npm Audit Flags sharp: Test the Override on Vercel](https://loke.dev/blog/nextjs-sharp-vulnerability-audit-vercel-override): Triage the sharp advisory in Next.js 16.2, apply a package-manager override carefully, and test the real image path before deploying on Vercel. - [Fix Missing Cloudflare Workers Types After the v5 Upgrade](https://loke.dev/blog/fix-cloudflare-workers-types-v5-dated-entrypoints): Fix missing dated Cloudflare Workers type entrypoints after v5, migrate app types to wrangler types, and keep generated declarations current in CI. - [Node 20 Is EOL: Find Every Runtime Pin Before a Failed Deploy](https://loke.dev/blog/node-20-eol-find-runtime-pins): Node 20 is EOL. Audit package metadata, CI, Docker, and host settings, choose a supported target, then verify every runtime pin before a deploy fails. - [Compare Preview and Production Before You Merge](https://loke.dev/blog/compare-preview-production-before-merge): Catch preview deployment drift in status codes, redirects, headers, cookie attributes, canonical URLs, and robots metadata before production. - [Run Multiple Cloudflare Workers Locally With One Safe Plan](https://loke.dev/blog/run-multiple-cloudflare-workers-locally): Resolve Wrangler environments, service bindings, and remote resources before starting a multi-Worker stack, then launch it in dependency order. - [Lint wrangler.jsonc in GitHub Actions Before You Deploy](https://loke.dev/blog/lint-wrangler-jsonc-github-actions): Run Cloudflare Workers config checks in GitHub Actions, annotate exact Wrangler lines, scan monorepos, and upload SARIF when you need it. - [Upgrade Astro 6 on Cloudflare Without a Runtime Surprise](https://loke.dev/blog/upgrade-astro-6-cloudflare-workerd): Upgrade Astro 6 on Cloudflare safely: replace removed runtime APIs, isolate Node-only prerender work, build each environment, and test in workerd. - [Upgrade Vite 7 to Vite 8 Without a Surprise](https://loke.dev/blog/upgrade-vite-7-to-vite-8-rolldown): Use a safe Vite 7 to Vite 8 migration path: check Node support, isolate Rolldown, update optimizer config, and test HMR and production output. - [Next.js 16 Cache Components: Choose cacheLife Before You Cache Data](https://loke.dev/blog/nextjs-16-cache-components-cachelife-guide): Use a clear freshness contract for Next.js 16 Cache Components: decide what can be shared, set cacheLife deliberately, tag reads, and test invalidation. - [Migrate Next.js Pages Router to App Router Without Breaking Everything](https://loke.dev/blog/migrate-nextjs-pages-router-to-app-router): A detailed Pages Router to App Router migration guide covering layouts, route structure, Server Components, caching, metadata, forms, auth, testing, and a safe rollout. - [pnpm 11 Ignored Your Overrides: Move Config Before CI Rewrites It](https://loke.dev/blog/pnpm-11-overrides-not-working-migration): pnpm 11 moved project settings out of package.json. Migrate overrides and build policy to pnpm-workspace.yaml before CI rewrites your lockfile.