Skip to content

About

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

98 Commits

Folders and files

Repository files navigation

SquareBrowser

License: MIT Open Source

A privacy-focused mobile browser built with React Native and Expo, designed to promote mindful browsing through permanent, local-only history tracking.

Features

  • Privacy First: All browsing data (history, bookmarks, usage stats) is stored locally on your device. No external servers, no data collection, no tracking.
  • Accountability Focus: Permanent browsing history encourages mindful internet usage. History cannot be deleted within the app.
  • Clean Interface: Modern, intuitive UI with dark mode support.
  • Tab Management: Multiple tabs support with easy switching.
  • Bookmarks: Save your favorite sites for quick access.
  • Usage Statistics: Track your browsing habits with daily usage stats.
  • Desktop Mode: Toggle between mobile and desktop user agents.
  • Ad Blocking: Built-in ad blocking capabilities.

Screenshots

Note: Add screenshots here showing the app interface, home screen, settings, etc.

Installation

From Source

  1. Clone the repository:

    git clone https://github.com/MohiuddinSumon/square-browser.git
    cd SquareBrowser
  2. Install dependencies:

    npm install
  3. For Android development, see SETUP.md for detailed setup instructions.

  4. Run the app:

    npm start

    Then press a for Android or i for iOS.

Building for Android

See BUILD_APK.md for instructions on building a release APK.

Development

Prerequisites

  • Node.js (v18 or higher)
  • npm or yarn
  • Android Studio (for Android development)
  • Xcode (for iOS development, macOS only)
  • Expo CLI

Project Structure

SquareBrowser/
├── components/          # Reusable UI components
│   ├── AddressBar.js
│   ├── HomeScreen.js
│   └── NavigationControls.js
├── context/             # React Context providers
│   └── BrowserContext.js
├── screens/             # Screen components
│   ├── BrowserScreen.js
│   ├── BookmarksScreen.js
│   ├── HistoryScreen.js
│   ├── SettingsScreen.js
│   ├── PrivacyPolicyScreen.js
│   └── TermsOfServiceScreen.js
├── utils/               # Utility functions
│   └── storage.js
├── assets/              # Images and icons
├── android/             # Android native code
└── App.js               # Main app component

Running the Development Server

npm start

Building for Production

Android (Manual)

cd android
./gradlew bundleRelease   # AAB for Play Store
./gradlew assembleRelease # APK for direct install

Output locations:

android/app/build/outputs/bundle/release/app-release.aab
android/app/build/outputs/apk/release/app-release.apk

Android (Automated — recommended)

Use the included release.bat script (Windows) to update all version files and build in one step:

release.bat

The script will prompt for the new version name and version code, then automatically update:

  • android/app/build.gradle — versionCode and versionName
  • app.json — version and android.versionCode
  • package.json — version

Then it runs bundleRelease and assembleRelease back-to-back.

Important: Always keep versionCode in sync across all three files. The Gradle file takes precedence when building — a mismatch causes Play Console to receive the wrong version.

Version Management

Version info lives in three places and must always match:

File Fields
android/app/build.gradle versionCode, versionName
app.json expo.version, expo.android.versionCode
package.json version

Use release.bat to update all three atomically and avoid drift.

Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines on how to contribute to this project.

Privacy Policy

SquareBrowser is committed to your privacy:

  • No Data Collection: We do not collect, transmit, or store any of your browsing data on external servers.
  • Local Storage Only: All history, bookmarks, and usage statistics are stored locally on your device using AsyncStorage.
  • No Tracking: No analytics, no tracking, no telemetry.
  • Open Source: The entire codebase is open source, so you can verify our privacy claims.

For more details, see the in-app Privacy Policy or view it in screens/PrivacyPolicyScreen.js.

Terms of Service

By using SquareBrowser, you acknowledge that:

  • This is an accountability-focused tool with permanent history logging.
  • History cannot be deleted within the app.
  • No incognito/private mode is provided.
  • The app is provided "as is" without warranties.

For full terms, see the in-app Terms of Service or view it in screens/TermsOfServiceScreen.js.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Roadmap

See landing/docs/planned-features.md for the full roadmap.

In Progress

  • Weekly/monthly usage trend views and streak tracking
  • Custom domain block lists
  • Scheduled browsing windows (e.g., no browsing before 9am)
  • Home screen timer widget

Planned

  • iOS release (SwiftUI + WKWebView)
  • Family/parental controls with supervised profiles
  • Accountability partner — share usage summaries with a trusted contact
  • Exportable usage reports (CSV/PDF)

Support the Project

SquareBrowser is free, open source, and built by one person. If it's helped you reclaim time from the internet, consider giving back:

Core accountability features stay free forever. Sponsorships help keep it that way.

Help & Issues

Acknowledgments


Made with ❤️ for privacy-conscious users

About

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages