New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@surfside/ads-react

Package Overview
Dependencies
Maintainers
4
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@surfside/ads-react

React components for Surfside Ads

latest
npmnpm
Version
0.1.22
Version published
Maintainers
4
Created
Source

Core Library Elements

Design Architecture

The library follows a modern, modular React architecture with two primary layers:

  • Provider: SurfsideProvider – Initializes the Surfside Ads SDK and manages shared global context.
  • Hooks: Custom hooks that encapsulate ad fetching, rendering logic, state management, and analytics.

This separation of concerns allows for clean and extensible integration across a variety of use cases.

Quick Start

Installation

# Using npm
npm install @surfside/ads-react

# Using yarn
yarn add @surfside/ads-react

# Using bun
bun add @surfside/ads-react

Basic Usage

  • Wrap your application with SurfsideProvider to provide the necessary context.
export default function App() {
    return (
        <html lang="en">
            <head>
                {/* Head Content */}
            </head>
            <body>
                <SurfsideProvider
                    channelId='XXXXX'
                    accountId='XXXXX'
                    siteId='XXXXX'
                    locationId='surfside-nyc'
                    userId='surfside-007'
                >
                    <div>
                        {/* Application Content */}
                    </div>
                </SurfsideProvider>
            </body>
        </html>
    );
}
  • Render a banner ad using the useSurfsideBanner hook.
const Homepage = () => {
    const {
        banner,
        loading,
        error,
        analytics
    } = useSurfsideBanner({
        zoneId: 'XXXXX',
        size: [4,1 ]
    });

    useEffect(() => {
        analytics?.trackWin();
    }, [analytics]);

    if (loading) {
        return <BannerSkeleton/>;
    }

    if (error) {
        return <FallbackComponent/>;
    }

    return (
        <div>
            <h1>Welcome!</h1>
            <MenuBar/>
            {/* Banner Ad right below the menu bar */}
            <div dangerouslySetInnerHTML={{__html: banner.adm}}></div>
            {/* ... webpage content */}
        </div>
    );
};

Where to start

Follow these guides to set up your Surfside Ads implementation

  • Surfside API Provider Implementation Guide

  • Banner Implementation Guide

  • Video Implementation Guide

  • Product Feed Implementation Guide

  • Dynamic Zone Integration Guide

Performance & Compatibility

The @surfside/ads-react library is designed to be client-side only. All hooks and rendering logic must run in the browser as access to the browser API is required for bid requests to function correctly. Server-side rendering (SSR) is not supported yet, and attempting to use hooks or providers on the server will result in runtime errors.

To avoid hydration issues, always ensure components using Surfside hooks are rendered only after the client has mounted.

const IsClientOnly = ({ children }: { children: React.ReactNode }) => {
    const [ready, setReady] = React.useState(false);
    React.useEffect(() => setReady(true), []);
    return ready ? <>{children}</> : null;
};

You can wrap Surfside components in a guard like this if needed.

License

Copyright © 2025 Surfside. All rights reserved.

FAQs

Package last updated on 12 Jan 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts