> ## Documentation Index
> Fetch the complete documentation index at: https://www.dynamic.xyz/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Welcome

> Dynamic provides one complete wallet stack. Build your way — from low-level APIs to full SDKs. Use primitives for full control or prebuilt flows to ship fast. Get sub-second signing and enterprise-grade security.

export const WelcomeWordRotator = () => {
  const scenes = useMemo(() => [{
    first: "a trade everything app",
    second: "JavaScript"
  }, {
    first: "stablecoin apps",
    second: "React"
  }, {
    first: "cross chain flows",
    second: "React Native"
  }, {
    first: "auto swapping and bridging",
    second: "React"
  }, {
    first: "a neobank",
    second: "Swift"
  }, {
    first: "the next killer consumer app",
    second: "Flutter"
  }, {
    first: "a global payments app",
    second: "JavaScript"
  }, {
    first: "crypto rails",
    second: "raw HTTP"
  }, {
    first: "server wallets",
    second: "Node"
  }, {
    first: "next gen gaming",
    second: "Unity"
  }], []);
  const firstRef = useRef(null);
  const secondRef = useRef(null);
  const sceneRef = useRef(0);
  const splitToSpans = (el, text) => {
    el.innerHTML = "";
    const parts = text.split(/(\s+)/);
    parts.forEach(part => {
      if ((/^\s+$/).test(part)) {
        el.appendChild(document.createTextNode(" "));
        return;
      }
      if (!part) return;
      const wordSpan = document.createElement("span");
      wordSpan.className = "wwr-word";
      part.split("").forEach(char => {
        const span = document.createElement("span");
        span.className = "wwr-char";
        span.textContent = char;
        wordSpan.appendChild(span);
      });
      el.appendChild(wordSpan);
    });
  };
  const staggerIn = el => {
    const chars = el.querySelectorAll(".wwr-char");
    return gsap.fromTo(chars, {
      opacity: 0,
      rotateX: -70,
      filter: "blur(3px)",
      y: 6
    }, {
      opacity: 1,
      rotateX: 0,
      filter: "blur(0px)",
      y: 0,
      duration: 0.7,
      stagger: 0.035,
      ease: "power2.out"
    });
  };
  const staggerOut = el => {
    const chars = el.querySelectorAll(".wwr-char");
    return gsap.to(chars, {
      opacity: 0,
      rotateX: 70,
      filter: "blur(3px)",
      y: -6,
      duration: 0.5,
      stagger: 0.025,
      ease: "power2.in"
    });
  };
  const animate = useCallback(() => {
    const next = (sceneRef.current + 1) % scenes.length;
    const scene = scenes[next];
    sceneRef.current = next;
    const outFirst = staggerOut(firstRef.current);
    const outSecond = staggerOut(secondRef.current);
    const longestOut = outFirst.duration() > outSecond.duration() ? outFirst : outSecond;
    longestOut.eventCallback("onComplete", () => {
      firstRef.current.style.visibility = "hidden";
      secondRef.current.style.visibility = "hidden";
      splitToSpans(firstRef.current, scene.first);
      splitToSpans(secondRef.current, scene.second);
      firstRef.current.style.visibility = "visible";
      secondRef.current.style.visibility = "visible";
      const inFirst = staggerIn(firstRef.current);
      staggerIn(secondRef.current);
      gsap.delayedCall(inFirst.duration() + 2, animate);
    });
  }, [scenes]);
  useEffect(() => {
    splitToSpans(firstRef.current, scenes[0].first);
    splitToSpans(secondRef.current, scenes[0].second);
    staggerIn(firstRef.current);
    gsap.delayedCall(0.08, () => staggerIn(secondRef.current));
    const delay = gsap.delayedCall(2, animate);
    return () => delay.kill();
  }, [animate, scenes]);
  return <section className="welcome-word-rotator not-prose" aria-labelledby="welcome-word-rotator-heading" suppressHydrationWarning>
      <div id="welcome-word-rotator-heading" className="wwr-title">
        <div className="wwr-line">
          Ship <span ref={firstRef} className="wwr-accent"></span>
        </div>
        <div className="wwr-line">
          with Dynamic in <span ref={secondRef} className="wwr-accent"></span>
        </div>
      </div>
    </section>;
};

<div className="welcome-section">
  <WelcomeWordRotator />

  ### Get started

  <Steps>
    <Step title="Get an account">
      Create an environment in the [Dynamic dashboard](https://app.dynamic.xyz/).
    </Step>

    <Step title="Install the MCP">
      <Tabs>
        <Tab title="Cursor">
          [Click here to add the MCP to Cursor.](https://cursor.com/en/install-mcp?name=dynamic\&config=eyJ1cmwiOiJodHRwczovL3d3dy5keW5hbWljLnh5ei9kb2NzL21jcCJ9)
        </Tab>

        <Tab title="Claude Code">
          ```bash theme={"system"}
          claude mcp add --transport http dynamic https://www.dynamic.xyz/docs/mcp
          ```
        </Tab>

        <Tab title="Codex">
          ```bash theme={"system"}
          codex mcp add dynamic --url https://www.dynamic.xyz/docs/mcp
          ```
        </Tab>

        <Tab title="Other">
          If your editor or agent supports remote HTTP MCP, add a server that points at `https://www.dynamic.xyz/docs/mcp`. The exact steps depend on the product; use its MCP documentation for URL-based or HTTP transport setup.
        </Tab>
      </Tabs>
    </Step>

    <Step title="Ask your agent">
      It can access the documentation and start implementing for you!
    </Step>
  </Steps>
</div>

### Browse by platform

Prefer reading in the browser? Use the product menu (top left) or open a guide below.

<Columns cols={4}>
  <Card title="JavaScript" icon="js" href="/javascript" />

  <Card title="React" icon="react" href="/react" />

  <Card title="React Native" icon="react" href="/react-native" />

  <Card title="Flutter" icon="flutter" href="/flutter" />

  <Card title="Swift" icon="swift" href="/swift" />

  <Card title="Unity" icon="unity" href="/unity" />

  <Card title="Kotlin" icon="android" href="/kotlin" />

  <Card title="Node" icon="node" href="/node" />

  <Card title="Python" icon="python" href="/python/quickstart" />

  <Card title="Rust" icon="rust" href="/rust/quickstart">Beta</Card>
  <Card title="Java" icon="java" href="/java/quickstart">Beta</Card>
</Columns>

<Columns cols={2}>
  <Card title="CLI" icon="terminal" href="/cli">Manage environments from the terminal</Card>
  <Card title="API" icon="code" href="/api-reference">Integrate anything using HTTP</Card>
</Columns>

<Columns cols={1}>
  <Card title="Prefer to browse full integrations?" href="/recipes/recipes" icon="hat-chef">
    Check out the Recipes section.
  </Card>
</Columns>

### Support & feedback

Reach us for questions, issues, ideas, or feedback:

<CardGroup>
  <Card title="Slack" icon="slack" href="https://www.dynamic.xyz/slack">
    Join our Slack community
  </Card>

  <Card title="X" icon="x-twitter" href="https://x.com/dynamic%5Fxyz">
    Post or DM us on X
  </Card>

  <Card title="Email" icon="envelope" href="mailto: hello@dynamic.xyz">
    Email [hello@dynamic.xyz](mailto:hello@dynamic.xyz)
  </Card>

  <Card title="Founders" icon="comments" href="mailto:founders@dynamic.xyz">
    Email [founders@dynamic.xyz](mailto:founders@dynamic.xyz) — tell us what works and what does not
  </Card>
</CardGroup>
