Skip to content

dsnchz/solid-create-script

Repository files navigation

solid-create-script

@dschz/solid-create-script

License npm Bundle Size JSR CI

SolidJS hook to load external scripts -- built on top of @dschz/load-script.

✅ Features

  • 📑 Fully typed with TypeScript
  • ✏️ Built on top of @dschz/load-script inheriting all the same features.
  • 📆 Declarative async tracking via Solid's createResource

📦 Installation

npm install solid-js @dschz/load-script @dschz/solid-create-script
pnpm install solid-js @dschz/load-script @dschz/solid-create-script
yarn install solid-js @dschz/load-script @dschz/solid-create-script
bun install solid-js @dschz/load-script @dschz/solid-create-script

These are peer dependencies, so you must install:

  • solid-js
  • @dschz/load-script

🧠 API

createScript(src, options?, container?)

Loads an external script dynamically and returns a Resource<HTMLScriptElement>.

Parameters:

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)

🧪 Example

import { Switch, Match } from "solid-js";
import { createScript } from "@dschz/solid-create-script";

const CustomComponent = () => {
  const script = createScript("https://example.com/widget.js", { async: true });

  return (
    <Switch>
      <Match when={script.loading}>Loading Script...</Match>
      <Match when={script.error}>Failed to load</Match>
      <Match when={script()}>Script is ready!</Match>
    </Switch>
  );
};

📝 Notes

  • Scripts are cached by src unless innerHTML or textContent is used
  • Scripts are not automatically removed on cleanup/unmount
  • Designed to be simple and safe to use inside SolidJS components (in SSR and non-SSR environments)

💬 Feedback & Contributions

Feel free to open issues or submit pull requests. PRs are welcome!

About

Solid hook to dynamically load an external script

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published