Using sveltekit for chrome extension
2023-08-17Started a new svelte project
Create a manifest.json in the static folder
{
  "name": "Svelte Unlog",
  "description": "Svelte Unlog browser extension",
  "version": "0.0.1",
  "manifest_version": 3,
  "action": {
    "default_title": "Svelte Unlog Extension",
    "default_icon": "favicon.png",
    "default_popup": "index.html"
  }
}The default _app directory does not work for chrome extensions [[1]]. So we we will use app instead.
Add this to the the kit config in svelte.config.js
kit: {
	// adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
	// If your environment is not supported or you settled on a specific environment, switch out the adapter.
	// See https://kit.svelte.dev/docs/adapters for more information about adapters.
	adapter: adapter(),
	appDir: 'app'
}Set the +layout.js to prerender
export const prerender = true;Used the chrome extension adapter which deals with the issue where the adapter-static adapter uses a inline script, which is blocked in Manifest V3.
pnpm install -D sveltekit-adapter-chrome-extensionUpdated the svelte.config.js
// import adapter from '@sveltejs/adapter-auto';
import adapter from 'sveltekit-adapter-chrome-extension';Build
>pnpm buildThats it!?
And it works. That all it took…

Resources
[[1]] https://javascript.plainenglish.io/making-a-chrome-extension-with-svelte-2fefb3769c
[[2]] https://dev.to/michmich112/writing-chrome-extensions-using-svelte-kit-and-manifest-v3-mkd