Skip to contents

📖 Overview

bidux brings the Behavior Insight Design (BID) framework into your Shiny development workflow. Follow five staged functions (Notice, Interpret, Structure, Anticipate, Validate) to systematically apply psychological principles to UI/UX design and build more intuitive dashboards.

🚀 Key Features

  • Notice friction points (bid_notice())
  • Interpret user needs (bid_interpret())
  • Structure dashboard layouts (bid_structure())
  • Anticipate behavior & biases (bid_anticipate())
  • Validate & empower users (bid_validate())
  • Telemetry Integration: ingest real usage data to auto-detect UX issues (bid_ingest_telemetry())
  • Component Suggestions: get tailored UI component ideas for bslib, shiny, reactable, echarts4r, and more
  • Reporting: generate HTML, Markdown, or text reports of your BID process

📥 Installation

Install from CRAN:

Or the development version:

# install.packages("pak")
pak::pak("jrwinget/bidux")

✅ Quick Start

library(shiny)
library(bidux)

# Document a simple BID pipeline
process <-
  bid_notice(
    problem = "Users struggle to find key metrics",
    evidence = "70% of users spent >30s searching"
  ) |>
  bid_interpret(
    central_question = "Which metrics drive decisions?",
    data_story = list(
      hook = "Key metrics hidden",
      resolution = "Surface top metrics up front"
    )
  ) |>
  bid_structure(
    layout = "dual_process"
  ) |>
  bid_anticipate(
    bias_mitigations = list(anchoring = "Contextual defaults")
  ) |>
  bid_validate(
    summary_panel = "Insights summary"
  )

# View suggestions
bid_suggest_components(process, package = "bslib")

# Generate an HTML report
bid_report(process, format = "html")

📊 Telemetry Integration

Leverage real user behavior to pinpoint UX friction with {shiny.telemetry} data:

# Ingest telemetry from SQLite or JSON
issues <- bid_ingest_telemetry(
  "telemetry.sqlite",
  format = "sqlite"
)

# Inspect detected issues
str(issues)

bid_ingest_telemetry() automatically flags five friction indicators:

  1. Unused Inputs: controls rarely interacted with
  2. Delayed Interactions: long time-to-first-action
  3. Frequent Errors: recurring error patterns
  4. Navigation Drop-offs: seldom-visited tabs/pages
  5. Confusion Patterns: rapid repeated changes

Use these insights to fuel the Notice stage and drive data-informed UI improvements. See the full example and thresholds customization in the Telemetry Integration Vignette.

📚 Vignettes

Explore detailed guides:

🤝 Contributing

We welcome all contributions! Please see CONTRIBUTING.md for guidelines, issue templates, and code style.

📜 License & Code of Conduct

This project is MIT licensed. By contributing, you agree to our Code of Conduct.