bidux

CRAN status R-CMD-check Codecov test coverage Downloads Code Size

📖 Overview

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

🚀 Key Features

📥 Installation

Install from CRAN:

install.packages("bidux")

Or the development version:

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

✅ Quick Start

library(shiny)
library(bidux)

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

# 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 See the package vignette ‘Telemetry Integration’ for a full example (accessible via vignette("telemetry-integration", package="bidux")).

📚 Vignettes

Explore detailed guides:

🤝 Contributing

We welcome all contributions! Please see Contributing Guide 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.