Skip to content

Frontend SDK

The Granit Frontend SDK is a collection of 49 TypeScript packages that mirror the Granit .NET backend modules. Every package follows a two-tier architecture:

  1. TypeScript SDK (@granit/<domain>) — framework-agnostic types, API functions, factories, and constants. Zero React dependency. Works with Angular, Vue, Svelte, or plain TypeScript.
  2. React bindings (@granit/react-<domain>) — Provider components and hooks that wrap the TypeScript SDK for React applications.
graph TD
    subgraph "Foundation"
        logger["@granit/logger"]
        utils["@granit/utils"]
        storage["@granit/storage"]
        cookies["@granit/cookies"]
    end

    subgraph "Infrastructure"
        api["@granit/api-client"]
        authn["@granit/react-authentication"]
        authz["@granit/react-authorization"]
        localization["@granit/localization"]
        tracing["@granit/tracing"]
        errorBoundary["@granit/error-boundary"]
    end

    subgraph "Business"
        querying["@granit/querying"]
        dataExchange["@granit/data-exchange"]
        workflow["@granit/workflow"]
        timeline["@granit/timeline"]
        notifications["@granit/notifications"]
    end

    authn --> api
    localization --> storage
    errorBoundary --> logger
    querying --> utils
    dataExchange --> utils
    timeline --> querying
    notifications --> querying

Data flows from types to API functions to hooks to providers: types/ → api/ → hooks/ → providers/

PackageRole
@granit/api-clientAxios factory, Bearer token interceptor, RFC 7807 error types
@granit/idempotencyAutomatic Idempotency-Key header injection
@granit/utilsTailwind CSS class merging, date/number formatting
@granit/loggerConfigurable logger factory with pluggable transports
@granit/logger-otlpOTLP HTTP transport for log-to-trace correlation
PackageRole
@granit/authenticationKeycloak/OIDC types (framework-agnostic)
@granit/react-authenticationKeycloak init hook, auth context factory, mock provider
@granit/authentication-api-keysAPI key management types
@granit/react-authentication-api-keysReact hooks for API key CRUD
@granit/authorizationPermission and role types
@granit/react-authorizationPermission checking hooks
@granit/identityIdentity provider capabilities
@granit/react-identityIdentity provider and hooks
@granit/multi-tenancyTenant resolver abstraction
@granit/react-multi-tenancyTenant provider and hooks
PackageRole
@granit/notificationsTransport-agnostic notification types and API
@granit/react-notificationsNotification provider and hooks
@granit/notifications-signalrSignalR real-time transport
@granit/notifications-sseServer-Sent Events transport
@granit/notifications-web-pushWeb Push VAPID subscription API
@granit/react-notifications-web-pushWeb Push React hook
@granit/notifications-mobile-pushMobile push token registration API
@granit/react-notifications-mobile-pushMobile push React hook
@granit/queryingHeadless data grid types, filter system, saved views
@granit/react-queryingQuery provider, pagination, smart filter hooks
@granit/data-exchangeImport/export pipeline types and API
@granit/react-data-exchangeImport/export providers and hooks
PackageRole
@granit/workflowFSM lifecycle types and API
@granit/react-workflowWorkflow provider, status and transition hooks
@granit/timelineActivity stream types and API
@granit/react-timelineTimeline provider, stream and follower hooks
@granit/templatingTemplate editing, preview, lifecycle (unified package)
@granit/background-jobsBackground job status types
@granit/react-background-jobsJob monitoring and control hooks
PackageRole
@granit/settingsUser/tenant/global settings types and API
@granit/react-settingsSettings provider and hooks
@granit/reference-datai18n reference data types
@granit/react-reference-dataReference data CRUD hooks
@granit/localizationi18next integration, locale resolution
@granit/react-localizationReact localization bindings
@granit/cookiesCookie consent abstraction
@granit/react-cookiesCookie consent provider and hook
@granit/cookies-klaroKlaro CMP adapter
@granit/storageTyped browser storage factory
@granit/react-storageSynchronized storage hook
@granit/tracingOpenTelemetry browser tracing
@granit/react-tracingTracing provider and span hooks
@granit/error-boundaryError context types
@granit/react-error-boundaryError boundary, global capture, breadcrumbs
  • Node.js 22+ and pnpm
  • @tanstack/react-query v5 — peer dependency of all React packages with data fetching
  • Axios v1.x — peer dependency of @granit/api-client

Each frontend package mirrors a Granit .NET module:

.NET moduleFrontend SDK
Granit.Core@granit/api-client, @granit/utils
Granit.Security@granit/authentication, @granit/react-authentication
Granit.Authorization@granit/authorization, @granit/react-authorization
Granit.Identity@granit/identity, @granit/react-identity
Granit.MultiTenancy@granit/multi-tenancy, @granit/react-multi-tenancy
Granit.Notifications@granit/notifications + transport packages
Granit.Querying@granit/querying, @granit/react-querying
Granit.DataExchange@granit/data-exchange, @granit/react-data-exchange
Granit.Workflow@granit/workflow, @granit/react-workflow
Granit.Timeline@granit/timeline, @granit/react-timeline
Granit.Templating@granit/templating
Granit.BackgroundJobs@granit/background-jobs, @granit/react-background-jobs
Granit.Observability@granit/logger, @granit/tracing
Granit.Localization@granit/localization, @granit/react-localization
Granit.Cookies@granit/cookies, @granit/cookies-klaro
Granit.ExceptionHandling@granit/error-boundary, @granit/react-error-boundary

TypeScript types in each package mirror the corresponding .NET DTOs. Changes to a .NET endpoint contract must be propagated to the matching TypeScript type, and vice versa.