A lightweight utility for safely loading external scripts in the browser. Fully typed, SSR-aware, framework-agnostic, and caching-safe — ideal for modern web apps and libraries.
- 📆 Small and framework-agnostic
- 📑 Fully typed with TypeScript for autocompletion and safety
- 🚫 Prevents duplicate script injection via internal cache
- 🛡️ Safe to import and use in SSR and non-browser environments
npm install @dschz/load-script
pnpm install @dschz/load-script
yarn install @dschz/load-script
bun install @dschz/load-scriptimport { loadScript } from "@dschz/load-script";
await loadScript("https://example.com/library.js", {
async: true,
type: "text/javascript",
});Loads an external script dynamically and returns a Promise<HTMLScriptElement>.
| Name | Type | Description |
|---|---|---|
src |
string |
Script URL (required) |
options |
LoadScriptOptions |
loadScript options (e.g. async, type) |
container |
HTMLElement |
HTML element to append <script /> to (default: document.head) |
- Scripts are cached by
src. IfinnerHTMLortextContentis set, the script will not be cached. - A nil (
undefined/null) container value will append the script todocument.head. - Cleanup is not automatic — script elements remain in the DOM
- ❄️ SSR-safe: The function will reject gracefully when called in server environments without crashing. No DOM APIs are accessed until the environment is confirmed to be browser-based.
Feel free to open issues or submit pull requests. PRs are welcome!