Experience Complete Spine Relief
Advanced back and neck support combining decompression therapy, soothing heat, and healing red light therapy. Finally, a solution that addresses the root cause of your pain.

Explore Our Store
Why After Stride?
Back in 2017, After Stride started by finding the best outdoor essentials, but in 2019, we wanted to create our own quality gear, handcrafted right here in the US.
We ditched the middleman for top-notch materials and built-to-last performance & durability, minus the hefty price tag.
Just some HTML
The year is 2025
Join the After Stride Community.
Join our 15,000+ happy customers, and be the first to know about special discounts, hot deals, and free gifts!
Feel Better After Every Stride
Smart, wireless relief products that help you recover from daily strain.
StrideBack™ Flex Belt
StrideBack™ Flex Belt
$129.99
- ✓ Wireless heating with 3 temperature settings
- ✓ Ergonomic design fits all body types
- ✓ 8-hour battery life for all-day relief
Why Other Braces Fail
- ✗ Bulky, uncomfortable designs that restrict movement
- ✗ No temperature control or heating options
- ✗ One-size-fits-all approach doesn’t work
- ✗ Wires and cords get in the way
- ✗ Poor battery life means constant charging
How After Stride Solves It
- ✓ Ultra-thin, flexible design moves with your body
- ✓ Smart heating zones target pain precisely
- ✓ Adjustable sizing with custom fit guarantee
- ✓ Completely wireless with intuitive controls
- ✓ 8+ hour battery life with rapid charging
Built for Real Relief
We started After Stride because we were tired of products that let people down. Too many back pain solutions are either ineffective, uncomfortable, or impossibly complicated. We believe everyone deserves relief that actually works—products that fit seamlessly into your life while delivering the comfort you need to keep moving forward.
Customer Care
© 2024 After Stride. All rights reserved. • Smart Relief for Real Life.
<?php /** * Recursively strip out Closures/objects and ensure valid UTF-8 for json_encode. */ function clean_for_json( $data ) { if ( is_array( $data ) ) { foreach ( $data as $key => $value ) { // remove closures if ( $value instanceof Closure ) { unset( $data[ $key ] ); continue; } // convert objects to strings or null if ( is_object( $value ) ) { $data[ $key ] = method_exists( $value, '__toString' ) ? (string) $value : null; continue; } // recurse if ( is_array( $value ) ) { $data[ $key ] = clean_for_json( $value ); } } } return $data; } if ( current_user_can( 'administrator' ) ) { // 1) Grab the raw elements registry $elements = BricksElements::$elements ?? []; $full_structure = []; echo '<h3>Extracting ALL Bricks Elements...</h3>'; echo '<div style="background:#f0f8ff;padding:15px;margin-bottom:20px;border-radius:4px;">'; echo '<p>Found <strong>' . count( $elements ) . '</strong> elements registered.</p>'; echo '</div>'; // 2) Instantiate each, pull its settings, controls & groups foreach ( $elements as $key => $data ) { // determine class name $class = is_array( $data ) ? ( $data['class'] ?? $data[0] ?? '' ) : $data; if ( ! $class || ! class_exists( $class ) ) { continue; } try { $instance = new $class(); if ( method_exists( $instance, 'set_controls' ) ) { $instance->set_controls(); } if ( method_exists( $instance, 'set_control_groups' ) ) { $instance->set_control_groups(); } $controls = ( property_exists( $instance, 'controls' ) && is_array( $instance->controls ) ) ? $instance->controls : []; $control_groups = ( property_exists( $instance, 'control_groups' ) && is_array( $instance->control_groups ) ) ? $instance->control_groups : []; $full_structure[ $key ] = [ 'name' => property_exists( $instance, 'name' ) ? $instance->name : $key, 'class' => $class, 'category' => property_exists( $instance, 'category' ) ? $instance->category : 'general', 'icon' => property_exists( $instance, 'icon' ) ? $instance->icon : '', 'css_selector' => property_exists( $instance, 'css_selector' ) ? $instance->css_selector : '', 'nestable' => property_exists( $instance, 'nestable' ) ? (bool) $instance->nestable : false, 'controls' => $controls, 'control_groups' => $control_groups, ]; echo '<div style="background:#e8f5e8;padding:5px;margin-bottom:2px;border-radius:3px;font-size:13px;">'; echo "✅ {$key} — " . count( $controls ) . " controls"; echo '</div>'; } catch ( Throwable $e ) { echo '<div style="background:#ffe8e8;padding:5px;margin-bottom:2px;border-radius:3px;font-size:13px;">'; echo "❌ {$key} — Error: " . esc_html( $e->getMessage() ); echo '</div>'; } } // 3) Clean & JSON-encode $cleaned = clean_for_json( $full_structure ); $json = json_encode( $cleaned, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_INVALID_UTF8_IGNORE ); if ( false === $json ) { echo '<div style="color:red;font-weight:bold;margin-top:15px;">'; echo 'JSON encode error: ' . json_last_error_msg(); echo '</div>'; } else { echo '<h3 style="margin-top:20px;">Complete Structure JSON:</h3>'; echo '<textarea style="width:100%;height:400px;font-family:monospace;">' . esc_textarea( $json ) . '</textarea>'; // Download button echo '<a href="#" ' . 'onclick="(function(){' . 'var b=new Blob([this.dataset.json],{type:'application/json'});' . 'this.href=URL.createObjectURL(b);' . '}).call(this)" ' . 'data-json="' . esc_attr( $json ) . '" ' . 'download="bricks-elements.json" ' . 'style="display:inline-block;margin-top:10px;padding:10px 20px;background:#0073aa;color:#fff;border-radius:4px;text-decoration:none;">' . 'Download JSON' . '</a>'; } } ?>