-
Notifications
You must be signed in to change notification settings - Fork 28
Description
1) Summary
GoodProtocolUI currently exposes the MicroBridge flow at /microbridge but this only suppports fuse <> celo.
We need to add a new coexisting bridge page named GoodBridge at /goodbridge, built with the Message Passing Bridge (MPB) UI/controller patterns from GoodDollar’s shared design/sdk packages. The new page must follow existing GoodProtocolUI layout conventions (PageLayout, FAQ area, wallet gating) and must be feature-flagged for controlled rollout. Minipay users must not see GoodBridge in navigation. This bounty improves bridge UX consistency while keeping MicroBridge intact.
2) Desired behavior
- A new route
/goodbridgeexists and renders a GoodBridge page;/microbridgeremains unchanged and functional. - The GoodBridge page follows current bridge page structure:
PageLayout+ FAQ panel + wallet-gated content. - When wallet is disconnected, users see the same style of “connect wallet” placeholder behavior used in current bridge pages.
- When wallet is connected, page mounts MPB controller/UI from
@gooddollar/good-design(expected to be available as root export in latest version). - Bridge chain/provider/route options are driven by MPB flow and fee API behavior (no custom hardcoded route matrix in GoodProtocolUI).
- Proper user-facing error feedback is shown for RPC/bridge failures (reusing MPB default error handling patterns where possible).
- GoodBridge visibility is controlled by feature flag
goodBridgeEnabledand hidden from minipay navigation. - No regression to existing MicroBridge navigation, route, or behavior.
3) Scope
In scope
- Add a new GoodBridge page component under
src/pages/gd. - Add lazy route registration for
/goodbridge. - Add sidebar entry for GoodBridge under Bridges section.
- Wire feature-flag behavior for
goodBridgeEnabledin relevant UI surfaces. - Enforce minipay navigation exclusion for GoodBridge.
- Reuse existing layout and wallet-gating patterns from current MicroBridge page.
- Keep implementation aligned with existing good-design/sdk-v2 MPB flow behavior.
- Update sdk-v2 and good-design dependencies to latest deployed version.
Out of scope
- Replacing or removing existing
/microbridgeflow. - Final GoodBridge FAQ content authoring (copy will be provided later, just make sure PageLayout is used properly in line with the other pages).
4) Starting points
-
src/pages/gd/MicroBridge/index.tsx— reference for current bridge page composition,SwitchChainModal, and wallet placeholder gating. -
src/routes.tsx— add lazy import + route for/goodbridge. -
src/components/SideBar.tsx— add GoodBridge nav item under Bridges, with minipay + feature-flag visibility logic. -
src/hooks/useFeaturesEnabled.tsx— add/usegoodBridgeEnabledin feature config and consumer checks. -
src/components/Layout/PageLayout.tsx— shared layout contract for page title + FAQ placement. -
src/components/Faq/copies.tsx— prepare bridge FAQ integration point for future GoodBridge copy updates.(GoodWeb3-Mono reference): find in https://github.com/GoodDollar/GoodWeb3-Mono
-
packages/good-design/src/apps/bridge/mpbridge/MPBBridgeController.tsx(GoodWeb3-Mono reference) — target controller behavior. -
packages/sdk-v2/src/sdk/mpbridge/*(GoodWeb3-Mono reference) — source of truth for bridge fees/routes/validation and flow states. -
See the demo story example of how it can be integrated in: https://github.com/GoodDollar/GoodWeb3-Mono/blob/master/packages/good-design/src/stories/apps/bridge/MicroBridgeController.stories.tsx
The demo should not by default be taken as is. make sure it fits within the existing structure of GoodProtocolUI and the behavior from the demo make sense. eg. do we need switchchainModal? how is it handled in other places in ProtocolUI?
5) DoD + How to test
DoD
-
/goodbridgeroute is implemented and accessible in GoodProtocolUI. - New GoodBridge page is added and follows
PageLayout+ FAQ side panel pattern. - Wallet-disconnected state shows connect-wallet placeholder; connected state mounts MPB controller.
- Sidebar includes GoodBridge entry under Bridges with
goodBridgeEnabledgating. - GoodBridge sidebar entry is hidden for minipay users.
-
/microbridgeflow remains intact (no behavior regression). - RPC/bridge failures present actionable user feedback (no silent failures).
-
yarn lintandyarn buildpass. - Properly test on mobile. If there are changes or fixes needed in the UI components, please ask for help.
- PR includes desktop + mobile screenshots, + a demo video for the full flow. Ping maintainers on telegram or on github to request tokens to test
How to test
# from GoodProtocolUI repo
yarn install
yarn lint
yarn build
yarn startManual QA:
- Open
/goodbridgedisconnected: verify placeholder. - Connect wallet: verify MPB UI loads and can select chain/provider.
- Verify available routes adapt based on fee availability (no hardcoded mismatch).
- Trigger a bridge attempt and verify pending/success/error UX states.
- Verify
/microbridgestill behaves as before. - Verify GoodBridge nav visibility toggles correctly for
goodBridgeEnabledand remains hidden in minipay.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status