Waterproof Bike Bag
Waterproof Bike Bag
Waterproof Bike Bag
Waterproof Bike Bag
Waterproof Bike Bag
Waterproof Bike Bag
Waterproof Bike Bag
1/7
Waterproof Bike Bag
Waterproof Bike Bag
Waterproof Bike Bag
Waterproof Bike Bag
Waterproof Bike Bag
Waterproof Bike Bag
Waterproof Bike Bag
1/7

Waterproof Bike Bag

$19.99
$39.98
Save $19.99
Quantity

Product description?

Material: TPU + Composite Carbon Polyester?
Dimensions: 8.15 * 3.74 * 5 inch ( 20.7 * 9.5 * 12.7 cm )?
Weight: 0.33 lb ( 0.15 kg £©?
Waterproof or not: Water Resistant?
Color: Black?

  • BIG SPACE: enough inside room for long rides, holds a lot of stuff i.e phone, battery, energy gel, small tire pump, repair kits, keys, wallet etc.
  • HIGH SENSITIVE TOUCH SCREEN: High sensitive TPU film window helps you use cellphone easily while riding, great way to see your activity while using Strava and maps on a ride. Perfect compatible with iPhone X 8 7 6s 6 plus 5s / Samsung Galaxy s8 s7 note 7 Cellphone Below 6.0 inches
  • HUMANIZATION DESIGN: A, opening ports for cables on the bottom of frame bag, enjoy music, answer the phone & recharge your flashlight while riding. B, reasonable size, it would not rubs against your legs while riding. C, reflective tapes on both sides of bags to keep your night ride safety. D, dual soft rubber zipper pulls make it convenient to open & close
  • DURABLE & WATER RESISTANT: The bike top tube bag is made of ultralight and stylish carbon fiber material with sealed double zippers closure, which ensures the water doesn't flow into the bag.The sun visor and flashing board is great use for rainy or sunny day
  • EASY TO INSTALL & QUICK RELEASE: 3 velcro straps are firm enough to hold up on the bike, 1 velcro commuter strap on the front + 1 longer velcro commuter strap on the upper bottom( the long velcro strap can fixed the bag on the head tube firmly) + 1 vercro commuter strap on the lower bottom. It doesn't move around even if you ride on a bumpy or rocky road

      Our Risk-Free 30 Day Guarantee

      • Worldwide?Express?Shipping Available.
      • Ship within?24?Hours?after Payment with Traceable Tracking Number for Each Order.
      • Easy Return, Fast Refund, 100% Money Back Guarantee.
      • We truly believe that a good shopping experience makes our customers return to us.
      • We want you to be happy and satisfied, therefore, we offer a?Risk-Free 30 Days Guarantee to exchange or refund your money.

      • If you do not have a positive experience for?ANY REASON,we will do?WHATEVER it takes?to make sure you are?100% satisfied with your purchase.?
      • Buying items online can be a daunting task, so we want you to realize that there is absolutely?ZERO?RISK in buying something and trying it out.If you don't like it, no hard feelings we'll make it right.
      • We have?24/7?Tickets and Email Support. Please contact us if you need any assistance.
        Customer Reviews

        Here are what our customers say.

        Write a Review
        Customer Reviews
        Wow you reached the bottom
        Newest
        Most liked
        Highest ratings
        Lowest ratings
        ×
        class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
        The review would not show in product details on storefront since it does not support to.