Kinetik UI

Tide Wave

.md

The day's tide as a soft blue swell: the water draws in, drop lines mark highs and lows, and a dot glows at now.

v1.0.0Live on web@shopify/react-native-skiareact-native-reanimatedreact-native-svgreact-native-worklets
Component preview

Installation

Kinetik CLI
npx kinetik-ui add tide-wave

The CLI copies the source and installs native dependencies with npx expo install, so versions match your Expo SDK. With shadcn: npx shadcn@latest add https://kinetik-ui.dev/r/tide-wave.json

Install manually

  1. Install dependencies
    npx expo install @shopify/react-native-skia react-native-reanimated react-native-svg react-native-worklets
  2. Copy the source files
    • components/kinetik/tide-wave.tsx
    View source files

Usage

import { TideWave } from '@/components/kinetik/tide-wave';

<TideWave
  tides={[
    { hour: 1, height: 1.2 },
    { hour: 7, height: 6.1 },
    { hour: 13, height: 0.8 },
    { hour: 19, height: 6.6 },
    { hour: 24, height: 2.1 },
  ]}
  now={9}
/>;

When to use

  • Sailing, surfing, fishing and coastal weather.
  • Any smooth daily cycle with known highs and lows.

When not to use

  • Safety decisions at sea: the curve is a smooth estimate between the times you pass.

Notes

  • Pass each high and low with its hour, and the curve eases between them.
  • The default unit is feet (′). Set unit to change the mark; the spoken label still says feet.

Props

TideWaveProps

PropTypeDefaultDescription
tidesrequiredTidePoint[]—The day's high and low tides in time order.
nowrequirednumber—The hour now, 0–24.
unitstring'′'Unit after the height. Defaults to "′" (feet).
styleStyleProp<ViewStyle>—

Performance and accessibility

Performance

Budget
One Skia canvas drawn on arrival and on change. The halo at now is one view on a UI-thread loop, so it animates at rest.
Measured

Huawei P20 Lite (ANE-LX1), Android 9, release build · 12 ms median frame, 16 ms p90 · keeps drawing at rest · 140 MB app memory

Accessibility

Reduced motion
The swell appears whole, the dot jumps to its place and the halo holds still.
Screen readers
One label ("Tide 4.8 feet and falling").
Touch target
Not interactive.

Source files

components/kinetik/tide-wave.tsx is in the Code tab of the preview above.