Anıl Şenocak

This isn```t just another closed-source privacy tool. Built entirely in the open, this extension showcases best practices in modern Chrome extension development while solving real-world privacy challenges. Every line of code, every architectural decision, and every feature implementation is available for the community to learn from, contribute to, and improve upon.

🔍 ScreenShots & Visuals
The extension```s popup interface demonstrates sophisticated React patterns with full TypeScript support:
const Popup: () => React.JSX.Element = (): React.JSX.Element => {
const \[currentTab, setCurrentTab\] = useState<chrome.tabs.Tab |null\>(null)
const { t } = useTranslation()
const defaultSettings: Settings = {
on: true,
styles: {
messages: false,
messagesPreview: false,
mediaPreview: false,
name: false,
profilePic: false,
textInput: false,
},
varStyles: {
msBlur: 8, // Message blur intensity
mspBlur: 8, // Message preview blur
mdgBlur: 20, // Media blur (high privacy)
mdpBlur: 20, // Media preview blur
nmBlur: 5, // Name blur (subtle)
ppBlur: 8, // Profile picture blur
wiBlur: 14, // Text input blur
}
}
const \[settings, setSettings\] = useChromeStorageLocal('settings', defaultSettings)
// Dynamic badge calculation - shows active privacy layers
const enabledStylesCount: string = useMemo((): string => {
if (!settings?.styles) return "X"
return Object.values(settings.styles).filter(Boolean).length.toString()
}, \[settings\])
}
The heart of the privacy system lies in its intelligent CSS generation. The extension dynamically creates CSS rules based on user preferences:
export const getCSS = (settings: Partial<Settings\>): CSSStyles => {
const defaultBlur = {
msBlur: 8, mspBlur: 8, mdgBlur: 20, mdpBlur: 20,
nmBlur: 5, ppBlur: 8, wiBlur: 14,
}
const varStyles = settings.varStyles || defaultBlur
return {
messages: \`
/\* Targeted selectors for Bip Web's dynamic class names \*/
div\[itemtype="messages"\] div\[class^="\_textBubble\_\_card\_info\_\_message\_container\_"\],
div\[itemtype="messages"\] div\[class^="\_textBubble\_\_card\_info\_\_message\_content\_text\_"\],
div\[itemtype="messages"\] div\[class^="video-element"\],
div\[itemtype="messages"\] div\[class^="document-element"\],
div\[itemtype="messages"\] div\[class^="image-element"\] {
filter: blur(${varStyles.msBlur}px) !important;
transition: filter 0.3s ease-in-out !important;
}
/\* Smart hover reveal functionality \*/
div\[itemtype="messages"\]:hover div\[class^="\_textBubble\_\_card\_info\_\_message\_container\_"\] {
filter: none !important;
}
\`,
// ... additional CSS rules for other privacy layers
}
}
The extension showcases modern Chrome extension architecture with Manifest V3:
{
"manifest\_version": 3,
"name": "Bip Web Privacy Extension",
"description": "Privacy extension for web.bip.com that applies blur effects to various elements",
"version": "1.1",
"content\_scripts": \[{
"matches": \["<all\_urls>"\],
"js": \["js/vendor.js", "js/content\_script.js", "content.js"\]
}\],
"background": {
"service\_worker": "js/background.js"
},
"permissions": \["scripting", "activeTab", "storage"\],
"host\_permissions": \["<all\_urls>"\]
}
This project serves as a masterclass in modern web development:
// Custom hook integration with Chrome storage
const \[settings, setSettings, isPersistent, error, isInitialStateResolved\] =
useChromeStorageLocal('settings', defaultSettings)
useEffect((): void => {
chrome.action.setBadgeText({
text: isWeb4Bip() ? enabledStylesCount.toString() : "X"
})
chrome.action.setBadgeBackgroundColor({
color: isWeb4Bip() ? "#4285F4" : "#FF0000"
})
}, \[enabledStylesCount, currentTab\])
This open-source project invites developers to:
Getting started with contributions is straightforward:
# Clone and setup
git clone https://github.com/senocak/Chrome-Extension-For-Bip-Web.git
cd Chrome-Extension-For-Bip-Web
npm install
# Development with hot reload
npm run watch
# Production build
npm run build
# Run tests
npm test
# Run build
npm run build
Whether you’re a:
This extension transforms any public space into your private office.
Setting up your privacy shield is remarkably simple:
The codebase is designed for extensibility. Community members can contribute:
This project is perfect for developers wanting to learn:
This extension represents more than just code — it’s a statement about transparent privacy tools. In an ecosystem dominated by closed-source privacy solutions, this project proves that:
Ready to contribute to the future of digital privacy? The Bip Web Privacy Extension offers multiple ways to get involved:
Full code example can be found in github