Skip to content

PartyLayer — Open-Source Wallet Abstraction Layer for Canton #9 - Milestone 2 — Framework Expansion & CIP-0104 Cost Helper

OPENIssue
by pedrodneves18-06-2026
100K CC requested
References:CIP-0103CIP-0104

Milestone 2 — Framework Expansion & CIP-0104 Cost Helper

Estimated Delivery: 3 weeks Funding: 100,000 CC

Effort Rationale: Approximately 3 weeks of full-team engineering effort distributed across Vue.js framework parity implementation (~40%), @partylayer/react v2.0 modernization to a TanStack Query–based architecture (~30%), CIP-0104 cost visibility helper (~15%), and CIP-0104 Live Reference (~15%). The primary focus is framework expansion — Vue parity together with React modernization establishing a consistent reactive cache model across frameworks — with the CIP-0104 helper included as a narrow application-layer UX utility.

Deliverables:

  • @partylayer/vue v1.0 — Vue 3 Composables with React Parity

Vue 3 composables with API parity to React bindings (useWallet, usePartyState, useTransactionCost, useDamlContract, useChoice) Component bindings for <TransactionToast />, <CostPreview />, <PartyAvatar />, <SynchronizerSwitcher /> Nuxt 3 SSR compatibility with server-side party fetching and hydration Pinia store integration option for centralized state management Suspense-ready composables for declarative loading boundaries Validated against the same CIP-0103 conformance runner as React bindings

  • @partylayer/react v2.0 — Modernized React Bindings

Modernization of the existing React integration layer to align with current frontend ecosystem standards and establish a consistent reactive cache model that Vue composables and future framework bindings mirror:

TanStack Query v5 integration as a peer dependency, replacing the current context-based state model useQuery/useMutation standard adopted across all hooks (useWallet, usePartyState, useDamlContract, useChoice, useTransactionCost) useSuspenseQuery support via a dedicated @partylayer/react/query entrypoint for declarative loading boundaries Server Components compatibility for Next.js App Router (RSC-safe imports, server-side party prefetching) cookieStorage SSR pattern support for hydrating wallet and party state across server and client boundaries onMutate snapshot/restore patterns baked into mutation hooks for optimistic transaction states with automatic rollback on error Documented v1.x → v2.0 migration guide with codemod-friendly mappings Validated against the same CIP-0103 conformance runner; backward-compatible exports preserved for one minor cycle

  • CIP-0104 Cost Visibility Helper

useTransactionCost React hook and Vue composable Pre-submission CostEstimation reading (confirmation_request_traffic_cost_estimation, confirmation_response_traffic_cost_estimation, total_traffic_cost_estimation) Post-execution paid_traffic_cost reading from the transaction object <CostPreview /> UI component for displaying expected cost before signing and actual cost after execution * Documentation on integrating cost visibility into production dApp UI

Lightweight UX layer around existing ledger API fields (paid_traffic_cost on transaction.proto, CostEstimation on interactive_submission_service.proto). No reward attribution, no observability pipeline, no traffic accounting modification.

  • CIP-0104 Cost Visibility Live Reference

Minimal, single-page, embeddable demonstration of the CIP-0104 cost helper running against DevNet:

Shows exact protobuf field reading (paid_traffic_cost, confirmation_request_traffic_cost_estimation, total_traffic_cost_estimation) in a working dApp Provides a pattern reference wallet teams can point users to when explaining transaction costs * Serves as a regression target for CIP-0104 changes

Acceptance Criteria:

  • @partylayer/vue v1.0 published to npm with API parity to React bindings, Nuxt 3 SSR support, Pinia integration, and validation against the same CIP-0103 conformance runner
  • @partylayer/react v2.0 published to npm with TanStack Query v5 integration, useSuspenseQuery support via @partylayer/react/query, Server Components compatibility, cookieStorage SSR pattern, and a documented v1.x → v2.0 migration guide
  • CIP-0104 Cost Visibility Helper published to npm with useTransactionCost hook/composable reading existing protobuf fields, accompanied by <CostPreview /> UI component for React and Vue
  • CIP-0104 Live Reference deployed publicly demonstrating pre-submission CostEstimation and post-execution paid_traffic_cost reading in a working DevNet dApp
  • All Milestone 2 packages tagged on GitHub with versioned releases and reproducible build instructions

| Milestone | Target Deadline | Funding | | ----------------------------------------------------------------------------------- | --------------- | ---------- | | Milestone 2: Framework Expansion & CIP-0104 Cost Helper