Custom Builds for sale

This site has limited support for your browser. We recommend switching to Edge, Chrome, Safari, or Firefox.

Custom Build Inspiration
We will be closed for Christmas from 14:00 on Saturday, the 20th, and will reopen on Tuesday 5th of January! - All orders will be dispatched after the 5th!
UTO (ex Eovolt)
CartEarly Rider
Second-Hand Bikes

Custom Builds
Custom Builds for sale
<
<
<
S S - £650.00 GBP
1
1
Header Image

Surly Straggler Frameset - Black 700c{"id":8055181869282,"title":"Surly Preamble Frameset - horfrost White","handle":"preamble-frameset-horfrost-white","description":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003e\u003cspan data-mce-fragment=\"1\"\u003ePlease get in touch with a member of the team to discuss the availability of size, build kit, and colour if the option you require is out of stock - 0131 374 5324 \/ edinburgh@projektride.co.uk\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003eDesigned to introduce unfamiliar riders to Surly’s pavement and gravel line, Preamble highlights Surly’s most essential features: Durable custom steel tubing, a renowned ride feel, and just the right mounts for running racks, fenders, and bottle cages. Available in flat-bar and drop-bar configurations, it’s disc-brake specific and shares a single-position vertical dropout with Surly Bridge Club. For new weekend riders and veteran commuters, Preamble makes it easier than ever to get out of the car and on top of tough and comfortable Chromoly steel.\u003c\/p\u003e\n\u003cp\u003e100% Surly Chromoly steel frame and fork; double-butted main triangle\u003cbr\u003eFive frame sizes to fit nearly every size rider (XS, S, M, L, XL), with a slightly sloped top tube on XS and Small frames for improved standover and comfort\u003cbr\u003eFriendly with 1x and 2x drivetrains\u003cbr\u003eMounts for racks, mudguards, and two bottle cages (located on the seat tube and down tube)\u003cbr\u003eClearance for 650b x 41mm tyres on XS–S frame sizes (with or without mudguards); 700c x 41mm tyres on M–XL frame sizes (with or without mudguards)\u003c\/p\u003e","published_at":"2023-03-18T19:28:46+00:00","created_at":"2023-03-18T19:28:47+00:00","vendor":"Surly","type":"Bicycles","tags":["bike","BIKES","frames","Gravel","Road \/ Gravel \/ Touring Bikes","surly"],"price":65000,"price_min":65000,"price_max":65000,"available":true,"price_varies":false,"compare_at_price":null,"compare_at_price_min":0,"compare_at_price_max":0,"compare_at_price_varies":false,"variants":[{"id":43936684310754,"title":"XS","option1":"XS","option2":null,"option3":null,"sku":"FMSUPA230W","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Surly Preamble Frameset - horfrost White - XS","public_title":"XS","options":["XS"],"price":65000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":43936684343522,"title":"S","option1":"S","option2":null,"option3":null,"sku":"FMSUPA231W","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Surly Preamble Frameset - horfrost White - S","public_title":"S","options":["S"],"price":65000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":43936684376290,"title":"MD","option1":"MD","option2":null,"option3":null,"sku":"FMSUPA232W","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Surly Preamble Frameset - horfrost White - MD","public_title":"MD","options":["MD"],"price":65000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":43936684409058,"title":"LG","option1":"LG","option2":null,"option3":null,"sku":"FMSUPA233W","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Surly Preamble Frameset - horfrost White - LG","public_title":"LG","options":["LG"],"price":65000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":43936684441826,"title":"XL","option1":"XL","option2":null,"option3":null,"sku":"FMSUPA234W","requ

ires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Surly Preamble Frameset - horfrost White - XL","public_title":"XL","options":["XL"],"price":65000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/products\/fmsu-23-preamble-whi.jpg?v=1679167729","\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-10-14at20.42.11_1296x_6cd10f9e-da7d-409b-b103-fec76fb87fa6.webp?v=1679167729"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/products\/fmsu-23-preamble-whi.jpg?v=1679167729","options":["Size"],"media":[{"alt":null,"id":31695312847074,"position":1,"preview_image":{"aspect_ratio":1.0,"height":1000,"width":1000,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/fmsu-23-preamble-whi.jpg?v=1679167729"},"aspect_ratio":1.0,"height":1000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/products\/fmsu-23-preamble-whi.jpg?v=16791677 29","width":1000},{"alt":null,"id":31695312879842,"position":2,"preview_image":{"aspect_ratio":1.932,"height":588,"width":1136,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-10-14at20.42.11_1296x_6cd10f9e-da7d-409b-b103-fec76fb87fa6.webp?v=1679167729"},"aspect_ratio":1.932,"height":588,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-10-14at20.42.11_1296x_6cd10f9e-da7d-409b-b103-fec76fb87fa6.webp?v=1679167729","width":1136}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003e\u003cspan data-mce-fragment=\"1\"\u003ePlease get in touch with a member of the team to discuss the availability of size, build kit, and colour if the option you require is out of stock - 0131 374 5324 \/ edinburgh@projektride.co.uk\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003eDesigned to introduce unfamiliar riders to Surly’s pavement and gravel line, Preamble highlights Surly’s most esse

ntial features: Durable custom steel tubing, a renowned ride feel, and just the right mounts for running racks, fenders, and bottle cages. Available in flat-bar and drop-bar configurations, it’s disc-brake specific and shares a single-position vertical dropout with Surly Bridge Club. For new weekend riders and veteran commuters, Preamble makes it easier than ever to get out of the car and on top of tough and comfortable Chromoly steel.\u003c\/p\u003e\n\u003cp\u003e100% Surly Chromoly steel frame and fork; double-butted main triangle\u003cbr\u003eFive frame sizes to fit nearly every size rider (XS, S, M, L, XL), with a slightly sloped top tube on XS and Small frames for improved standover and comfort\u003cbr\u003eFriendly with 1x and 2x drivetrains\u003cbr\u003eMounts for racks, mudguards, and two bottle cages (located on the seat tube and down tube)\u003cbr\u003eClearance for 650b x 41mm tyres on XS–S frame sizes (with or without mudguards); 700c x 41mm tyres on M–XL frame sizes (with or without mudguar£800.00ds)\u003c\/p\u003e"}

   []

SKU: FMSUG54K { "@context": "http://schema.org/", "@type": "Product", "name": "Surly Preamble Frameset - horfrost White", "url": "https:\/\/projektride.co.uk\/products\/preamble-frameset-horfrost-white","image": [ "https:\/\/projektride.co.uk\/cdn\/shop\/products\/fmsu-23-preamble-whi_1000x.jpg?v=1679167729" ],"description": "\nPlease get in touch with a member of the team to discuss the availability of size, build kit, and colour if the option you require is out of stock - 0131 374 5324 \/ edinburgh@projektride.co.uk\nDesigned to introduce unfamiliar riders to Surly’s pavement and gravel line, Preamble highlights Surly’s most essential features: Durable custom steel tubing, a renowned ride feel, and just the right mounts for running racks, fenders, and bottle cages. Available in flat-bar and drop-bar configurations, it’s disc-br
ake specific and shares a single-position vertical dropout with Surly Bridge Club. For new weekend riders and veteran commuters, Preamble makes it easier than ever to get out of the car and on top of tough and comfortable Chromoly steel.\n100% Surly Chromoly steel frame and fork; double-butted main triangleFive frame sizes to fit nearly every size rider (XS, S, M, L, XL), with a slightly sloped top tube on XS and Small frames for improved standover and comfortFriendly with 1x and 2x drivetrainsMounts for racks, mudguards, and two bottle cages (located on the seat tube and down tube)Clearance for 650b x 41mm tyres on XS–S frame sizes (with or without mudguards); 700c x 41mm tyres on M–XL frame sizes (with or without mudguards)","sku": "FMSUPA230W","brand": { "@type": "Thing", "name": "Surly" },"gtin8": "","offers": [{ "@type" : "Offer","sku": "FMSUPA230W","availability" : "http://schema.org/InStock", "price" : 650.0, "priceCurrency" : "GBP", "url" : "https:\/\/proj ektride.co.uk\/products\/preamble-frameset-horfrost-white?variant=43936684310754" }, { "@type" : "Offer","sku": "FMSUPA231W","availability" : "http://schema.org/InStock", "price" : 650.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/preamble-frameset-horfrost-white?variant=43936684343522" }, { "@type" : "Offer","sku": "FMSUPA232W","availability" : "http://schema.org/InStock", "price" : 650.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/preamble-frameset-horfrost-white?variant=43936684376290" }, { "@type" : "Offer","sku": "FMSUPA233W","availability" : "http://schema.org/InStock", "price" : 650.0, "priceCurrency" : "GBP", "url" : "https:\/\/projektride.co.uk\/products\/preamble-frameset-horfrost-white?variant=43936684409058" }, { "@type" : "Offer","sku": "FMSUPA234W","availability" : "http://schema.org/InStock", "price" :
div class="featured-image__bg bg-pos-center-center" style="background-image: url('//projektride.co.uk/cdn/shop/files/2571D9FF-E9AE-4004-9A55-C7FD4DD999D6_2048x.jpg?v=1640941114');">
.site-footer { --bg: #1f2324; --text: #ffffff; --text-alpha-15: rgba(255, 255, 255, 0.15); --text-alpha-60: rgba(255, 255, 255, 0.6); --text-alpha-85: rgba(255, 255, 255, 0.85); } .footer-content__logo__image { width: 170px; }< img src="//projektride.co.uk/cdn/shop/files/logo_header_2048x2048.png?v=1634060673" alt="" class="logo--footer">
About Us
Contact Us Blog Track Service Progress Building Your Bike From the Box Insure Your Bike Terms of Service Refund policy

  • Steerer1 1/8" threadless Email
  • [email protected]Headset Compatibility 1 1/8" a-head
  • Seatpost 27.2mm
  • © 2025, Seat ClampProjektRide30.0mm (we include our Surly stainless clamp with our framesets).
  • Website by
  • Juan Borges DesignsFront Derailleur.28.6 mm band-on
  • BB Shell 68mm English window._RestockRocketConfig = window._RestockRocketConfig || {} // Helper function to normalize locale format from hyphen to underscore (e.g., 'en-US' -> 'en_us') // This matches the backend's Mobility.normalize_locale behavior // Returns empty string if locale is empty or invalid (matches original behavior) function normalizeLocale(locale) { if (!locale || locale.trim() === '') { return ''; } return locale.toString().toLowerCase().replace(/-/g, '_'); } window._RestockRocketConfig.locale = 'en'; window._RestockRocketConfig.normalizedLocale = normalizeLocale('en'); window._RestockRocketConfig.shop = 'projektride.myshopify.com'; window._RestockRocketConfig.pageType = 'product';window._RestockRocketConfig.marketId = 382140642;window._RestockRocketConfig.countryName = 'United Kingdom'; window._RestockRocketConfig.countryIsoCode = 'GB';window._RestockRocketConfig.cartInventoryQuantity = {};window._RestockRocketConfig.cachedSettings = {"id":38500,"shop_id":38436,"currency":"GBP","created_at":"2025-07-26T09:13:57.337Z","updated_at":"2025-11-11T14:27:02.312Z","enable_app":true,"enable_signup_widget":false,"storefront_button_text":"Notify me when available","storefront_button_text_color":"#FFFFFF","storefront_button_background_color":"#202223","storefront_form_header":"Notify me","storefront_form_description":"Get a notification as soon as this product is back in stock by signing up below!","storefront_form_button_text":"Notify me when available","storefront_form_button_text_color":"#FFFFFF","storefront_form_button_background_color":"#202223","storefront_form_terms":"Promise we won't spam. You'll only receive notifications for this product.","storefront_form_error":"Please enter a valid email address","storefront_form_success":"Thank you! We will notify you when the product is available.","enable_powered_by":true,"show_button_on_preorder":true,"sms_enabled":false,"email_enabled":true,"storefront_button_disable_tag":"rocket-hide","theme_config":{},"storefront_form_email_placeholder":"Email address","storefront_form_phone_placeholder":"SMS","storefront_form_phone _label":"Phone number","storefront_form_email_label":"Email","storefront_form_phone_error":"Please enter a valid phone number","storefront_form_customer_name_placeholder":"Name","storefront_form_customer_name_error":"Please enter your name","storefront_form_did_you_mean_error":"Did you mean %{suggested_email}? Or use %{current_email}","form_customer_name_enabled":false,"form_customer_name_required":false,"css_config":"","js_config":null,"collect_promotion_consent":false,"storefront_form_promotion_consent_label":"Notify me about other news, sales, discounts & offers too","show_button_on_collection":false,"sms_default_country":"us","sms_restrict_country":false,"sms_default_channel":true,"optin_required":false,"optin_success_text":"Registration confirmed! You'll receive an alert when the product is restocked.","storefront_button_border_radius":0,"storefront_button_disable_tag_hides_button":true,"storefront_button_disable_tag_enabled":false,"quantity_required":false,"storefront_form_quantity_label":"Quantity","en
  • able_alerts":true,"sms_allowed":false,"email_allowed":true,"collect_promotion_consent_default":true,"insert_button_after_selector":null,"insert_button_after_selector_type":"afterend","storefront_button_position_type":"float-right","storefront_form_duplicate_error":"You've already subscribed for alerts to this product.","storefront_mixed_cart_error":"This item needs to be purchased separately. Please check out or clear your cart before adding this item.","storefront_error_heading":"Error","default_locale":"en","collection_page_button_text_color":"#FFFFFF","collection_page_button_background_color":"#202223","show_button_if_any_out_of_stock":false,"show_button_if_any_variant_out_of_stock_collection":false,"show_button_on_index":false,"insert_button_after_selector_collection":null,"insert_button_after_selector_index":null,"push_enabled":false,"push_allowed":false,"storefront_form_push_label":"Push","storefront_form_push_description":"Click 'Allow' to be notified via push notification","storefront_form_push_error" :"Permission rejected! Please review notification settings and try again","storefront_font_family":"OpenSans","insert_button_after_selector_collection_type":"afterend","show_channel_selector":false,"storefront_form_empty_error":"Please fill in one or more of the options above","storefront_form_push_input":"Send notification to your browser","insert_button_after_selector_page":null,"show_button_on_page":false,"insert_button_after_selector_search":null,"show_button_on_search":false,"app_proxy_path_prefix":"/apps/restockrocket-production","collection_link_selector":"","index_link_selector":"","page_link_selector":"","search_link_selector":"","collection_check_link_visibility":true,"collection_buttons_container":null,"index_buttons_container":null,"page_buttons_container":null,"search_buttons_container":null,"extension_enable_url_variant_detection":true,"extension_enable_value_variant_detection":true,"extension_value_variant_selector":"[name='id']","resubscribe_text":"This product is out of stock. Get notified wh
  • en it's restocked again by entering your details below!","preorder_enabled":true,"preorder_buy_button_selector":null,"preorder_add_to_cart_button_selector":"","preorder_badge_selector":"","preorder_button_out_of_stock_text":"Out of stock","preorder_button_add_to_cart_text":"Add to cart","preorder_form_selector":"form[action*=\"/cart/add\"]","preorder_collection_enabled":false,"preorder_collection_form_selector":"form[action*=\"/cart/add\"]","preorder_collection_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_index_enabled":false,"preorder_index_form_selector":"form[action*=\"/cart/add\"]","preorder_index_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_page_enabled":false,"preorder_page_form_selector":"form[action*=\"/cart/add\"]","preorder_page_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_search_enabled":false,"preorder_search_form_selector":"form[action*=\"/cart/add\"]","preorder_search_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_collection_badge_selector":null,"preorder_index_badge_selector":null,"preorder_page_badge_selector":null,"preorder_search_badge_selector":null,"preorder_badge_selector_type":"afterend","preorder_collection_badge_selector_type":"afterend","preorder_button_child_selector":"span","preorder_button_disclaimer_insert_selector":"","preorder_button_disclaimer_insert_selector_type":"afterend","preorder_payment_insert_selector":"","preorder_payment_insert_selector_type":"afterend","preorder_price_container_selector":"","preorder_price_container_selector_insert_type":"afterend","preorder_terms_insert_selector":"","preorder_terms_insert_selector_type":"afterend","preorder_original_price_selector":"","preorder_price_format":"{{amount}} {{currency}}","show_badge_if_any_variant_is_preorder":false,"enable_console_debug":false,"inline_form_enabled":false,"inline_form_selector":null,"inline_form_selector_type":"afterend","storefront_form_prefill_customer":true,"market_setup_type":"singleRear spacing_market","shopify_app_id":5940125,"cache":true,"cached_at":"2025-11-11T14:27:02.333Z","multi_language_enabled":false,"translation_locale":"en"};window._RestockRocketConfig.cachedPreorderVariantIds = {"preorder_variant_ids":[42167799447778,43916521013474,43934694998242,43934695031010,43934695620834,43935975440610,43935975473378,43935989399778,43935989432546,43935990284514,43935994118370,43935995625698,43935995855074,43936000835810,43936003195106,43936003227874,43936008012002,43936008044770,43936022757602,43936022790370,43936022823138,43936022855906,43936056115426,43936061030626,43936064930018,43936070631650,43936078037218,43936078069986,43936088195298,43936093470946,43936101138658,43936107266274,43936124076258,43936124109026,43936124141794,43936124174562,43936129941730,43936129974498,43936130007266,43936142393570,43936142426338,43936142459106,43936152060130,43936152092898,43936152125666,43936193118434,43936250429666,43936255803618,43936266682594,43936266715362,43936293978338,43936294011106,43936316424418,43936316457186,43936320880866,43936320913634,43936320946402,43936327041250,43936327074018,43936327106786,43936331661538,43936332349666,43936333103330,43936351224034,43936353714402,43936362889442,43936362922210,43936388153570,43936389333218,43936395526370,43936398508258,43936401522914,43936408568034,43936414400738,43936700727522,43936706101474,43936706134242,43936706167010,43936706199778,43936706232546,43936706265314,43938308587746,43938308653282,43938308718818,43938308751586,43938308784354,43938308817122,43938322612450,43938322645218,43938322677986,43981336051938,43981336084706,43981336117474,43981336150242,43981345587426,43981345620194,43981345652962,43981345685730,43981357580514,43981357613282,43981362462946,43981362495714,43981362528482,43981369016546,43981369049314,43981374914786,43981374947554,43981374980322,43981392904418,43981695844578,43981695877346,43981695910114,43981695942882,43981986070754,43981987905762,43981987938530,44052906967266,44052907327714,44052907360482,44052907393250,44052907426018,440529074135mm58786,44052907491554,44052909097186,44052909129954,44140302827746,44140302893282,44140317016290,44155590508770,44155590541538,44155594211554,44155594244322,44155594277090,44155594309858,44155594342626,44155594375394,44155594440930,44155594473698,44155594506466,44195991847138,44195991945442,44329993437410,44329993470178,44329993502946,44329993535714,44329993568482,44957136584930,44957136781538,44957136945378,45068753961186,45068753993954,45069622640866,45069622903010,45069622968546,45069750730978,45069750763746,45353010921698,45353010954466,45353010987234,45353018261730,45353018294498,45353018327266,55569712382335,55569712447871,55569712480639,55569933074815,55570550194559,55570550227327,55604008976767,55638316908927,55638316941695,55638316974463,56220814999935,56220815032703,56270279606655,56270279639423,56270279672191,56314171064703,56314171097471,56398983725439,56398983758207,56398983790975,56399322251647,56565020721535,56565020754303,56565020787071],"updated_at":"2025-12-25T20:29:54Z","market_locations_enabled":false,"market_id":382140642,"preorder_location_filter_enabled":false,"preorder_location_filter_ids":[],"collection_id":null};window._RestockRocketConfig.cachedInStockVariantIds = { in_stock_variant_ids: [] };window._RestockRocketConfig.cachedOutOfStockVariantIds = { out_of_stock_variant_ids: [] };window._RestockRocketConfig.cachedVariantPreorderLimits = {"variant_preorder_limits":{},"updated_at":"2025-12-25T20:51:03Z","shopify_market_id":382140642,"market_locations_enabled":false}; window._RestockRocketConfig.cachedVariantPreorderLimitsMarketKey = "variant_preorder_limits_for_market_382140642";window._RestockRocketConfig.cachedVariantShippingTexts = {"variant_shipping_texts":{},"updated_at":"2025-12-25T20:51:03Z","shopify_market_id":382140642,"market_locations_enabled":false}; window._RestockRocketConfig.cachedVariantShippingTextsMarketKey = "variant_shipping_texts_for_market_382140642";window._RestockRocketConfig.sellingPlans = [{"shopify_selling_plan_group_id":98590196095,"shopify_selling_plan _id":713071886719,"enabled":true,"variant_ids":[55569933140351,55569712382335,55569712415103,55569712480639,55569933173119,55570017616255,55569933074815,55570017550719,55569712447871,55569933107583,55570017583487],"product_variants_source":"custom","name":"Preorder","preorder_button_text":"Preorder","preorder_button_description":"Note: This is a preorder. Items will ship based on the estimated delivery date.","preorder_button_description_background_color":"#ebebeb","preorder_button_description_text_color":"#000000","preorder_button_description_border_radius":10,"preorder_button_description_show_quantity_limit":false,"preorder_button_description_quantity_limit_suffix":" units available for preorder","preorder_button_description_shipping_text_prefix":"Shipping: ","delivery_exact_time":null,"delivery_after_n_intervals":null,"delivery_at":"2025-07-26T09:20:18.169Z","delivery_type":"asap","quantity_limit_text":"{{ quantity }} units available for preorder","preorder_button_description_show_shipping":true,"preorder_
  • button_description_icons_enabled":true,"preorder_shipping_text":"Shipping: {{ date }}","shipping_applies_to_all_products":true,"shipping_text":"Estimated to ship within 2 months","payment_type":"full","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"discount_text":"Save {{ discount }}","billing_title":"Full payment","billing_description":null,"enable_billing_widget":false,"inventory_provider":"stoq","preorder_badge_enabled":false,"preorder_badge_text":"Preorder","preorder_badge_text_color":"#FFFFFF","preorder_badge_background_color":"#000000","preorder_discounted_price_enabled":null,"payment_line_item_property_enabled":false,"shipping_line_item_property_enabled":true,"custom_line_item_property_text":null,"preorder_button_text_color":"#ffffff","preorder_button_background_color":"#565557","preorder_button_colors_enabled":true,"markets_enabled":false,"market_ id":13779632354,"shopify_market_ids":[],"use_shopify_selling_plan":true,"use_simplified_shipping_text":false,"translations":{},"payment_options":[{"billing_type":"no_remaining_balance","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","billing_at":"2025-07-26T09:20:38.472Z","billing_after_n_intervals":7,"billing_after_interval_type":"day","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"billing_title":"Full payment","billing_description":null,"discount_text":"Save {{ discount }}","shopify_selling_plan_id":713071886719,"is_default":true,"type":"full","translations":{}}],"require_preorder_acknowledgement":false,"preorder_acknowledgement_text":"I acknowledge and agree to the preorder terms and conditions for this product.","preorder_min_quantity":null,"preorder_max_quantity":null,"countdown_timer_enabled":false,"countdown_timer_insert_selector":null,"countdown_timer_insert_selector_type":"afterend","countdow
  • n_timer_style":"text","countdown_timer_text_color":"#000000","countdown_timer_background_color":"#f5f5f5","countdown_timer_border_radius":8,"countdown_timer_format":"DHMS","countdown_timer_use_schedule_dates":true,"countdown_timer_custom_start_date":null,"countdown_timer_custom_end_date":null,"countdown_timer_starts_text":null,"countdown_timer_ends_text":null,"updated_at":"2025-08-19T10:05:43.042Z","allow_mixed_cart":true}];window._RestockRocketConfig.integrations = [{"id":"15c94526-b6b8-4de1-9bc1-23b1ca52ddb0","shop_id":38436,"enabled":true,"page_types":["product","collection","index","search","page","cart","list-collections","article","blog"],"configuration":{"toastDuration":10000,"toastPosition":"bottom-right","enableXHRHijack":true,"enableFetchHijack":true,"quantityLimitDisabled":false},"type":"hijack","css_config":null,"js_config":null,"created_at":"2025-07-26T09:16:04.076Z","updated_at":"2025-07-26T09:16:04.076Z"}];window._RestockRocketConfig.obfuscateInventoryQuantity = false;window._RestockRocketConfi g.product = {"id":8055181869282,"title":"Surly Preamble Frameset - horfrost White","handle":"preamble-frameset-horfrost-white","description":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003e\u003cspan data-mce-fragment=\"1\"\u003ePlease get in touch with a member of the team to discuss the availability of size, build kit, and colour if the option you require is out of stock - 0131 374 5324 \/ edinburgh@projektride.co.uk\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003eDesigned to introduce unfamiliar riders to Surly’s pavement and gravel line, Preamble highlights Surly’s most essential features: Durable custom steel tubing, a renowned ride feel, and just the right mounts for running racks, fenders, and bottle cages. Available in flat-bar and drop-bar configurations, it’s disc-brake specific and shares a single-position vertical dropout with Surly Bridge Club. For new weekend riders and veteran commuters, Preamble makes it easier than ever to get out of the car and on top of tough and comfortable Chromoly steel.\u003c\/p\u003e\n\u003cp\u003e100% Surly Chromoly steel frame and fork; double-butted main triangle\u003cbr\u003eFive frame sizes to fit nearly every size rider (XS, S, M, L, XL), with a slightly sloped top tube on XS and Small frames for improved standover and comfort\u003cbr\u003eFriendly with 1x and 2x drivetrains\u003cbr\u003eMounts for racks, mudguards, and two bottle cages (located on the seat tube and down tube)\u003cbr\u003eClearance for 650b x 41mm tyres on XS–S frame sizes (with or without mudguards); 700c x 41mm tyres on M–XL frame sizes (with or without mudguards)\u003c\/p\u003e","published_at":"2023-03-18T19:28:46+00:00","created_at":"2023-03-18T19:28:47+00:00","vendor":"Surly","type":"Bicycles","tags":["bike","BIKES","frames","Gravel","Road \/ Gravel \/ Touring Bikes","surly"],"price":65000,"price_min":65000,"price_max":65000,"available":true,"price_varies":false,"compare_at_price":null,"compare_at_price_min":0,"compare_at_price_max":0,"compare_at_price_varies"Colour:false,"variants":[{"id":43936684310754,"title":"XS","option1":"XS","option2":null,"option3":null,"sku":"FMSUPA230W","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Surly Preamble Frameset - horfrost White - XS","public_title":"XS","options":["XS"],"price":65000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":43936684343522,"title":"S","option1":"S","option2":null,"option3":null,"sku":"FMSUPA231W","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Surly Preamble Frameset - horfrost White - S","public_title":"S","options":["S"],"price":65000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":43936684376290,"title":"MD","option1":"MD","option2":null,"option3":null,"sku":"FMSUPA232W","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Surly Preamble Frameset - horfrost White - MD","public_title":"MD","options":["MD"],"price":65000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":43936684409058,"title":"LG","option1":"LG","option2":null,"option3":null,"sku":"FMSUPA233W","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Surly Preamble Frameset - horfrost White - LG","public_title":"LG","options":["LG"],"price":65000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":43936684441826,"title":"XL","option1":"XL","option2":null,"option3":null,"sku":"FMSUPA234W","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Surly Preamble Frameset - horfrost White - XL","public_title":"XL","options":["XL"],"price":65000,"weight":0,"compare_at_price":null,"inventory_managGlitter Dreams, Closet Black or Mint Greenement":"shopify","barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/products\/fmsu-23-preamble-whi.jpg?v=1679167729","\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-10-14at20.42.11_1296x_6cd10f9e-da7d-409b-b103-fec76fb87fa6.webp?v=1679167729"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/products\/fmsu-23-preamble-whi.jpg?v=1679167729","options":["Size"],"media":[{"alt":null,"id":31695312847074,"position":1,"preview_image":{"aspect_ratio":1.0,"height":1000,"width":1000,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/fmsu-23-preamble-whi.jpg?v=1679167729"},"aspect_ratio":1.0,"height":1000,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/products\/fmsu-23-preamble-whi.jpg?v=1679167729","width":1000},{"alt":null,"id":31695312879842,"position":2,"preview_image":{"aspect_ratio":1.932,"height":588,"width":1136,"src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-10-14at20.42.11_1296x_6cd10f9e-da7d-409b-b103-fec76fb87fa6.webp?v=1679167729"},"aspect_ratio":1.932,"height":588,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/products\/Screenshot2022-10-14at20.42.11_1296x_6cd10f9e-da7d-409b-b103-fec76fb87fa6.webp?v=1679167729","width":1136}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cmeta charset=\"utf-8\"\u003e\n\u003cp data-mce-fragment=\"1\"\u003e\u003cspan data-mce-fragment=\"1\"\u003ePlease get in touch with a member of the team to discuss the availability of size, build kit, and colour if the option you require is out of stock - 0131 374 5324 \/ edinburgh@projektride.co.uk\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003eDesigned to introduce unfamiliar riders to Surly’s pavement and gravel line, Preamble highlights Surly’s most essential features: Durable custom steel tubing, a renowned ride feel, and just the right mounts for running racks, fenders, and bottle cages. Available in flat-bar and drop-bar configurations, it’s disc-brake specific and shares a s ingle-position vertical dropout with Surly Bridge Club. For new weekend riders and veteran commuters, Preamble makes it easier than ever to get out of the car and on top of tough and comfortable Chromoly steel.\u003c\/p\u003e\n\u003cp\u003e100% Surly Chromoly steel frame and fork; double-butted main triangle\u003cbr\u003eFive frame sizes to fit nearly every size rider (XS, S, M, L, XL), with a slightly sloped top tube on XS and Small frames for improved standover and comfort\u003cbr\u003eFriendly with 1x and 2x drivetrains\u003cbr\u003eMounts for racks, mudguards, and two bottle cages (located on the seat tube and down tube)\u003cbr\u003eClearance for 650b x 41mm tyres on XS–S frame sizes (with or without mudguards); 700c x 41mm tyres on M–XL frame sizes (with or without mudguards)\u003c\/p\u003e"}; window._RestockRocketConfig.variantsInventoryPolicy = {43936684310754 : "deny",43936684343522 : "deny",43936684376290 : "deny",43936684409058 : "deny",43936684441826 : "deny",}; window._RestockRocketCo
  • nfig.variantsInventoryQuantity = {43936684310754 : parseInt("2"),43936684343522 : parseInt("1"),43936684376290 : parseInt("2"),43936684409058 : parseInt("5"),43936684441826 : parseInt("4"),}; window._RestockRocketConfig.variantsPreorderCount = {43936684310754 : parseInt(""),43936684343522 : parseInt(""),43936684376290 : parseInt(""),43936684409058 : parseInt(""),43936684441826 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderCountForMarket = {43936684310754 : null,43936684343522 : null,43936684376290 : null,43936684409058 : null,43936684441826 : null,}; window._RestockRocketConfig.variantsPreorderMaxCount = {43936684310754 : parseInt(""),43936684343522 : parseInt(""),43936684376290 : parseInt(""),43936684409058 : parseInt(""),43936684441826 : parseInt(""),}; window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {43936684310754 : null,43936684343522 : null,43936684376290 : null,43936684409058 : null,43936684441826 : null,}; window._RestockRocketConfig.variantsShipping Text = {43936684310754 : "",43936684343522 : "",43936684376290 : "",43936684409058 : "",43936684441826 : "",}; window._RestockRocketConfig.variantsShippingTextForMarket = {43936684310754 : null,43936684343522 : null,43936684376290 : null,43936684409058 : null,43936684441826 : null,}; window._RestockRocketConfig.selected_variant_id = 43936684310754; window._RestockRocketConfig.selected_variant_available = window._RestockRocketConfig.product.variants.find(function(variant) { return variant.id == window._RestockRocketConfig.selected_variant_id }).available;window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/019b4f42-f6ae-7ec0-8388-df5302720bc2/restock-rocket-shopify-418/assets/restockrocket-product.js' window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019b4f42-f6ae-7ec0-8388-df5302720bc2/restock-rocket-shopify-418/assets/restockrocket-collection.js' window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProd
uct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1) window._RestockRocketConfig.host = 'https://app.restockrocket.io' const SETTINGS_CACHE_DURATION = 15 * 60 * 1000; // 15 minutes in milliseconds function checkSettingsExpiry(settings) { try { if (!settings || !settings.updated_at) { console.debug('STOQ - Invalid settings data structure'); return null; } if (!settings.cache) { console.debug('STOQ - settings caching disabled'); return null; } // Check if translations are enabled but missing from cache // This handles the backfill period where DB has translations but metafield doesn't if (settings.multi_language_enabled) { if (!settings.translations) { // Translations enabled but no translation data in metafield // Metafield hasn't been backfilled yet - force refresh console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fre sh'); return null; } // Translations object exists in metafield - cache is valid // If current locale isn't translated, applyTranslations will gracefully use default locale from base fields if (window._RestockRocketConfig.normalizedLocale && !Object.prototype.hasOwnProperty.call(settings.translations, window._RestockRocketConfig.normalizedLocale)) { console.debug('STOQ - locale not explicitly translated, will use default language from cache'); } // Don't return null - continue using cache even for untranslated locales } const updatedAt = new Date(settings.updated_at); if (isNaN(updatedAt.getTime())) { console.debug('STOQ - Invalid updated_at date format in settings'); return null; } const age = Date.now() - updatedAt.getTime(); if (age

!settings.multi_language_enabled) { return settings; } if (!settings.translations) { console.debug('STOQ - No translations found, skipping translation'); return settings; } const normalizedLocale = window._RestockRocketConfig.normalizedLocale; const translations = settings.translations; if (!normalizedLocale) { // No matching locale has translations; drop payload to save memory console.debug('STOQ - No matching locale for translations. Available:', Object.keys(translations || {})); delete settings.translations; return settings; } console.debug(`STOQ - Applying translations for normalized locale: ${normalizedLocale} (original: ${window._RestockRocketConfig.locale})`); const translatedFields = translations[normalizedLocale]; if (translatedFields && typeof translatedFields === 'object') { Object.keys(translatedFields).forEach(function(key) { const value = translatedFields[key ]; if (value !== null && value !== undefined && value !== '') { settings[key] = value; } }); } else { console.debug('STOQ - No translated fields found for locale:', normalizedLocale); } delete settings.translations; return settings; } catch (e) { console.debug('STOQ - error applying translations:', e); return settings; } } // First try to get settings from metafields with expiry check const cachedSettings = window._RestockRocketConfig.cachedSettings; const validCachedSettings = cachedSettings ? checkSettingsExpiry(cachedSettings) : null; if (validCachedSettings) { console.debug('STOQ - using cached settings'); initializeScripts(validCachedSettings); } else { console.debug('STOQ - fetching fresh settings'); const headers = { 'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop, 'ngrok-skip-browser-warning': 'skip' }; if (window.Shopify?.them

e?.role === 'main') { headers['X-Shopify-Theme-Schema-Name'] = window.Shopify.theme.schema_name; headers['X-Shopify-Theme-Schema-VCheck out our Custom Builds!ersion'] = window.Shopify.theme.schema_version; headers['X-Shopify-Theme-Store-Id'] = window.Shopify.theme.theme_store_id; } fetch( `${window._RestockRocketConfig.host}/api/v1/setting.json?translation_locale=${window._RestockRocketConfig.normalizedLocale}`, { headers } ) .then(function(response) { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(function(settings) { initializeScripts(settings); }) .catch(function(error) { // If request failed and we have cached settings (even if expired), use them as fallback if (cachedSettings) { console.debug('STOQ - using expired cached settings as fallback'); initializeScripts(cachedSettings); } else { console.error('STOQ - failed to load settings:', error); } }) .catch(function(e) { console.error(e) }) } function initializeScripts(settings) { settings = applyTran

slations(settings); window._RestockRocketConfig.settings = settings; console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`); if(settings.enable_app) { const hijackIntegration = window._RestockRocketConfig.integrations.find(function(integration) { return integration.type === 'hijack' && integration.enabled && integration.page_types.includes(window._RestockRocketConfig.pageType); }) if(window._RestockRocketConfig.pageType === 'collection' && (settings.show_button_on_collection || settings.preorder_collection_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'index' && (settings.show_button_on_index || settings.preorder_index_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'search' && (settings.show_button_on_search || settings.preorder _search_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'page' && (settings.show_button_on_page || settings.preorder_page_enabled)) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else if(window._RestockRocketConfig.pageType === 'product') { createRestockRocketScript(window._RestockRocketConfig.scriptUrlProduct); } else if(hijackIntegration) { createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection); } else { console.debug(`STOQ - no scripts enabled for ${window._RestockRocketConfig.pageType}`); } // Check and update cart selling plans after scripts are loaded if (settings.preorder_enabled) { updateCartSellingPlans(); } // Dispatch custom event when app is loaded const appLoadedEvent = new CustomEvent('stoq:loaded', { detail: { pageType: window.

_RestockRocketConfig.pageType, enabled: settings.enable_app, settings: settings } }); console.debug('STOQ - dispatching app loaded event'); window.dispatchEvent(appLoadedEvent); } } function updateCartSellingPlans() { // Wait for the API to be available with retries const maxRetries = 10; const retryDelay = 500; function attemptCartCheck(attempt = 1) { if (window._RestockRocket && window._RestockRocket.updateCartSellingPlans) { window._RestockRocket.updateCartSellingPlans() .then(hasUpdates => { if (hasUpdates) { console.debug('STOQ - cart selling plans updated successfully'); } else { console.debug('STOQ - no cart selling plan updates needed'); } }) .catch(error => { console.error('STOQ - error updating cart selling plans:', error); }); } else if (attempt https://projektride.co.uk/collections/custom-builds<

maxRetries) { console.debug(`STOQ - API not ready, retry ${attempt}/${maxRetries}`); setTimeout(() => attemptCartCheck(attempt + 1), retryDelay); } else { console.debug('STOQ - API not loaded after max retries, skipping cart selling plan check'); } } attemptCartCheck(); }

FAQ

Questions and answers