RepoPilotOpen in app →

Flipboard/bottomsheet

Android component which presents a dismissible view from the bottom of the screen

Mixed

Stale — last commit 7y ago

weakest axis
Use as dependencyMixed

last commit was 7y ago; no tests detected

Fork & modifyHealthy

Has a license, tests, and CI — clean foundation to fork and modify.

Learn fromHealthy

Documented and popular — useful reference codebase to read through.

Deploy as-isHealthy

No critical CVEs, sane security posture — runnable as-is.

  • 20 active contributors
  • Distributed ownership (top contributor 30% of recent commits)
  • BSD-3-Clause licensed
Show all 6 evidence items →
  • CI configured
  • Stale — last commit 7y ago
  • No test directory detected
What would change the summary?
  • Use as dependency MixedHealthy if: 1 commit in the last 365 days

Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests

Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.

Embed the "Forkable" badge

Paste into your README — live-updates from the latest cached analysis.

Variant:
RepoPilot: Forkable
[![RepoPilot: Forkable](https://repopilot.app/api/badge/flipboard/bottomsheet?axis=fork)](https://repopilot.app/r/flipboard/bottomsheet)

Paste at the top of your README.md — renders inline like a shields.io badge.

Preview social card (1200×630)

This card auto-renders when someone shares https://repopilot.app/r/flipboard/bottomsheet on X, Slack, or LinkedIn.

Onboarding doc

Onboarding: Flipboard/bottomsheet

Generated by RepoPilot · 2026-05-09 · Source

🤖Agent protocol

If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:

  1. Verify the contract. Run the bash script in Verify before trusting below. If any check returns FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding.
  2. Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
  3. Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/Flipboard/bottomsheet shows verifiable citations alongside every claim.

If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.

🎯Verdict

WAIT — Stale — last commit 7y ago

  • 20 active contributors
  • Distributed ownership (top contributor 30% of recent commits)
  • BSD-3-Clause licensed
  • CI configured
  • ⚠ Stale — last commit 7y ago
  • ⚠ No test directory detected

<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>

Verify before trusting

This artifact was generated by RepoPilot at a point in time. Before an agent acts on it, the checks below confirm that the live Flipboard/bottomsheet repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale — regenerate it at repopilot.app/r/Flipboard/bottomsheet.

What it runs against: a local clone of Flipboard/bottomsheet — the script inspects git remote, the LICENSE file, file paths in the working tree, and git log. Read-only; no mutations.

| # | What we check | Why it matters | |---|---|---| | 1 | You're in Flipboard/bottomsheet | Confirms the artifact applies here, not a fork | | 2 | License is still BSD-3-Clause | Catches relicense before you depend on it | | 3 | Default branch master exists | Catches branch renames | | 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code | | 5 | Last commit ≤ 2643 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> — paste this script from inside your clone of <code>Flipboard/bottomsheet</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of Flipboard/bottomsheet. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/Flipboard/bottomsheet.git
#   cd bottomsheet
#
# Then paste this script. Every check is read-only — no mutations.

set +e
fail=0
ok()   { echo "ok:   $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }

# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
  echo "FAIL: not inside a git repository. cd into your clone of Flipboard/bottomsheet and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "Flipboard/bottomsheet(\\.git)?\\b" \\
  && ok "origin remote is Flipboard/bottomsheet" \\
  || miss "origin remote is not Flipboard/bottomsheet (artifact may be from a fork)"

# 2. License matches what RepoPilot saw
(grep -qiE "^(BSD-3-Clause)" LICENSE 2>/dev/null \\
   || grep -qiE "\"license\"\\s*:\\s*\"BSD-3-Clause\"" package.json 2>/dev/null) \\
  && ok "license is BSD-3-Clause" \\
  || miss "license drift — was BSD-3-Clause at generation time"

# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
  && ok "default branch master exists" \\
  || miss "default branch master no longer exists"

# 4. Critical files exist
test -f "bottomsheet/src/main/java/com/flipboard/bottomsheet/BottomSheetLayout.java" \\
  && ok "bottomsheet/src/main/java/com/flipboard/bottomsheet/BottomSheetLayout.java" \\
  || miss "missing critical file: bottomsheet/src/main/java/com/flipboard/bottomsheet/BottomSheetLayout.java"
test -f "bottomsheet/src/main/java/com/flipboard/bottomsheet/ViewTransformer.java" \\
  && ok "bottomsheet/src/main/java/com/flipboard/bottomsheet/ViewTransformer.java" \\
  || miss "missing critical file: bottomsheet/src/main/java/com/flipboard/bottomsheet/ViewTransformer.java"
test -f "bottomsheet/src/main/java/com/flipboard/bottomsheet/BaseViewTransformer.java" \\
  && ok "bottomsheet/src/main/java/com/flipboard/bottomsheet/BaseViewTransformer.java" \\
  || miss "missing critical file: bottomsheet/src/main/java/com/flipboard/bottomsheet/BaseViewTransformer.java"
test -f "bottomsheet-commons/src/main/java/com/flipboard/bottomsheet/commons/BottomSheetFragment.java" \\
  && ok "bottomsheet-commons/src/main/java/com/flipboard/bottomsheet/commons/BottomSheetFragment.java" \\
  || miss "missing critical file: bottomsheet-commons/src/main/java/com/flipboard/bottomsheet/commons/BottomSheetFragment.java"
test -f "bottomsheet-commons/src/main/java/com/flipboard/bottomsheet/commons/BottomSheetFragmentDelegate.java" \\
  && ok "bottomsheet-commons/src/main/java/com/flipboard/bottomsheet/commons/BottomSheetFragmentDelegate.java" \\
  || miss "missing critical file: bottomsheet-commons/src/main/java/com/flipboard/bottomsheet/commons/BottomSheetFragmentDelegate.java"

# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 2643 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~2613d)"
else
  miss "last commit was $days_since_last days ago — artifact may be stale"
fi

echo
if [ "$fail" -eq 0 ]; then
  echo "artifact verified (0 failures) — safe to trust"
else
  echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/Flipboard/bottomsheet"
  exit 1
fi

Each check prints ok: or FAIL:. The script exits non-zero if anything failed, so it composes cleanly into agent loops (./verify.sh || regenerate-and-retry).

</details>

TL;DR

BottomSheet is an Android library that presents dismissible views sliding up from the bottom of the screen, replacing traditional dialogs and menus. It consists of a core BottomSheetLayout view component (in the bottomsheet module) and a commons library providing pre-built sheet types like IntentPickerSheetView, ImagePickerSheetView, and MenuSheetView. The library has been battle-tested in production at Flipboard since it handles animation, touch interaction, and view hierarchy management automatically. Dual-module structure: bottomsheet module contains the core BottomSheetLayout class; bottomsheet-commons module under src/main/java/com/flipboard/bottomsheet/commons/ provides convenience classes (BottomSheetFragment, IntentPickerSheetView, MenuSheetView, ImagePickerSheetView). Layout resources in bottomsheet-commons/src/main/res/layout/ define grid and list sheet variants.

👥Who it's for

Android developers building apps that need modal bottom sheets for sharing (IntentPicker), image selection (ImagePicker), or menu options. Most relevant for app developers at companies like Flipboard who need a reusable, production-grade component rather than building bottom sheets from scratch.

🌱Maturity & risk

Production-ready and stable. The code is 120KB of Java with Travis CI integration, uses Android API 14+ (minSdkVersion 14), and targets API 23. It's published to Bintray at version 1.5.3. However, the repository shows no recent commits visible in the file listing, suggesting maintenance mode rather than active development.

Minimal risk for existing functionality but low activity risk. Dependencies are lean (mainly com.android.support:appcompat-v7:23.2.0), but the target API 23 is dated (from ~2015). No test directory visible in the file structure suggests limited test coverage. Single-maintainer repo (Flipboard org) with no visible issue backlog means community support is limited.

Active areas of work

No active development visible from the file listing. The codebase appears to be in maintenance mode—the build uses Android Gradle Plugin with API 23 toolchain (circa 2015), and no recent commits or open PRs are evident.

🚀Get running

git clone https://github.com/Flipboard/bottomsheet.git
cd bottomsheet
./gradlew build
./gradlew :bottomsheet-sample:installDebug

Note: You'll need Android SDK with API 23 and Java 7+ (source/target are 1.7).

Daily commands:

./gradlew build                              # Build both modules
./gradlew :bottomsheet-sample:assembleDebug # Build sample APK
./gradlew :bottomsheet-sample:installDebug  # Install to connected device
./gradlew :bottomsheet:connectedAndroidTest # Run tests (if any)

🗺️Map of the codebase

  • bottomsheet/src/main/java/com/flipboard/bottomsheet/BottomSheetLayout.java — Core layout component that manages the dismissible bottom sheet view, touch handling, and animations—the foundation of the entire library.
  • bottomsheet/src/main/java/com/flipboard/bottomsheet/ViewTransformer.java — Interface defining how views transform as the bottom sheet is dragged; any custom sheet animation logic depends on this contract.
  • bottomsheet/src/main/java/com/flipboard/bottomsheet/BaseViewTransformer.java — Abstract base implementation of ViewTransformer providing common transformation logic used by all concrete transformers.
  • bottomsheet-commons/src/main/java/com/flipboard/bottomsheet/commons/BottomSheetFragment.java — Fragment wrapper that integrates BottomSheetLayout with Fragment lifecycle; required for fragment-based use cases.
  • bottomsheet-commons/src/main/java/com/flipboard/bottomsheet/commons/BottomSheetFragmentDelegate.java — Delegation pattern implementation handling fragment-specific logic and state management for bottom sheet fragments.
  • bottomsheet/build.gradle — Build configuration for core library; defines minimum API level (14) and target version affecting compatibility.
  • bottomsheet-commons/src/main/java/com/flipboard/bottomsheet/commons/IntentPickerSheetView.java — Common use-case component for presenting intent-based actions (share, open with, etc.) in a bottom sheet.

🛠️How to make changes

Create a Custom View Transformer for Sheet Animation

  1. Extend BaseViewTransformer in a new file under bottomsheet/src/main/java/com/flipboard/bottomsheet/ (bottomsheet/src/main/java/com/flipboard/bottomsheet/BaseViewTransformer.java)
  2. Override onTransformation(View v, float translation, float percent) to apply custom animations based on drag percentage (bottomsheet/src/main/java/com/flipboard/bottomsheet/ViewTransformer.java)
  3. Pass your transformer to BottomSheetLayout via setViewTransformer(ViewTransformer transformer) (bottomsheet/src/main/java/com/flipboard/bottomsheet/BottomSheetLayout.java)

Add a New Common Sheet Component (e.g., Custom List Sheet)

  1. Create a new class extending a layout container in bottomsheet-commons/src/main/java/com/flipboard/bottomsheet/commons/ (bottomsheet-commons/src/main/java/com/flipboard/bottomsheet/commons/MenuSheetView.java)
  2. Create a layout XML file in bottomsheet-commons/src/main/res/layout/ following the pattern of list_sheet_view.xml (bottomsheet-commons/src/main/res/layout/list_sheet_view.xml)
  3. Implement initialization logic in constructor and any public methods to configure the sheet content (bottomsheet-commons/src/main/java/com/flipboard/bottomsheet/commons/Util.java)
  4. Add a sample Activity in bottomsheet-sample/src/main/java/com/flipboard/bottomsheet/sample/ to demonstrate usage (bottomsheet-sample/src/main/java/com/flipboard/bottomsheet/sample/MainActivity.java)

Integrate BottomSheet into a Fragment-Based Activity

  1. Create your custom Fragment by extending BottomSheetFragment (bottomsheet-commons/src/main/java/com/flipboard/bottomsheet/commons/BottomSheetFragment.java)
  2. Override onCreateView() to return your custom bottom sheet layout or use a provided sheet view (bottomsheet-sample/src/main/java/com/flipboard/bottomsheet/sample/MyFragment.java)
  3. In your Activity, instantiate and show the fragment using FragmentManager (bottomsheet-sample/src/main/java/com/flipboard/bottomsheet/sample/BottomSheetFragmentActivity.java)
  4. Handle dismiss callbacks via OnSheetDismissedListener interface if needed (bottomsheet/src/main/java/com/flipboard/bottomsheet/OnSheetDismissedListener.java)

🔧Why these technologies

  • Android Support Library v7 (AppCompat) — Provides backward compatibility for Fragment, ActionBar, and material design components down to API 14
  • Custom ViewTransformer Pattern — Decouples animation logic from core sheet mechanics, allowing flexible parallax, fade, scale effects without modifying BottomSheetLayout
  • Fragment-based Wrapper Layer — Simplifies lifecycle integration and state management for apps already using Fragment-based architecture
  • Reflection-based Fragment Internals Access — Enables access to internal Fragment state without requiring public APIs, reducing boilerplate for state preservation

⚖️Trade-offs already made

  • Single monolithic BottomSheetLayout rather than composable micro-layouts

    • Why: Simpler mental model and touch/drag handling logic concentrated in one place
    • Consequence: Less flexible for edge cases; customization requires subclassing or ViewTransformers rather than composition
  • Commons module provides pre-built sheet types (IntentPicker, Menu, ImagePicker) rather than just the engine

    • Why: Reduces friction for common use cases; developers can copy patterns
    • Consequence: Larger library footprint if only core sheet is needed; commons module must be kept in sync with core changes
  • Reflection-based access to Fragment internals (AccessFragmentInternals.java)

    • Why: Avoids requiring developers to manually manage Fragment state restoration
    • Consequence: Fragile to Support Library version changes; breaks if internal Fragment API changes
  • Fixed minimum SDK 14 (Ice Cream Sandwich)

    • Why: Broad device coverage while still accessing essential APIs (ViewPager, ActionBar support)
    • Consequence: Cannot use modern APIs; bound to older Android patterns and performance characteristics

🚫Non-goals (don't propose these)

  • Does not implement modal dialogs or replace Dialog framework—focuses on bottom-sheet-specific presentation
  • Does not provide drag-and-drop/reordering functionality—is a presentation container, not a data structure

🪤Traps & gotchas

Fragment delegation gotcha: AccessFragmentInternals.java uses reflection to access private Fragment members for the delegation pattern—this is fragile across Android Support Library versions. No test infrastructure: Zero test files visible; contributing requires adding JUnit/Espresso tests manually. Target API 23 ceiling: Targeting API 23 (2015) means no Material Design 2, no ConstraintLayout, no native Material Components—custom animations may conflict with system behaviors on modern Android.

🏗️Architecture

💡Concepts to learn

  • ViewGroup custom layout and measurement — BottomSheetLayout extends ViewGroup to manage its own children's positioning and sizing during slide-up animation—understanding onMeasure() and onLayout() is essential to modifying sheet behavior
  • Touch event interception and gesture handling — The library intercepts touch events in onInterceptTouchEvent() to detect drag gestures and decide whether to dismiss or settle the sheet—critical for smooth UX and avoiding event conflicts
  • Android Fragment delegation pattern — BottomSheetFragment uses BottomSheetFragmentDelegate to inject bottom sheet behavior into Fragment subclasses without inheritance—trades reflection complexity for composition reuse
  • Property animation and Scroller/ValueAnimator — The slide-up and dismiss animations use Android's Scroller class (or ValueAnimator in variants) to interpolate position smoothly—understanding animation timing is key to tweaking feel
  • Intent resolution and activity matching (Android ShareSheet pattern) — IntentPickerSheetView queries PackageManager to resolve share intents and display matching apps—critical for understanding how the library integrates with Android's intent system
  • RecyclerView and Adapter patterns — Grid and list sheet views use RecyclerView with custom Adapters (visible in grid_sheet_view.xml)—knowledge of ViewHolder pattern and recycling is needed to extend or optimize
  • Android Support Library Fragment internals (reflection access) — AccessFragmentInternals.java uses reflection to access package-private members of Fragment—a maintenance risk that illustrates why direct dependency on Support Library internals should be avoided
  • material-components/material-components-android — Official Material Design bottom sheet component (BottomSheetDialogFragment) that ships with Google's Material library—consider this if you need Material 3 compliance or reduce dependencies
  • erikcaffrey/FABTransformationLayout — Complementary Material Animation library often paired with bottom sheets for FAB-to-sheet transitions
  • afollestad/material-dialogs — Alternative Material dialog framework that includes bottom sheet variants and more modern theming out-of-box
  • Flipboard/motionlayout — Flipboard's own MotionLayout-based animation library that can be composed with BottomSheet for advanced gesture handling
  • google/iosched — Google's I/O Scheduler app—uses standard Android Material BottomSheetBehavior patterns worth studying for API reference

🪄PR ideas

To work on one of these in Claude Code or Cursor, paste: Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.

Add instrumented Android tests for BottomSheetFragment lifecycle and state management

The repository lacks test coverage for core components. The bottomsheet-commons module contains BottomSheetFragment.java, BottomSheetFragmentDelegate.java, and BottomSheetFragmentInterface.java which handle fragment lifecycle, dismissal, and state. These are critical paths that would benefit from instrumented tests to ensure reliability across Android API levels (minSdkVersion 14 to targetSdkVersion 23). This is especially important given the fragment internals being accessed via AccessFragmentInternals.java.

  • [ ] Create bottomsheet-commons/src/androidTest/java/com/flipboard/bottomsheet/commons/ directory structure
  • [ ] Add BottomSheetFragmentTest.java to test fragment lifecycle, show/dismiss behavior, and state persistence
  • [ ] Add BottomSheetFragmentDelegateTest.java to test delegate pattern functionality
  • [ ] Update bottomsheet-commons/build.gradle to include androidx.test:runner, espresso-core, and fragment-testing dependencies
  • [ ] Ensure tests run on Travis CI by updating .travis.yml if needed

Add unit tests for ImagePickerSheetView and IntentPickerSheetView adapter binding logic

The commons module provides UI components (ImagePickerSheetView.java, IntentPickerSheetView.java, MenuSheetView.java) that bind data to GridView/ListView adapters. Currently there are no tests validating that these adapters correctly handle item selection, click listeners, and data binding. Adding unit tests would prevent regressions when maintaining or refactoring these critical UI components.

  • [ ] Create bottomsheet-commons/src/test/java/com/flipboard/bottomsheet/commons/ directory structure
  • [ ] Add ImagePickerSheetViewTest.java testing adapter item binding, click handling, and image loading
  • [ ] Add IntentPickerSheetViewTest.java testing intent filtering, icon loading, and item selection callbacks
  • [ ] Add MenuSheetViewTest.java testing menu item parsing and click delegation
  • [ ] Update bottomsheet-commons/build.gradle to include junit, mockito, and robolectric dependencies for unit testing

Create missing documentation for commons module components in README.md

The README.md snippet shows the introduction but is incomplete (ends with 'If all you want is the BottomSheet component a'). There is a README.md.template file present but no documented usage examples for the commons components (ImagePickerSheetView, IntentPickerSheetView, MenuSheetView, BottomSheetFragment). Contributors and users need clear examples of how to use these pre-built components and when to choose each one.

  • [ ] Complete the README.md Installation section with both core and commons module installation instructions
  • [ ] Add a 'Commons Components' section documenting ImagePickerSheetView with code example and screenshot reference
  • [ ] Add usage examples for IntentPickerSheetView and MenuSheetView with sample Activity code
  • [ ] Add a 'BottomSheetFragment' subsection showing how to use BottomSheetFragment vs. the base BottomSheet component
  • [ ] Update or remove README.md.template file to clarify its purpose or integrate it into the main README

🌿Good first issues

  • Add Espresso UI tests: The codebase has no visible test files. Create bottomsheet-commons/src/androidTest/java/com/flipboard/bottomsheet/commons/ and write tests for IntentPickerSheetView.onIntentPicked() callback and animation lifecycle.
  • Update to Material Design 3: Modernize the commons layouts (grid_sheet_view.xml, list_sheet_view.xml) to use Material 3 color system and typography instead of hardcoded colors in bottomsheet-commons/src/main/res/values/colors.xml.
  • Document the Fragment delegation pattern: Add inline Javadoc explaining why BottomSheetFragmentDelegate and AccessFragmentInternals exist—this pattern is non-obvious and maintenance-risky. Include links to the Fragment lifecycle documentation.

Top contributors

Click to expand
  • @markrietveld — 30 commits
  • @ZacSweers — 30 commits
  • [@Zac Sweers](https://github.com/Zac Sweers) — 10 commits
  • @kyild — 6 commits
  • [@Doug Lee](https://github.com/Doug Lee) — 5 commits

📝Recent commits

Click to expand
  • 2792f24 — Merge pull request #194 from Flipboard/fixexpand (kyild)
  • 85024ab — Fixes faulty bottom sheet position (kyild)
  • ed39a76 — Merge pull request #193 from Flipboard/expand (kyild)
  • c3d365a — Fix wrong bottom sheet position after sheet gets expanded (kyild)
  • 43ab062 — Customize tile layout (#165) (dlackty)
  • 26747ae — Merge pull request #176 from petterh/petterh/fix-readme (Mark Rietveld)
  • d67bb20 — Fixed headers, changed tabs to spaces and fixed markdownlint warnings (Petter Hesselberg)
  • e7f40c3 — Bump version number and update readme. (Doug Lee)
  • 252542d — Merge pull request #167 from Flipboard/taresin/dont.remove.listeners.161128 (Dougy Lee)
  • 18de94a — Don't clear listeners at the end of dismissSheet() animation. (Doug Lee)

🔒Security observations

The BottomSheet codebase has moderate security concerns, primarily related to outdated dependencies and SDK versions. The project uses Android Support Library v23.2.0 (outdated by ~8 years) and targets Android API level 23, both of which lack modern security patches and features. Additionally, lint errors are suppressed, and the Java source compatibility is set to Java 7. While there are no apparent hardcoded credentials, injection risks in the source code visible, or infrastructure misconfigurations, the outdated dependency stack poses significant security risks. Immediate action should be taken to modernize the build configuration, migrate to AndroidX, and target current API levels.

  • High · Outdated Android Support Library — bottomsheet-commons/build.gradle. The project uses com.android.support:appcompat-v7:23.2.0, which was released in 2016 and contains known security vulnerabilities. This version is no longer maintained and has been superseded by AndroidX. Fix: Migrate to AndroidX and update to the latest androidx.appcompat:appcompat dependency. At minimum, update to a more recent version of the support library.
  • High · Outdated Compile and Target SDK — bottomsheet-commons/build.gradle and bottomsheet/build.gradle. The project targets SDK 23 (Android 6.0, released 2015) and uses buildToolsVersion 23.0.2. Modern Android security standards require targeting recent API levels. This prevents access to security patches and modern security features. Fix: Update compileSdkVersion and targetSdkVersion to API level 33 or higher. Update buildToolsVersion to a recent version (e.g., 33.0.0 or later).
  • Medium · Lint Errors Suppressed — bottomsheet-commons/build.gradle. The build.gradle contains 'abortOnError false' which disables lint error detection. This allows security warnings and best practice violations to be silently ignored during the build process. Fix: Remove or set 'abortOnError true' to catch security and code quality issues. Address lint warnings rather than suppressing them.
  • Medium · Java 7 Compatibility Target — bottomsheet-commons/build.gradle. The project targets Java 7 (VERSION_1_7) which reached end-of-life in 2022. Modern Android development should target Java 8 or higher to support security updates and modern language features. Fix: Update compileOptions to target at least JavaVersion.VERSION_1_8 or VERSION_11.
  • Low · AccessFragmentInternals Bypass Pattern — bottomsheet-commons/src/main/java/android/support/v4/app/AccessFragmentInternals.java. The presence of AccessFragmentInternals.java suggests direct access to Android Support Library internal APIs, which is a fragile pattern that may break with updates and is not officially supported. Fix: Refactor to use only public Android Support Library APIs. Consider using official Fragment transaction methods instead of accessing internals.
  • Low · No Security Policy File — Repository root. No security.txt or security policy document found in the repository. This makes it difficult for security researchers to report vulnerabilities responsibly. Fix: Create a SECURITY.md file with responsible disclosure guidelines and contact information for reporting vulnerabilities.

LLM-derived; treat as a starting point, not a security audit.


Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.

Mixed signals · Flipboard/bottomsheet — RepoPilot