Background
filecoin.cloud depends on @filecoin-foundation/ui-filecoin (^0.9.0), a React component library that lives inside the Filecoin Foundation monorepo at FilecoinFoundationWeb/filecoin-foundation. That monorepo also houses FF's public marketing sites (fil.org, ffdweb.org, uxit.fil.org), so the library is bundled together with unrelated website content.
Two structural problems have emerged:
- No maintainers. The FF UXIT team was wound down ~1–2 months ago and FF has no front-end engineers on staff. Per Gary (FF), IT ownership fell to Baldemar Loza, who isn't a UI/frontend engineer. The FF monorepo's CI has been failing for several months.
- Releases are bottlenecked by unrelated content. Because the library shares a repo + build/deploy pipeline with the public sites, an unrelated failure (e.g. a markdown syntax error on an FF marketing page) can block shipping a library fix that FOC needs.
This came to a head with #319 (prerelease Curio versions mis-rendered in the SP list). The fix required a change in the FF library (PR #2337), and getting that merged required two additional, unrelated PRs (#2343, #2344) just to unblock the monorepo. Discussion: Slack thread, analysis gist. Reaffirmed as a decision in the FOC WBR/ORR (Jun 17).
How deeply we depend on it
The dependency is pervasive. In filecoin-cloud (current main):
- 60 files with 135 import statements from
@filecoin-foundation/ui-filecoin.
- ~50 distinct entry points used, spanning primitives and app-level systems:
- Primitives:
Button, Card/CardGrid/SimpleCard/LinkCard, Badge, Heading, Icon/IconButton, Container, Input, Checkbox, PageHeader, PageSection, SectionContent, Search/SearchInput, SlideOver, TextLink/*, CTALink, ButtonRow, FilterButton.
- Systems/wrappers:
Navigation/* (menu, mobile nav, links, hooks), Footer/LegalSection, Network/* (NetworkSelector, useNetwork), Table/* (TanstackTable, CompactAddress, ID, SoftwareVersion, YesNoStatus), Markdown/*, state cards (EmptyStateCard, LoadingStateCard, ErrorStateCard), LogoSection/*, Section.
- Global wiring:
src/styles/globals.css does @import "@filecoin-foundation/ui-filecoin/styles", and src/components/SiteLayout.tsx calls setUIConfig(...).
filecoin-pay-explorer depends on it just as heavily (~40+ imports in apps/explorer/, plus @import ".../styles" in globals.css and a documented convention to build on ui-filecoin primitives). pdp-explorer does not use it.
So this isn't a leaf dependency — the design system, navigation, network selector, and table infrastructure all come from it, across two FOC apps.
Decision: fork into a new FilOzone repo
Three paths were floated (see gist):
- FF gets maintainers for the monorepo.
- FF extracts the library into its own repo and FOC WG co-maintains it.
- FOC forks the library.
Given FF has no maintainers and no near-term plan, we'll proceed with forking ui-filecoin into a new standalone repo in the FilOzone org, published as a package that both filecoin-cloud and filecoin-pay-explorer depend on. A dedicated repo (rather than inlining into filecoin-cloud) avoids forking twice and gives both consumers a single source of truth. (Options 1/2 remain preferable if FF engages — Steve is raising it with FF leadership; this fork is the defensive path forward.)
Tasks
Background
filecoin.clouddepends on@filecoin-foundation/ui-filecoin(^0.9.0), a React component library that lives inside the Filecoin Foundation monorepo at FilecoinFoundationWeb/filecoin-foundation. That monorepo also houses FF's public marketing sites (fil.org, ffdweb.org, uxit.fil.org), so the library is bundled together with unrelated website content.Two structural problems have emerged:
This came to a head with #319 (prerelease Curio versions mis-rendered in the SP list). The fix required a change in the FF library (PR #2337), and getting that merged required two additional, unrelated PRs (#2343, #2344) just to unblock the monorepo. Discussion: Slack thread, analysis gist. Reaffirmed as a decision in the FOC WBR/ORR (Jun 17).
How deeply we depend on it
The dependency is pervasive. In
filecoin-cloud(currentmain):@filecoin-foundation/ui-filecoin.Button,Card/CardGrid/SimpleCard/LinkCard,Badge,Heading,Icon/IconButton,Container,Input,Checkbox,PageHeader,PageSection,SectionContent,Search/SearchInput,SlideOver,TextLink/*,CTALink,ButtonRow,FilterButton.Navigation/*(menu, mobile nav, links, hooks),Footer/LegalSection,Network/*(NetworkSelector,useNetwork),Table/*(TanstackTable,CompactAddress,ID,SoftwareVersion,YesNoStatus),Markdown/*, state cards (EmptyStateCard,LoadingStateCard,ErrorStateCard),LogoSection/*,Section.src/styles/globals.cssdoes@import "@filecoin-foundation/ui-filecoin/styles", andsrc/components/SiteLayout.tsxcallssetUIConfig(...).filecoin-pay-explorer depends on it just as heavily (~40+ imports in
apps/explorer/, plus@import ".../styles"inglobals.cssand a documented convention to build onui-filecoinprimitives). pdp-explorer does not use it.So this isn't a leaf dependency — the design system, navigation, network selector, and table infrastructure all come from it, across two FOC apps.
Decision: fork into a new FilOzone repo
Three paths were floated (see gist):
Given FF has no maintainers and no near-term plan, we'll proceed with forking
ui-filecoininto a new standalone repo in the FilOzone org, published as a package that bothfilecoin-cloudandfilecoin-pay-explorerdepend on. A dedicated repo (rather than inlining intofilecoin-cloud) avoids forking twice and gives both consumers a single source of truth. (Options 1/2 remain preferable if FF engages — Steve is raising it with FF leadership; this fork is the defensive path forward.)Tasks
ui-filecoin/foc-ui) and seed it from the current@filecoin-foundation/ui-filecoinsource.filecoin-cloudto the forked package (60 files / 135 imports; includesstyles,setUIConfig,useNetwork/NetworkSelectorglobal wiring).filecoin-pay-explorer(apps/explorer/) to the forked package.